                                                 seen-rest?))))
                              ret))))
                      pmap
-                     (fn [bvec b v]
+                     (core/fn [bvec b v]
                        (core/let [gmap (gensym "map__")
                                   defaults (:or b)]
                          (core/loop [ret (-> bvec (conj gmap) (conj v)
                                              (conj gmap) (conj `(if (seq? ~gmap) (apply core/hash-map ~gmap) ~gmap))
-                                             ((fn [ret]
+                                             ((core/fn [ret]
                                                 (if (:as b)
                                                   (conj ret (:as b) gmap)
                                                   ret))))
                                      bes (reduce
-                                          (fn [bes entry]
+                                          (core/fn [bes entry]
                                             (reduce #(assoc %1 %2 ((val entry) %2))
                                                     (dissoc bes (key entry))
                                                     ((key entry) bes)))

      (core/let [meth meths]
        [`(set! ~(extend-prefix type-sym (core/str pf "$arity$" (count (first meth))))
            ~(with-meta `(fn ~@(adapt-proto-params type meth)) (meta form)))])
      (map (fn [[sig & body :as meth]]
             `(set! ~(extend-prefix type-sym (core/str pf "$arity$" (count sig)))
                ~(with-meta `(fn ~(adapt-proto-params type meth)) (meta form))))
        meths))))

                      :else (throw
                              #?(:clj (new Exception (core/str "Unsupported binding form: " b))
                                 :cljs (new js/Error (core/str "Unsupported binding form: " b)))))))
         process-entry (core/fn [bvec b] (pb bvec (first b) (second b)))]
        (if (every? core/symbol? (map first bents))
          bindings
          (if-let [kwbs (seq (filter #(core/keyword? (first %)) bents))]
