                             cond-> cond->> as-> some-> some->>
 
                             if-some when-some test ns-interns ns-unmap var vswap! macroexpand-1 macroexpand
-                            #?(:cljs alias)])
+                            #?@(:cljs [alias assert-args coercive-not coercive-not= coercive-= coercive-boolean
+                                       truth_ js-arguments js-delete js-in js-debugger exists? divide js-mod
+                                       unsafe-bit-and bit-shift-right-zero-fill mask bitpos caching-hash
+                                       defcurried rfn specify! js-this this-as implements? array js-obj
+                                       simple-benchmark gen-apply-to js-str es6-iterable load-file*])])
   #?(:cljs (:require-macros [cljs.core :as core]))
   (:require clojure.walk
             clojure.set

(core/defn- validate-impl-sigs [env p method]
  (core/when-not (= p 'Object)
    (core/let [var (ana/resolve-var (dissoc env :locals) p)
               minfo (-> var :protocol-info :methods)
               [fname sigs] (if (core/vector? (second method))
                              [(first method) [(second method)]]
                              [(first method) (map first (rest method))])

        assoc :tag 'cljs.core/PersistentHashSet))))

(core/defn- js-obj* [kvs]
  (core/let [kvs-str (core/->> (repeat "~{}:~{}")
                       (take (count kvs))
                       (interpose ",")
                       (apply core/str))]
