                        (set! failed? true))))
                  changed?))
   (split [this current]
-         (debug :splitting los his (map #(.-lower %) constraints) (map #(.-upper %) constraints))
+         (debug :splitting-left los his current)
          (apush pushed-los (aclone los))
          (apush pushed-his (aclone his))
          (set! depth (+ depth 1))

                       (when (< i (alength right-los))
                         (aset right-los i greatest)
                         (recur (+ i 1)))))))
               ;; ...and then seek past it
               (let [new-los (or (.seek-gt iterator right-los) failed-los)]
                 (loop [i 0]

           (.write-bounds this splitter)
           (.split-left (aget constraints splitter) (aget constraint->los splitter) (aget constraint->his splitter))
           (if (true? (.read-bounds this splitter))
             (do (apush pushed-splitters splitter)
               (debug :split-left los his splitter))
             (let [new-splitter (mod (+ splitter 1) (alength constraints))]
               (if (identical? new-splitter current)
                 (assert false "Can't split anything!")
