When UICollectionView.reloadData() is called, the intention was for the completion block to fire once this has finished.
Perhaps this empty performBatchUpdates should be replaced with an async call to to the main DispatchQueue
The cellPadding property appears to set constraint padding for the cell containerView against its contentView as well as rounding the corners of appropriate cells.
This may be an unintended result.
Upon deleting the last cell model in a DataSourceProvider section, it will delete the array that represents the section as well.
This is normal behavior except for when it was the last section in the entire DataSourceProvider.
Doing this will return a completely empty provider, which can cause crashes when checking the numberOfItems(in section: Int) function.
Refactor the func deleteCellItems(atIndexPaths indexPaths: [IndexPath]) to avoid doing this