      (~(symbol (str method "LE")) ~@args)
      (~(symbol (str method "BE")) ~@args)))
 
-(defn without-hint
-  "Removes the type hint metadata from `value`."
+(defn without-tag
+  "Removes the `tag` metadata from `value`."
   [value]
   (vary-meta value dissoc :tag))
 
-(defn without-primitive-hint
-  "Removes the primitive type hint metadata from `value`."
+(defn without-primitive-tag
+  "Removes the primitive `tag` metadata from `value`."
   [value]
   (vary-meta value (fn [{:keys [tag] :as meta}]
                      (cond-> meta

                                                                   {:tag (symbol (str (ns-name *ns*) "." interface-name))})]
                                                       args)
                                                 (meta op-name))]
                      `(defn ~(without-hint op-name)
                         ~@(when docs [docs])
                         {:inline (fn ~(mapv without-hint args)
                                    `(~'~munged-name
                                      ~~@(map (comp with-runtime-hint without-primitive-hint) args)))}
                         ~args
                         (~munged-name ~@(map without-hint args)))))
                  ops)))))

    (if (compiler.util/cljs?)
      `(defprotocol ~interface-name
         ~@(map (fn [{:keys [op-name args docs]}]
                  `(~(without-tag op-name)
                    ~(into [(gensym "this")] (map without-tag args))
                    ~@(when docs [docs])))
                ops))
      `(do (definterface ~interface-name
