        (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

               (.inode-assoc! edit shift key2hash key2 val2 added-leaf?)))))))

(deftype NodeSeq [meta nodes i s]
  IMeta
  (-meta [coll] meta)

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

  ISequential
  ISeq

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