                       (do
                         (set! node (aget (.-children node) ix))
                         (set! ix 0)
-                        (recur)))))))))))
+                        (recur true)))))))))))
 
 (defn iterator [tree]
   (loop [node (.-root tree)]

              (set! ix 0)
              #js [(aget (.-keys node) ix) (aget (.-vals node) ix)]))))
  (seek [this key]
        (loop []
          (when (false? end?)
            (let [upper (.-upper node)]
              (if (lt upper key)

                  (do
                    (set! ix (.-parent-ix node))
                    (set! node (.-parent node))
                    (recur true))
                  (do
                    (set! end? true)
                    nil))
                (loop [moved? moved?]
                  (set! ix (.seek node key ix))
                  (if (>= ix (alength (.-keys node)))
                    (do
                      (set! node (aget (.-children node) ix))
                      (set! ix 0)
                      (recur true))
                    (if (or (not moved?)
                            (== key (aget (.-keys node) ix))
                            (nil? (.-children node))
                            (let [lower (.-upper (aget (.-children node) ix))]
                              (lt lower key)))
