     }
 
     @available(*, deprecated:7.0, renamed: "dequeueReusableCell(withReuseIdentifier:forIndexPath:configure:)")
-    public func dequeueReusableCell<T where T: UICollectionViewCell>(withReuseIdentifier identifier: String, for indexPath: IndexPath, to classType: T.Type, configure: (T) -> Void) -> UICollectionViewCell {
+    public func dequeueReusableCell<T: UICollectionViewCell>(withReuseIdentifier identifier: String, for indexPath: IndexPath, to classType: T.Type, configure: (T) -> Void) -> UICollectionViewCell {
         let reusableCell = dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath)
         guard let cell = reusableCell as? T else { return reusableCell }
         configure(cell)

    }
    
    @available(*, introduced:7.0)
    public func dequeueReusableCell<T where T: UITableViewCell>(withIdentifier identifier: String, for indexPath: IndexPath, configure: (T) -> Void) -> UITableViewCell {
        let reusableCell = dequeueReusableCell(withIdentifier: identifier, for: indexPath)
        guard let cell = reusableCell as? T else { return reusableCell }
        configure(cell)

    }
    
    @available(*, introduced:7.0)
    public func dequeueReusableSupplementaryView<T: UICollectionReusableView>(ofKind elementKind: ElementKind, withReuseIdentifier identifier: String, for indexPath: IndexPath, configure: (T) -> Void) -> UICollectionReusableView  {
        let reusableView = dequeueReusableSupplementaryView(ofKind: elementKind, withReuseIdentifier: identifier, for: indexPath)
        guard let view = reusableView as? T else { return reusableView }
        configure(view)
