 (defmacro defparamscollector [name & body]
   `(def ~name (paramscollector ~@body)))
 
-(defmacro fixed-pathed-path [bindings & impls]
+(defmacro fixed-pathed-path
+  "This helper is used to define selectors that take in a fixed number of other selector
+   paths as input. Those selector paths may require late-bound params, so this helper
+   will create a parameterized selector if that is the case. If no late-bound params
+   are required, then the result is executable."
+  [bindings & impls]
   (let [bindings (partition 2 bindings)
         paths (mapv second bindings)
         names (mapv first bindings)

   Tests the structure if selecting with cond-path returns anything.
   If so, it uses the following selector for this portion of the navigation.
   Otherwise, it tries the next cond-path. If nothing matches, then the structure
   is not selected."
  [& conds]
  (variable-pathed-path [compiled-paths conds]
    (select* [this structure next-fn]

      (mapcat (fn [n l] [n `(~l ~i/PARAMS-SYM ~i/PARAMS-IDX-SYM)]) names latefn-syms)
      impls)))

(defmacro variable-pathed-path
  "This helper is used to define selectors that take in a variable number of other selector
   paths as input. Those selector paths may require late-bound params, so this helper
   will create a parameterized selector if that is the case. If no late-bound params
   are required, then the result is executable."
  [[latepaths-seq-sym paths-seq] & impls]
  (let [latefns-sym (gensym "latefns")]
    (i/pathed-path*
      i/paramspath*
