     (let [new-data-children (cond
                               (= index (count children))
                               (conj children key)
-                              (= (nth children index) key) ;;TODO this case could bypass
+                              (= (nth children index) key) ;;TODO this case could be a bypass to avoid making a new datanode
                               children
                               :else
                               (vec (concat (take index children)

            (recur (inc i))
            i))))))

(defn forward-iterator
  "Takes the result of a search and returns an iterator going
   forward over the tree. Does lg(n) backtracking sometimes."

                              :children ; Get the indices of it
                              (drop start-index)) ; skip to the start-index
          next-elements (lazy-seq
                          (when-let [succ (right-successor (pop path))]
                            (forward-iterator succ 0)))]
      (concat first-elements next-elements))))

(defn lookup-path
