              meta-sym (gensym "meta")
              this-sym (gensym "_")
              locals   (keys (:locals &env))
-             ns       (-> &env :ns :name)
+             ns       (core/-> &env :ns :name)
              munge    cljs.compiler/munge]
     `(do
        (when-not (exists? ~(symbol (core/str ns) (core/str t)))

         ret)))))

(core/defn- collect-protocols [impls env]
  (->> impls
      (filter core/symbol?)
      (map #(:name (cljs.analyzer/resolve-var (dissoc env :locals) %)))
      (into #{})))

                     (core/fn [bvec b v]
                       (core/let [gmap (gensym "map__")
                                  defaults (:or b)]
                         (core/loop [ret (core/-> bvec (conj gmap) (conj v)
                                             (conj gmap) (conj `(if (seq? ~gmap) (apply core/hash-map ~gmap) ~gmap))
                                             ((core/fn [ret]
                                                (if (:as b)
