       \, (recur (.read stream) result)
       \] (persistent! result)
       (do (.unread stream c)
-          (let [element (do-parse stream true nil)]
+          (let [element (-parse stream true nil)]
             (recur (.read stream) (conj! result element)))))))
 
 (defn- parse-object [^PushbackReader stream]

              (do (.unread stream c)
                  float?))))]
    (if floating-point?
      (Double/valueOf (str buffer))
      (Long/valueOf (str buffer)))))

(defn- do-parse
  [^PushbackReader stream eof-error? eof-value]
  (loop []
    (let [c (.read stream)]

          (recur nxt)))))
  (.print out \]))

(defn- write-json-bignum [x ^PrintWriter out]
  (.print out (str x)))

(defn- write-json-plain [x ^PrintWriter out]
