                     :skip-protocol-flag fpps)]
       `(do
          (~'defrecord* ~tagname ~hinted-fields ~pmasks)
-         (extend-type ~tagname ~@(dt->et impls fields))))))
+         (extend-type ~tagname ~@(dt->et impls fields true))))))
 
 (defn- build-positional-factory
   [rsym rname fields]

         (deftype* ~t ~fields ~pmasks)
         (set! (.-cljs$lang$type ~t) true)
         (set! (.-cljs$lang$ctorPrSeq ~t) (fn [this#] (list ~(core/str r))))
         (extend-type ~t ~@(dt->et impls fields))
         ~t)
      `(do
         (deftype* ~t ~fields ~pmasks)

                 fpp-partitions
                 (range fast-path-protocol-partitions-count))]))))

(defn dt->et
  ([specs fields] (dt->et specs fields false))
  ([specs fields inline]
     (loop [ret [] s specs]
       (if (seq s)
         (recur (-> ret
                    (conj (first s))
                    (into
                      (reduce (fn [v [f sigs]]
                                (conj v (vary-meta (cons f (map #(cons (second %) (nnext %)) sigs))
                                                   assoc :cljs.compiler/fields fields
                                                         :protocol-inline inline)))
                              []
                              (group-by first (take-while seq? (next s))))))
                (drop-while seq? (next s)))
         ret))))

(defn collect-protocols [impls env]
  (->> impls
