  (reify Handler
    (tag [_ l] (if (seq? l) "list" "array"))
    (rep [_ l] (if (seq? l) (as-tag "array" l nil) l))
+   (str-rep [_ _] nil))
+
+ java.lang.Iterable
+ (reify Handler
+   (tag [_ _] "array")
+   (rep [_ i] i)
    (str-rep [_ _] nil))
 
  AsTag

        "'" (emit-quoted em rep cache)
        "array" (emit-array em rep as-map-key cache)
        "map" (emit-map em rep as-map-key cache)
        (emit-encoded em h tag o as-map-key cache)))
    (throw (ex-info "Not supported" {:o o :type (type o)}))))

(defn maybe-quoted
  [o]


(defn emit-encoded
  [em h tag o as-map-key cache]
  (prn "EMIT ENCODED" em h tag o as-map-key cache)
  (if (= (.length ^String tag) 1)
    (let [rep (rep h o)]
      (if (string? rep)
