     )))
 
 (defn structure-path? [obj]
-  (or (fn? obj) (obj-extends? `p/StructurePath obj)))
+  (or (fn? obj) (satisfies? p/StructurePath obj)))
 
 (extend-protocol CoerceTransformFunctions
   nil ; needs its own path because it doesn't count as an Object


(defn coerce-structure-vals-direct [this]
  (cond (structure-path? this) (coerce-structure-path-direct this)
        (obj-extends? `p/Collector this) (coerce-collector this)
        (obj-extends? `p/StructureValsPath this) (coerce-structure-vals-path this)
        (instance? TransformFunctions this) (coerce-structure-vals this)
        :else (throw-illegal (no-prot-error-str this))
  ))

  nil
  (comp-paths* [sp]
    (coerce-path sp))
  #?(:clj Object :cljs default)
  (comp-paths* [sp]
    (coerce-path sp))
  #?(:clj java.util.List :cljs cljs.core/PersistentVector)
