         "        xibs.forEach { register(xib: $0) }",
         "    }",
         "    ",
-        "    \(accessControl) func dequeueReusableCell<X: Xib>(with xib: X, for indexPath: IndexPath) -> X.View where X.View: UICollectionViewCell {",
+        "    \(accessControl) func dequeueReusableCell<X: Reusable>(with xib: X, for indexPath: IndexPath) -> X.View where X.View: UICollectionViewCell {",
         "        return dequeueReusableCell(withIdentifier: xib.name, for: indexPath) as! X.View",
         "    }",
         "}",

    
    let importsContent = imports().joined(separator: newLine)
    
    let xibProtocolContent: String = [
        "\(accessControl) protocol Xib {",
        "   associatedtype View",
        "   var name: String { get }",
        "   func nib() -> UINib",
        "   func view() -> View",
        "}",

        "        xibs.forEach { register(xib: $0) }",
        "    }",
        "    ",
        "    \(accessControl) func dequeueReusableCell<X: Reusable>(with xib: X, for indexPath: IndexPath) -> X.View where X.View: UITableViewCell {",
        "        return dequeueReusableCell(withIdentifier: xib.name, for: indexPath) as! X.View",
        "    }",
        "}",
