                   (swap-in-path-syms
                    (clojure.walk/macroexpand-all src)))
 
+     (clojure.pprint/pprint
+      (deep-zipmap-all (swap-in-path-syms src)
+                                         src)
+
+                            )
+
      (swap-in-path-syms
       (clojure.walk/macroexpand-all src)))

  `(alter-meta! ~body assoc :source '~body))

(defn back-into
  [orig noob]

  (let [r ((if (seq? orig)
             reverse
             identity)
           (into (or (empty orig)
                     [])
                 noob))]
    r))

(defn swap-in-path-syms
  [form & [path]]
  (cond
    (special-operator? form) form
    (coll? form)  (back-into form (doall (map-indexed #(swap-in-path-syms %2
                                                                          (conj (or path
                                                                                    [])
                                                                                %))
                                                      form)))
    :else (symbol (apply str
                         "___"
                         (clojure.string/join "-"
                                              path)))))

(defn deep-zipmap
       [a b]
       (zipmap (filter (comp not coll?) (tree-seq coll? seq a))
               (filter (comp not coll?) (tree-seq coll? seq b))))

#_ (do



      )


     (def src '(defn f1 [a] (let [[b] [4 5]] {a (-> a (+ b) dec)})))

     '(def f1 (fn* ([a]
                    (let* [vec__21418 [4 5]
                           b (clojure.core/nth vec__21418 0
