        (equiv-map coll other))))
 
   IHash
-  (-hash [coll] (caching-hash coll hash-unordered-coll __hash))
+  (-hash [coll]
+    (caching-hash coll persistent-map-hash __hash))
 
   ILookup
   (-lookup [coll k]

                         (and (> idx -1) (= (aget arr (inc i)) (aget other-arr (inc idx))))))
                eq))))))))

(deftype PersistentHashMap [meta cnt root ^:mutable __hash]
  Object
  (toString [coll]

  (single-kv? [_]
    false)

  (hash-node [_ hash-code]
    (let [len (alength arr)]
      (loop [n 0 hash-code hash-code]
        (if (< n len)
          (recur (+ n 2) (bit-or (+ hash-code (hash [(aget arr n) (aget arr (inc n))])) 0))
          hash-code))))

  IEquiv
  (-equiv [inode other]
    (if (identical? inode other)
