 (defrecord CData [content]
   Emit
   (emit-element [e writer]
-    (.writeCData writer (:content e))))
+    (.writeCData ^javax.xml.stream.XMLStreamWriter writer (:content e))))
 
 (defrecord Comment [content]
   Emit
   (emit-element [e writer]
-    (.writeComment writer (:content e))))
+    (.writeComment ^javax.xml.stream.XMLStreamWriter writer (:content e))))
 
 (extend-protocol Emit
   String
   (emit-element [e writer]
-    (.writeCharacters writer e)))
+    (.writeCharacters ^javax.xml.stream.XMLStreamWriter writer e)))
 
 (defn element [tag & [attrs & content]]
   (Element. tag (or attrs {}) content))

  Emit
  (emit-element [e writer]
    (let [nspace (namespace (:tag e))
          qname (name (:tag e))]
      (.writeStartElement writer ""  qname (or nspace ""))
      (write-attributes e writer)
      (doseq [c (:content e)]

                             XMLStreamConstants)
           (java.nio.charset Charset)
           (java.io Reader)))
(set! *warn-on-reflection* true)
; Represents a parse event.
; type is one of :start-element, :end-element, or :characters
(defrecord Event [type name attrs str])
