             to: #selector(NSOutlineViewDelegate.outlineView(_:heightOfRowByItem:)),
             map: { (dataSource: Element.UnderlyingCollection?, outlineView: NSOutlineView, item: Element.UnderlyingCollection?) -> CGFloat in
                 guard let dataSource = dataSource else { return outlineView.rowHeight }
-                return binder.height(for: item?.value, outlineView: outlineView, dataSource: dataSource) ?? outlineView.rowHeight
+                return binder.height(for: item, outlineView: outlineView, dataSource: dataSource) ?? outlineView.rowHeight
             }
         )
 


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

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

