          (aclear pushed-constraint->dirty?)
          (aclear pushed-splitters)
          (dotimes [constraint (alength constraints)]
-           (.reset (aget constraints constraint) constraint)))
+           (.reset (aget constraints constraint) this constraint)))
   (set-lo [this var new-lo]
           (when-not (identical? (aget los var) new-lo)
             (if (val-lt (aget his var) new-lo)


(deftype Contains [iterator vars scratch-key]
  Object
  (reset [this solver]
         (.reset iterator))
  (propagate [this solver constraint]
             (let [los (.-los solver)

                         (.set-lo solver var (aget new-los i))
                         (if (identical? (aget new-los i) (aget his var))
                           (recur (+ i 1))
                           (.set-watch solver var constraint true)))))))))
  (split-left [this solver constraint]
              ;; fix the value of the first non-fixed var
             (let [los (.-los solver)
