              (apply merge))))
 
 (defn mk-tree-template
-  [src-map fn-meta path parent-path]
+  [src-map fn-meta path parent-path & {:keys [macro?]}]
   (let [sub-src-map (-> #spy/d path
                         path->sym
                         src-map)
-        form (:orig #spy/d sub-src-map)]
+        form (if macro?
+               (:orig sub-src-map)
+               (:x sub-src-map))]
     {:parent-path parent-path
-     :name #spy/d (if (seq? form)
-                    (first form)
-                    form)
+     :name (if (seq? form)
+              (first form)
+              form)
      :form form
+     :macro? macro?
      :inner-path path
      :parent-name (:name fn-meta)
      :ns (-> fn-meta :ns str symbol)

                    (mk-tree-template src-map
                                      fn-meta
                                      path
                                      parent-path)))

(defn xpand-if
  [form src-map fn-meta path parent-path]

    #spy/d tree-atom
    #spy/d parent-tree-atom
    (println "^^^^^")
    (clojure.stacktrace/print-stack-trace (Exception. "assoc-to-recent-trees!"))
    (swap! (-> @parent-tree-atom
               :inner-path
               (@recent-trees)
