              newmap))))
 
 (defnav
+  ^{:doc "Using clojure.walk, navigate the data structure until reaching
+          a value for which `afn` returns truthy."}
   walker
   [afn]
   (select* [this structure next-fn]

  (transform* [this structure next-fn]
    (next-fn (if (nil? structure) v structure))))

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

(defpathedfn collect [& path]
  (pathed-collector [late path]
    (collect-val [this structure]
      (compiled-select late structure)
      )))

(defpathedfn collect-one [& path]
  (pathed-collector [late path]
    (collect-val [this structure]
      (compiled-select-one late structure)

    (i/walk-until afn next-fn structure)))

(defnav
  ^{:doc "Like `walker` but maintains metadata of any forms traversed."}
  codewalker
  [afn]
  (select* [this structure next-fn]
