   ([string] (parse-string-strict string nil nil))
   ([string key-fn] (parse-string-strict string key-fn nil))
   ([^String string key-fn array-coerce-fn]
-     (when string
-       (parse/parse-strict
-        (.createJsonParser ^JsonFactory (or factory/*json-factory*
-                                            factory/json-factory)
-                           (StringReader. string))
-        key-fn nil array-coerce-fn))))
+   (when string
+     (parse/parse-strict
+      (.createParser ^JsonFactory (or factory/*json-factory*
+                                      factory/json-factory)
+                     ^Writer (StringReader. string))
+      key-fn nil array-coerce-fn))))
 
 (defn parse-stream
   "Returns the Clojure object corresponding to the given reader, reader must

  - :end - write object with end border only."
  ([obj] (write obj nil))
  ([obj wholeness]
     (gen-seq/generate *generator* obj (or (:date-format *opt-map*)
                                           factory/default-date-format)
                       (:ex *opt-map*)
                       (:key-fn *opt-map*)
                       :wholeness wholeness)))

(defn generate-smile
  "Returns a SMILE-encoded byte-array for the given Clojure object.

  ([reader] (parsed-seq reader nil nil))
  ([reader key-fn] (parsed-seq reader key-fn nil))
  ([^BufferedReader reader key-fn array-coerce-fn]
   (when reader
     (parsed-seq* (.createParser ^JsonFactory
                                 (or factory/*json-factory*
                                     factory/json-factory)
                                 ^Reader reader)
                  key-fn array-coerce-fn))))

(defn parsed-smile-seq
  "Returns a lazy seq of Clojure objects corresponding to the SMILE read from
