 
   B+TreeLookupable
 
-  (lookup [this k]
+  (lookup [this k leaf-neighbours]
     (loop [[k* & ks*] ks
            [v* & vs*] vs]
       (cond

  (insert [this k v]))

(defprotocol B+TreeLookupable
  (lookup [this k]))

(defprotocol B+TreeLeafNodeIterable
  (iterate-leafnodes [this]))


  B+TreeLookupable

  (lookup [this k leaf-neighbours]
    (letfn [(range-lookup [{:keys [m] :as this} klen]
              (println "RANGE LOOKUP" k klen (keys m))
              (when (<= (cmp-keys (-> m keys first) k) 0)
