         return lhs.box.isEqual(to: rhs.box)
     }
     
-    public func diffChanges(from other: ChildComponent) -> ChildComponent {
+    public func diffChanges(from other: ChildComponent<View>) -> ChildComponent<View> {
         return ChildComponent(box.diffChanges(from: other.box), other.access)
     }
 }

        return box.isEmpty
    }
    
    public var children: [ChildComponent] {
        return box.children
    }
    
    public func configure(item: Any) {
        box.configure(item: access(item))
    }
    

    }
}

public struct ChildComponent<View>: ComponentType, _ChildComponent {
    private let box: _AnyComponentBox
    let access: (View) -> Any
    
    public init<V: ComponentType>(component: V, _ access: @escaping (View) -> V.View) {
        self.init(_ConcreteComponentBox(base: component), access)
    }
    
    private init(_ box: _AnyComponentBox, _ access: @escaping (View) -> Any) {
        self.box = box
        self.access = access
    }
