 
   B+TreeModifyable
 
-  (insert [this k v]
+  (insert [this k v leaf-neighbours]
     (letfn [(split [{:keys [b ks vs size] :as n}]
               (let [partition-size  (-> size (/ 2) Math/ceil int)
                     [ks1 ks2]       (partition-all partition-size ks)

            [sample.memoryfactstore :as mfs]
            [clojure.tools.logging :as log]))



#_(defrecord BinaryTreeNode [k* v* l r]

                (let [nvs (-> vs butlast (concat [v]))]
                  (->B+TreeInternalNode b size ks nvs))))]

      (let [[childk childv]  (lookup this k)
            [n1 nk n2 nlnbs] (insert childv k v leaf-neighbours)
            nn               (if (nil? n2)
                               (ins this childk n1)
                               (-> (ins this nk n1)
                                   (ins childk n2)))]
        (if (>= (-> nn :size) b)
          (split nn)
          [nn nil nil nlnbs]))))

  B+TreeLookupable

