 (defn get-path->form-maps
   [src]
   (let [sx-seq (->> src
-                    (tree-seq list? seq)
-                    (filter list?))
+                    (tree-seq coll? seq)
+                    (filter coll?))
         pair-fn (fn [form]
                   (interleave (seq  form)
                               (repeat form)))]

             [])
         noob)))

(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 (not-empty path)
                                                                               [])
                                                                           %))
                                                 form)))
    :else (symbol (apply str
                         "$"
                         (clojure.string/join "-"
                                              path)))))

(defn deep-zipmap-no-colls
       [a b]

    (let [xls (->> src
                   clojure.walk/macroexpand-all
                   swap-in-path-syms
                   (tree-seq coll? seq)
                   )
          xloc->oloc (deep-zipmap (-> src clojure.walk/macroexpand-all swap-in-path-syms)
                                  (-> src swap-in-path-syms clojure.walk/macroexpand-all))
          oloc->xloc (clojure.set/map-invert xloc->oloc)
