                 (.push new-bucket k v)
                 (HashMap. meta new-keys strobj new-hashobj))))
           (let [new-keys (array-clone keys)
-                new-hashobj (goog.cloneObject hashobj)]
+                new-hashobj (goog.object.clone hashobj)]
             (.push new-keys k)
             (aset new-hashobj h (array k v))
             (HashMap. meta new-keys strobj new-hashobj))))))

      (if (not (.hasOwnProperty strobj k))
        coll ; key not found, return coll unchanged
        (let [new-keys (array-clone keys)
              new-strobj (goog.cloneObject strobj)
              new-count (dec (.length keys))]
          (.splice new-keys (scan-array 1 k new-keys) 1)
          (js-delete new-strobj k)

            bucket (aget hashobj h)]
        (if bucket
          (let [new-bucket (array-clone bucket)
                new-hashobj (goog.object.clone hashobj)]
            (aset new-hashobj h new-bucket)
            (if-let [i (scan-array 2 k new-bucket)]
              (do
