   (emit-array-end [^JsonGenerator jg] (.writeEndArray jg))
   (map-size [^JsonGenerator jg _] nil)
   (emit-map-start [^JsonGenerator jg _] (.writeStartObject jg))
-  (emit-map-key [^JsonGenerator jg s] (.writeFieldName jg ^String s))
   (emit-map-end [^JsonGenerator jg] (.writeEndObject jg))
+  (emit-quoted [^JsonGenerator jg o cache]
+    (emit-map-start jg 1)
+    (emit-string jg ESC_TAG "'" nil true cache)
+    (marshal jg o false cache)
+    (emit-map-end jg))
   (flush-writer [^JsonGenerator jg] (.flush jg))
-  (prefers-strings [_] true)
-  (quote-scalars [_] true))
+  (prefers-strings [_] true))
 
 (def MSGPACK_INT_MAX (Math/pow 2 64))
 (def MSGPACK_INT_MIN (- 0 MSGPACK_INT_MAX))

  (map-size [em m])
  (emit-map-start [em size])
  (emit-map-end [em])
  (flush-writer [em])
  (prefers-strings [em])
  (quote-scalars [em]))

(def JSON_INT_MAX (Math/pow 2 53))
(def JSON_INT_MIN (- 0 JSON_INT_MAX))

           [java.io InputStream OutputStream EOFException OutputStreamWriter]))

(set! *warn-on-reflection* true)

(declare marshal)

(def ESC "~")
(def SUB "^")
