   (-meta [coll] meta)
 
   IWithMeta
-  (-with-meta [coll meta] (NodeSeq. meta nodes dlen nloc i s __hash))
+  (-with-meta [coll meta] (NodeSeq. meta arr lvl nodes cursors-lengths data-idx data-len __hash))
 
   ICollection
   (-conj [coll o] (cons o coll))

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

                (BitmapIndexedNode. medit new-datamap 0 (array key2 val2 key1 val1)))))))))

  (inode-seq [inode]
    (let [nodes (make-array 7)
          cursors-lengths (make-array 14)]
      (aset nodes 0 inode)
      (aset cursors-lengths 0 0)
      (aset cursors-lengths 1 (.node-arity inode))
      (if (zero? datamap)
        (create-inode-seq arr 0 nodes cursors-lengths 0 (.data-arity inode))
        (NodeSeq. nil arr 0 nodes cursors-lengths 0 (.data-arity inode) nil))))

  (inode-assoc [inode aedit shift hash key val changed?]
    (let [bit (bitpos hash shift)]
