 
 import Foundation
 import UIKit
+
 
 // MARK: CellParentViewProtocol
 





public protocol ReusableViewProtocol {
    associatedtype ParentView: UIView, CellParentViewProtocol

    var reuseIdentifier: String? { get }

    func prepareForReuse()
}


    func dequeueReusableCellFor(identifier identifier: String, indexPath: NSIndexPath) -> CellType
}

extension UICollectionView: CellParentViewProtocol {
    public typealias CellType = UICollectionViewCell

    public func dequeueReusableCellFor(identifier identifier: String, indexPath: NSIndexPath) -> CellType {
        return dequeueReusableCellWithReuseIdentifier(identifier, forIndexPath: indexPath)
    }
}

extension UITableView: CellParentViewProtocol {
    public typealias CellType = UITableViewCell

    public func dequeueReusableCellFor(identifier identifier: String, indexPath: NSIndexPath) -> CellType {
        return dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath)
    }
