 
   (-rest [coll]
     (if (nil? s)
-      (let [len (alength nodes)]
-        (cond
-          (< i dlen)
-          (NodeSeq. meta nodes dlen nlen (+ i 2) nil nil)
-          (and (== i dlen) (not (zero? nlen)))
-          (NodeSeq. meta nodes dlen nlen len (aget nodes len) nil)
-          :else
-          (NodeSeq. meta nodes dlen nlen (dec i) (aget nodes (dec i)) nil)))
-      (NodeSeq. meta nodes dlen nlen i (next s) nil)))
+      (create-inode-seq nodes (+ i 2) dlen nloc nil)
+      (create-inode-seq nodes i dlen nloc (next s))))
 
   ISeqable
   (-seq [this] this)

  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))))
