             objc_setAssociatedObject(self, &Keys.prototypeCellStorage, newValue, .OBJC_ASSOCIATION_RETAIN)
         }
     }
-    
+
     /// Dequeues `UICollectionViewCell` generically according to expression result type
     ///
     /// Cell doesn't need to be registered as this method registers it before use.

        register(T.classForCoder(), forCellReuseIdentifier: T.reuseIdentifier)
        return dequeueReusableCell(withIdentifier: T.reuseIdentifier, for: indexPath) as! T
    }
    
    /// Get prototype cell of given type
    public func prototypeCell<T>(type: T.Type = T.self) -> T where T: UITableViewCell {
        if let prototype = prototypeCells[T.reuseIdentifier] as? T {
            return prototype
        }
        
        let prototype = T()
        prototypeCells[T.reuseIdentifier] = prototype
        return prototype

            objc_setAssociatedObject(self, &Keys.prototypeCellStorage, newValue, .OBJC_ASSOCIATION_RETAIN)
        }
    }

    /// Dequeues `UITableViewCell` generically according to expression result type
    ///
    /// Cell doesn't need to be registered as this method registers it before use.
