   ([v start end]
      (Subvec. nil v start end)))
 
-(set! cljs.core.Subvec.prototype.call
-      (fn
-        ([_ k] (-lookup (js* "this") k))
-        ([_ k not-found] (-lookup (js* "this") k not-found))))
+(extend-type cljs.core.Subvec
+  IFn
+  (-invoke
+    ([_ k] (-lookup (js* "this") k))
+    ([_ k not-found] (-lookup (js* "this") k not-found))))
 
 ;;; PersistentQueue ;;;
 

  (-get-method [mf dispatch-val])
  (-methods [mf])
  (-prefers [mf])
  (-invoke [mf args]))

(defn- do-invoke
  [mf dispatch-fn args]
  (let [dispatch-val (apply dispatch-fn args)
        target-fn (-get-method mf dispatch-val)]


(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
