     }
     
     func updateListViewModels(listViewModel: [DiffListGroupViewModel], updateType: DiffListViewController.ListUpdateType) {
-        
-        //todo: check cache here?
         
         switch updateType {
         case .itemExpandUpdate(let indexPath):

            cell.delegate = self
            return cell
        } else if let viewModel = viewModel as? DiffListUneditedViewModel,
                   let cell = collectionView.dequeueReusableCell(withReuseIdentifier: DiffListUneditedCell.reuseIdentifier, for: indexPath) as? DiffListUneditedCell {
                   cell.update(viewModel)
                   return cell
        }
        
        return UICollectionViewCell()

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        
//        if updateWidthsOnLayoutSubviews {
//            backgroundUpdateListViewModels(listViewModel: dataSource, updateType: .widthChangedUpdate(width: collectionView.frame.width)) {
//                self.applyListViewModelChanges(updateType: .widthChangedUpdate(width: self.collectionView.frame.width))
//                self.updateWidthsOnLayoutSubviews = false
//            }
//        }
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        
        cachedSizes.removeAll()
    }
    
    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        super.viewWillTransition(to: size, with: coordinator)
        
        backgroundUpdateListViewModels(listViewModel: dataSource, updateType: .widthChangedUpdate(width: size.width)) {
            self.applyListViewModelChanges(updateType: .widthChangedUpdate(width: size.width))
        }
        
//        updateWidthsOnLayoutSubviews = true
//        //updateListViewModels(listViewModel: dataSource, updateType: .widthChangedUpdate(width: size.width))
//        coordinator.animate(alongsideTransition: { (context) in
//            //self.applyListViewModelChanges(updateType: .widthChangedUpdate(width: size.width))
//        }) { (context) in
//            self.updateWidthsOnLayoutSubviews = false
//        }
    }
    
    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
