   IReduce
   (-reduce [coll f] (seq-reduce f coll))
   (-reduce [coll f start] (seq-reduce f start coll)))
+
+(defn- create-inode-seq [nodes i dlen nloc s]
+  (if (nil? s)
+    (cond
+      (< i dlen)
+      (NodeSeq. nil nodes dlen nloc i nil nil)
+      (> nloc dlen)
+      (NodeSeq. nil nodes dlen (dec nloc) i (.inode-seq (aget nodes nloc)) nil))
+    (NodeSeq. nil nodes dlen nloc i s nil)))
 
 (extend-protocol IPrintWithWriter
   NodeSeq

  ITransientAssociative
  (-assoc! [tcoll key val] (.assoc! tcoll key val)))

(deftype NodeSeq [meta nodes dlen nlen i s ^:mutable __hash]
  Object
  (toString [coll]
    (pr-str* coll))

                (recur (assoc m (str "key" i) i) (inc i))
                m))
        root (.-root hm1)]
    (println hm1)
    ;[ (count hm1)  (seq hm1)]
    #_[(count hm1)
       (= (into #{} (vals hm1)) (into #{} (range times)))
       (= (into #{} (vals hm1)) (into #{} (map #(get hm1 (str "key" %)) (range times))))
