 
     (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

          :end-line end-line
          :end-column end-column})))))

(defn- read-map
  [rdr _]
  (let [[start-line start-column] (when (indexing-reader? rdr)

              (reset-meta! o m)))
          (reader-error rdr "Metadata can only be applied to IMetas"))))))

(defrecord SyntaxQuotedSet [val])
(defn- read-set
  [rdr _]
  (let [[start-line start-column] (when (indexing-reader? rdr)
                                    [(get-line-number rdr) (int (dec (get-column-number rdr)))])
        the-set (if gensym-env
                  (SyntaxQuotedSet. (read-delimited \} rdr true))
                  (PersistentHashSet/createWithCheck (read-delimited \} rdr true)))
        [end-line end-column] (when (indexing-reader? rdr)
                                [(get-line-number rdr) (int (get-column-number rdr))])]
    (with-meta the-set
