 
   (assoc! [tcoll k v]
     (if edit
-      (let [changed? (Box. false false)
-            node (.inode-assoc root edit 0 (hash k) k v changed?)]
+      (let [added-leaf? (Box. false)
+            node (.inode-assoc root edit 0 (hash k) k v added-leaf?)]
         (if (identical? node root)
           nil
           (set! root node))
-        (if ^boolean (.-added changed?)
+        (if ^boolean (.-val added-leaf?)
           (set! count (inc count)))
         tcoll)
       (throw (js/Error. "assoc! after persistent!"))))

  (-dissoc [coll k]
    (if (nil? root)
      coll
      (let [new-root (.inode-without root nil 0 (hash k) k (Box. false false))]
        (if (identical? new-root root)
          coll
          (PersistentHashMap. meta (dec cnt) new-root nil)))))

    (if edit
      (if (nil? root)
        tcoll
        (let [removed-leaf? (Box. false)
              node (.inode-without root edit 0 (hash k) k removed-leaf?)]
          (if (identical? node root)
            nil
            (set! root node))
          (if ^boolean (.-val removed-leaf?)
            (set! count (dec count)))
          tcoll))
      (throw (js/Error. "dissoc! after persistent!"))))
