     }
 }
 
-public extension SignalProtocol where Element: ObservableCollectionEventProtocol, Element.UnderlyingCollection: TreeNodeProtocol, Element.UnderlyingCollection.Index == IndexPath, Error == NoError {
+public extension SignalProtocol where
+    Element: ObservableCollectionEventProtocol,
+    Element.UnderlyingCollection: AnyObject,
+    Element.UnderlyingCollection: TreeNodeProtocol,
+    Element.UnderlyingCollection.Index == IndexPath,
+    Element.UnderlyingCollection.Element.Index == IndexPath,
+    Error == NoError
+{
 
     @discardableResult
-    public func bind(to outlineView: NSOutlineView, animated: Bool = true, createCell: @escaping (_ root: Element.UnderlyingCollection, _ node: Element.UnderlyingCollection?, _ column: NSTableColumn?, _ outlineView: NSOutlineView) -> NSView?) -> Disposable {
+    public func bind(to outlineView: NSOutlineView, animated: Bool = true, createCell: @escaping (_ root: Element.UnderlyingCollection, _ node: Element.UnderlyingCollection.Element?, _ column: NSTableColumn?, _ outlineView: NSOutlineView) -> NSView?) -> Disposable {
         let binder = OutlineViewBinder(measureCell: nil, createCell: createCell)
         if !animated {
             binder.deleteAnimation = nil

        disposable += outlineView.reactive.dataSource.feed(
            property: dataSource,
            to: #selector(NSOutlineViewDataSource.outlineView(_:objectValueFor:byItem:)),
            map: { (_: Element.UnderlyingCollection?, _: NSOutlineView, _: NSTableColumn, item: Element.UnderlyingCollection?) -> Any? in
                return item?.value
            }
        )

        disposable += outlineView.reactive.dataSource.feed(
            property: dataSource,
            to: #selector(NSOutlineViewDataSource.outlineView(_:child:ofItem:)),
            map: { (dataSource: Element.UnderlyingCollection?, _: NSOutlineView, child: Int, item: Element.UnderlyingCollection.Element?) -> Any in
                guard let item = item else {
                    return dataSource![IndexPath(index: child)]
                }
