   #?(:clj Object :cljs js/Object)
   (coerce-path [this]
     (cond (structure-path? this) (coerce-structure-path this)
-          (obj-extends? Collector this) (coerce-collector this)
-          (obj-extends? StructureValsPath this) (coerce-structure-vals-path this)
+          (obj-extends? `Collector this) (coerce-collector this)
+          (obj-extends? `StructureValsPath this) (coerce-structure-vals-path this)
           :else (throw-illegal (no-prot-error-str this))
       )))
 

(ns com.rpl.specter.impl
  (:use [com.rpl.specter.protocols :only [StructurePath StructureValsPath Collector StructureValsPathComposer comp-paths*]])
  (:require [clojure.walk :as walk]
            [clojure.core.reducers :as r])
  )

#?(

        (transformer this structure (fn [structure] (next-fn vals structure))))
    )))

(defn structure-path? [obj]
  (or (fn? obj) (obj-extends? `StructurePath obj)))

(extend-protocol CoerceTransformFunctions
  nil ; needs its own path because it doesn't count as an Object
