   (-get-binding-fns [this]
     (if lazy invalidates-binding-info fwatch-binding-info))
 
-  IDisposable
-  (-dispose! [this] (.dispose this))
-  (-disposed? [this] false)
-
   IEquiv
   (-equiv [o other] (identical? o other))
 

      (if-let [child-cursor (first (get child-cursors ckey))]
        (first child-cursors)
        (let [id (new-reactive-id)
              cur (Cursor.
                            id this ckey nil
                            (fn [f & args] (.updateChild this ckey f args))
                            (get state ckey)
                            nil
                            nil
                            #js {}
                            0
                            nil)]
          (set! child-cursors (update child-cursors ckey conj cur))
          (set! (.-dispose-fn cur)
                (fn []
                  (set! child-cursors
                        (update child-cursors ckey

      (doseq [child (get child-cursors child-key)]
        (.updateCursor child new-val)))
    (updateCursor [this new-state]
      (when-not (identical? state new-state)
        (let [old-state state]
          (set! state new-state)
          (if-let [change-ks (.-change-ks this)]
            (let [change-ks (if (keyword? change-ks)
                              [(case change-ks
