                               (.-right app)
                               (.-right right)))
           (RedNode. (.-key left) (.-val left)
+                    (.-left left)
                     (RedNode. (.-key right) (.-val right) app (.-right right)))))
       (RedNode. (.-key left) (.-val left)
                 (.-left left)

  (-seq [this] this)

  IEquiv
  (-equiv [coll other] (equiv-sequential coll other)))

(defn- create-array-node-seq
  ([nodes] (create-array-node-seq nil nodes 0 nil))

       (NodeSeq. nil nodes i s))))

(deftype ArrayNodeSeq [meta nodes i s]
  Object
  (toString [this]
    (pr-str this))

  IMeta
  (-meta [coll] meta)

  IWithMeta
  (-with-meta [coll meta] (ArrayNodeSeq. meta nodes i s))

  ICollection
  (-conj [coll o] (cons o coll))

  IEmptyableCollection
  (-empty [coll] (with-meta cljs.core.List/EMPTY meta))

  ISequential
  ISeq
