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

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


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