                         left-vals (.-vals left-node)]
                     (if (> (alength left-keys) min-keys)
                       (do
+                        (prn "rotate-left")
                         (.unshift keys (.pop left-keys))
                         (.unshift vals (.pop left-vals))
                         (set! lower (aget keys 0))

     (js/console.log tree)
     (for [i (range 10)] (.seek (iterator tree) i))
     ))
  )

                 (.dissoc! (aget children ix) key min-keys)))
             result))
  (remove! [this ix min-keys]
           (prn "remove")
           (.splice keys ix 1)
           (.splice vals ix 1)
           (when-not (nil? children)
             (.splice children (+ ix 1) 1) ;; remove right child
             (loop [jx (+ ix 1)]
               (when (< jx (alength children))
                 (let [child (aget children jx)]
                   (set! (.-parent-ix child) (- (.-parent-ix child) 1)))
                 (recur (+ jx 1)))))
           (when (< (alength keys) min-keys)
             (cond
              (instance? Node parent) (.rotate-left! this min-keys)
              (== (alength keys) 0) (set! (.-root parent) (aget children 0)))))
  (rotate-left! [this min-keys]
                (if (> parent-ix 0)
                  (let [left-node (aget (.-children parent) (- parent-ix 1))
