 
   The array-coerce-fn is an optional function taking the name of an array field,
   and returning the collection to be used for array values."
-  [^String string & [key-fn array-coerce-fn]]
-  (when string
-    (parse/parse
-     (.createJsonParser ^JsonFactory (or factory/*json-factory*
-                                         factory/json-factory)
-                        (StringReader. string))
-     key-fn nil array-coerce-fn)))
+  ([string] (parse-string string nil nil))
+  ([string key-fn] (parse-string string key-fn nil))
+  ([^String string key-fn array-coerce-fn]
+     (when string
+       (parse/parse
+        (.createJsonParser ^JsonFactory (or factory/*json-factory*
+                                            factory/json-factory)
+                           (StringReader. string))
+        key-fn nil array-coerce-fn))))
 
 (defn parse-stream
   "Returns the Clojure object corresponding to the given reader, reader must

  The array-coerce-fn is an optional function taking the name of an array field,
  and returning the collection to be used for array values.
  If non-laziness is needed, see parse-stream."
  [^BufferedReader reader & [key-fn array-coerce-fn]]
  (when reader
    (parsed-seq* (.createJsonParser ^JsonFactory
                                    (or factory/*json-factory*
                                        factory/json-factory) reader)
                 key-fn array-coerce-fn)))

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

  The array-coerce-fn is an optional function taking the name of an array field,
  and returning the collection to be used for array values.
  If laziness is needed, see parsed-seq."
  ([rdr] (parse-stream rdr nil nil))
  ([rdr key-fn] (parse-stream rdr key-fn nil))
  ([^BufferedReader rdr key-fn array-coerce-fn]
     (when rdr
       (parse/parse
        (.createJsonParser ^JsonFactory (or factory/*json-factory*
                                            factory/json-factory) rdr)
        key-fn nil array-coerce-fn))))

(defn parse-smile
  "Returns the Clojure object corresponding to the given SMILE-encoded bytes.
