   private func dispatchUpdate(indices: [Int]) {
     for bondBox in bonds {
       if let arrayBond = bondBox.bond as? ArrayBond {
-        arrayBond.updateListener?(indices)
+        arrayBond.updateListener?(self, indices)
       }
     }
   }

    self.bond.bind(sourceArray, fire: false)
    super.init([])
    
    bond.insertListener = { [unowned self] i in
      self.dispatchInsertion(i)
    }
    bond.removeListener = { [unowned self] i, o in
      self.dispatchRemoval(i, objects: o.map(mapf))
    }
    bond.updateListener = { [unowned self] i in
      self.dispatchUpdate(i)
    }
  }

  private override func dispatchRemoval(indices: [Int], objects: [T]) {
    for bondBox in bonds {
      if let arrayBond = bondBox.bond as? ArrayBond {
        arrayBond.removeListener?(self, indices, objects)
      }
    }
  }
