 
     (i/fn-invocation? path)
     (let [[op & params] path]
-      ;; need special case for 'fn since macroexpand does NOT 
+      ;; need special case for 'fn since macroexpand does NOT
       ;; expand fn when run on cljs code, but it's also not considered a special symbol
       (if (or (= 'fn op) (special-symbol? op))
         `(com.rpl.specter.impl/->SpecialFormUse ~path (quote ~path))
         `(com.rpl.specter.impl/->FnInvocation
-           ~(ic-prepare-path locals-set op)
-           ~(mapv #(ic-prepare-path locals-set %) params)
-           (quote ~path)))
+          ~(ic-prepare-path locals-set op)
+          ~(mapv #(ic-prepare-path locals-set %) params)
+          (quote ~path)))
       )
 
     :else

;; still possible to mess this up with alter-var-root
(defmacro path
  "Same as calling comp-paths, except it caches the composition of the static part
   of the path for later re-use (when possible). For almost all idiomatic uses
   of Specter provides huge speedup. This macro is automatically used by the
   select/transform/setval/replace-in/etc. macros."
  [& path]
  (let [;;this is a hack, but the composition of &env is considered stable for cljs
        platform (if (contains? &env :locals) :cljs :clj)
        local-syms (if (= platform :cljs)
                    (-> &env :locals keys set) ;cljs
                    (-> &env keys set) ;clj
                    )
        used-locals-cell (i/mutable-cell [])
        _ (cljwalk/postwalk
            (fn [e]
              (if (local-syms e)
                (i/update-cell! used-locals-cell #(conj % e))
                e
                ))
            path)
        used-locals (i/get-cell used-locals-cell)

        ;; note: very important to use riddley's macroexpand-all here, so that
        ;; &env is preserved in any potential nested calls to select (like via
        ;; a view function)
        expanded (if (= platform :clj)
                  (i/clj-macroexpand-all (vec path))
                  (cljs-macroexpand-all &env (vec path)))

        prepared-path (ic-prepare-path local-syms expanded)
        possible-params (vec (ic-possible-params expanded))

(defmacro defnavconstructor [name & args]
  (let [[name [[csym anav] & body-or-bodies]] (name-with-attributes name args)
        bodies (if (-> body-or-bodies first vector?) [body-or-bodies] body-or-bodies)

        checked-code
        (doall
         (for [[args & body] bodies]
           `(~args
             (let [ret# (do ~@body)]
               (if (i/layered-nav? ret#)
                 (i/layered-nav-underlying ret#)
                 (i/throw-illegal "Expected result navigator '" (quote ~anav)
                                  "' from nav constructor '" (quote ~name) "'"
                                  " constructed with the provided constructor '" (quote ~csym)
                                  "'"))
               ))))]
    `(def ~name
       (vary-meta
        (let [~csym (i/layered-wrapper ~anav)]
          (fn ~@checked-code))
        assoc :layerednav true))
    ))


(defn ^:no-doc ic-prepare-path [locals-set path]
  (cond
