              paramscollector
              paramspath]]
     )
-  (:require [com.rpl.specter.impl :as i])
+  (:require [com.rpl.specter.impl :as i]
+            [clojure.set :as set])
   )
 
 (defn comp-paths [& paths]

    (i/srange-transform structure start end next-fn)
    ))


(def BEGINNING (srange 0 0))

(def END (srange-dynamic count count))

(defparamspath
  walker

  (transform* [this structure next-fn]
    (i/filter-transform afn structure next-fn)))

(defparamspath
  ^{:doc "Navigates to the provided val if the structure is nil. Otherwise it stays
          navigated at the structure."}
  nil->val
  [v]
  (select* [this structure next-fn]
    (next-fn (if structure structure v)))
  (transform* [this structure next-fn]
    (next-fn (if structure structure v))))

(def NIL->SET (nil->val #{}))
(def NIL->LIST (nil->val '()))
(def NIL->VECTOR (nil->val []))

(defn collect [& path]
  (pathed-collector [late path]
    (collect-val [this structure]
