           (let [oldstate state]
             (set! state (f))
             (when-not (identical? oldstate state)
-              (call-watches this watches oldstate state))))
+              (-notify-watches this oldstate state))))
         state)
       (do
         (notify-deref-watcher! this)

        (set! active? true))
      (set! dirty? false)
      (set! state res)
      (call-watches this watches oldstate state)
      res))

  IDeref

      (RCursor. path src nil))
    (do
      (assert (or (satisfies? IDeref src)
                  (and (ifn? src)
                       (not (vector? src))))
              (str "src must be an atom or a function, not " src))
      (RCursor. src path nil))))

(defprotocol IDisposable
