                  (.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)

           (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))

                         right-vals (.-vals right-node)]
                     (if (> (alength right-keys) min-keys)
                       (do
                         (.push keys (.shift right-keys))
                         (.push vals (.shift right-vals))
                         (set! upper (aget keys (- (alength keys) 1)))
