 
     (coll? form)
     (cond
+     (instance? SyntaxQuotedMap form) (syntax-quote-coll 'clojure.core/hash-map (:val form))
+     (instance? SyntaxQuotedSet form) (syntax-quote-coll 'clojure.core/hash-set (:val form))
+
      (instance? IRecord form) form
      (map? form) (syntax-quote-coll 'clojure.core/hash-map (flatten-map form))
      (vector? form) (syntax-quote-coll 'clojure.core/vector form)
      (set? form) (syntax-quote-coll 'clojure.core/hash-set form)
+
      (or (seq? form) (list? form))
      (let [seq (seq form)]
        (if seq


(defn- read-unquote
  [rdr comma]
  (if-let [ch (peek-char rdr)]
    (if (identical? \@ ch)
      ((wrapping-reader 'clojure.core/unquote-splicing) (doto rdr read-char) \@)
      ((wrapping-reader 'clojure.core/unquote) rdr \~))))

(declare syntax-quote*)
(defn- unquote-splicing? [form]

         ^:dynamic *read-eval*
         ^:dynamic *data-readers*
         ^:dynamic *default-data-reader-fn*
         ^:dynamic ^:private gensym-env
         default-data-readers)

(defn- macro-terminating? [ch]
