 
   The returned sequence will have attached metadata giving the bytes which
   comprise the first value in the sequence."
-  ([input]
+  ([^InputStream input]
    (read-data nil input))
-  ([tag-readers input]
+  ([tag-readers
+    ^InputStream input]
    ; TODO: ensure `mark` is supported
    (if (read-header! input)
      (let [reader (InputStreamReader. input blob-charset)

(defn- capturing-reader
  "Wraps the given reader with a proxy which records the characters read to the
  given writer."
  [input output]
  (proxy [FilterReader] [input]
    (read []
      (let [c (.read input)]
        (.write output c)
        c))))



    [puget.data]
    [puget.printer :as puget])
  (:import
    (java.io
      ByteArrayOutputStream
      FilterReader
      InputStream
      InputStreamReader
      OutputStreamWriter
      PushbackReader
      Reader
      Writer)
    java.nio.charset.Charset))


;; CONSTANTS & CONFIGURATION

(def ^Charset blob-charset
  (Charset/forName "UTF-8"))


