       (if (< i len)
         (recur (inc i) (assoc out (aget ks i) (aget vs i)))
         out)))))
-
-(extend-type cljs.core.HashMap
-  IFn
-  (-invoke
-    ([_ k] (-lookup (js* "this") k))
-    ([_ k not-found] (-lookup (js* "this") k not-found))))
 
 (defn hash-map
   "keyval => key val

        (.splice new-keys (scan-array 1 k new-keys) 1)
        (js-delete new-strobj k)
        (ObjMap. meta new-keys new-strobj))
      coll))) ; key not found, return coll unchanged

(set! cljs.core.ObjMap/EMPTY (ObjMap. nil (array) (js-obj)))

(set! cljs.core.ObjMap/fromObject (fn [ks obj] (ObjMap. nil ks obj)))

(extend-type cljs.core.ObjMap
  IFn
  (-invoke
    ([_ k] (-lookup (js* "this") k))
    ([_ k not-found] (-lookup (js* "this") k not-found))))

; The keys field is an array of all keys of this map, in no particular
; order. Each key is hashed and the result used as a property name of

     (subvec v start (count v)))
  ([v start end]
     (Subvec. nil v start end)))

;;; PersistentQueue ;;;

