   (map-size [em m])
   (emit-map-start [em size])
   (emit-map-end [em])
+  (emit-quoted [em o cache])
   (flush-writer [em])
-  (prefers-strings [em])
-  (quote-scalars [em]))
+  (prefers-strings [em]))
 
 (def JSON_INT_MAX (Math/pow 2 53))
 (def JSON_INT_MIN (- 0 JSON_INT_MAX))


(defn marshal-top
  [em o cache]
  (if-let [^String tag (tag o)]
    (marshal em
             o
             #_(if (and (quote-scalars em)
                      (= (.length tag) 1))
               (quoted o)
               o)
             false
             cache)
    (throw (ex-info "Not supported" {:o o :type (type o)}))))

(defn stringable-keys?
  [m]

  (emit-array-end [^JsonGenerator jg] (.writeEndArray jg))
  (map-size [^JsonGenerator jg _] nil)
  (emit-map-start [^JsonGenerator jg _] (.writeStartObject jg))
  (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))

(def MSGPACK_INT_MAX (Math/pow 2 64))
(def MSGPACK_INT_MIN (- 0 MSGPACK_INT_MAX))
