 
 (defprotocol IComputedImpl
   (-peek-at [this])
-  (-check-clean [this])
+  (^boolean -check-clean [this])
   (-handle-change [this sender oldval newval])
   (-update-watching [this derefed]))
 

                      dirty)]
      (when (> new-dirty old-dirty)
        (set! dirtyness new-dirty)
        (if (some? auto-run)
          (when-not norun?
            (if-not (identical? auto-run run)
              (auto-run this)
              (when-not (-check-clean this)
                (auto-run this))))
          (-notify-watches this state state)))))

  (-update-watching [this derefed]
    (doseq [w derefed]

      (set! norun? true)
      (doseq [w watching]
        (when (and (instance? Reaction w)
                   (not (-check-clean w)))
          (if-some [ar (.-auto-run w)]
            (ar w)
            (run w))))
      (set! norun? false)
      (when (== dirtyness maybe-dirty)
        (set! dirtyness clean)))
