             switch operation {
             case .insert(let at):
                 let parent = rootNode[at.dropLast()]
-                outlineView.insertItems(at: IndexSet(integer: at.item), inParent: parent, withAnimation: insertAnimation ?? [])
+                outlineView.insertItems(at: IndexSet(integer: at.last!), inParent: parent, withAnimation: insertAnimation ?? [])
             case .delete(let at):
                 let parent = rootNode[at.dropLast()]
-                outlineView.removeItems(at: IndexSet(integer: at.item), inParent: parent, withAnimation: deleteAnimation ?? [])
+                outlineView.removeItems(at: IndexSet(integer: at.last!), inParent: parent, withAnimation: deleteAnimation ?? [])
             case .update(let at):
                 let parent = rootNode[at.dropLast()]
-                let item = outlineView.child(at.item, ofItem: parent)
+                let item = outlineView.child(at.last!, ofItem: parent)
                 outlineView.reloadItem(item)
             case .move(let from, let to):
                 let fromParent = rootNode[from.dropLast()]
                 let toParent = rootNode[to.dropLast()]
-                outlineView.moveItem(at: from.item, inParent: fromParent, to: to.item, inParent: toParent)
+                outlineView.moveItem(at: from.last!, inParent: fromParent, to: to.last!, inParent: toParent)
             }
         }
 

            property: dataSource,
            to: #selector(NSOutlineViewDataSource.outlineView(_:isItemExpandable:)),
            map: { (dataSource: Element.UnderlyingCollection?, outlineView: NSOutlineView, item: Element.UnderlyingCollection?) -> Bool in
                guard let dataSource = dataSource else { return false }
                return binder.isExpandable(for: item?.value, outlineView: outlineView, dataSource: dataSource)
            }
        )


            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, outlineView: outlineView, dataSource: dataSource) ?? outlineView.rowHeight
            }
        )

