     Element: ObservableCollectionEventProtocol, Element.UnderlyingCollection.Index == Int, Error == NoError {
 
     @discardableResult
-    public func bind(to tableView: NSTableView, animated: Bool = true, createCell: @escaping (UnderlyingCollection, Int, NSTableColumn?, NSTableView) -> NSView?) -> Disposable {
+    public func bind(to tableView: NSTableView, animated: Bool = true, createCell: @escaping (Element.UnderlyingCollection, Int, NSTableColumn?, NSTableView) -> NSView?) -> Disposable {
         let binder = TableViewBinder(measureCell: nil, createCell: createCell)
         if !animated {
             binder.deleteAnimation = nil

        disposable += tableView.reactive.dataSource.feed(
            property: dataSource,
            to: #selector(NSTableViewDataSource.tableView(_:objectValueFor:row:)),
            map: { (dataSource: UnderlyingCollection?, _: NSTableView, _: NSTableColumn, row: Int) -> Any? in
                return dataSource?[row]
            }
        )

        disposable += tableView.reactive.dataSource.feed(
            property: dataSource,
            to: #selector(NSTableViewDataSource.numberOfRows(in:)),
            map: { (dataSource: Element.UnderlyingCollection?, _: NSTableView) -> Int in
                return dataSource?.count ?? 0
            }
        )
