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


  B+TreeLookupable

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

  t/TreeLookupable

  (lookup [this k]
    (loop [[_ v] (lookup root k leaf-neighbours)]
      (if (satisfies? B+TreeLookupable v)
        (recur (lookup v k leaf-neighbours))
        v)))

  B+TreeLeafNodeIterable
