 
   The input stream is consumed, but _not_ closed."
   [^java.io.InputStream class-input-stream]
-  (let [result        (atom { :name              nil
-                              :type              nil
-                              :class-version     nil
-                              :class-version-str nil
-                              :dependencies      {} })
-        class-reader  (new org.objectweb.asm.ClassReader class-input-stream)
-        class-visitor (proxy [org.objectweb.asm.ClassVisitor] ; classes & interfaces
-                             [org.objectweb.asm.Opcodes/ASM4] ; constructor params
-                             ; Overridden functions
-                             (visit [version access class-name signature super-name interfaces]
-                               (swap! result visit version access class-name signature super-name interfaces))
-                             (visitField [access field-name desc signature value]
-                               (swap! result visit-field access field-name desc signature value)
-                               nil)
-                          )]
+  (let [result             (atom { :name              nil
+                                   :type              nil
+                                   :class-version     nil
+                                   :class-version-str nil
+                                   :dependencies      {} })
+        class-reader       (new org.objectweb.asm.ClassReader class-input-stream)
+        annotation-visitor (proxy [org.objectweb.asm.AnnotationVisitor]
+                                  [org.objectweb.asm.Opcodes/ASM4] ; constructor params
+                                  (visitAnnotation [name desc]
+                                    (swap! result visit-annotation name desc)
+                                    ;annotation-visitor))
+                                    nil))
+        field-visitor      (proxy [org.objectweb.asm.FieldVisitor]
+                                  [org.objectweb.asm.Opcodes/ASM4]
+                                  (visitAnnotation [desc visible]
+                                    annotation-visitor))
+        class-visitor      (proxy [org.objectweb.asm.ClassVisitor] ; classes & interfaces
+                                  [org.objectweb.asm.Opcodes/ASM4] ; constructor params
+                                  ; Overridden functions
+                                  (visit [version access class-name signature super-name interfaces]
+                                    (swap! result visit version access class-name signature super-name interfaces))
+                                  (visitField [access field-name desc signature value]
+                                    (swap! result visit-field access field-name desc signature value)
+                                    field-visitor)
+                           )]
     (.accept class-reader class-visitor 0)
     @result))
 

  [^String name]
  (.replaceAll name "/" "."))

(defn- add-dependency
  [dependencies dependency type]
  (if (contains? dependencies dependency)

  [class-info access field-name desc signature value]
  (merge class-info
         {
           :dependencies (add-dependency (:dependencies class-info) (fix-field-descriptor desc) :uses)
         }))

(defn- visit-annotation
  [class-info name desc]
  (merge class-info
         {
           ;####TODO!!!!
         }))

(defn class-info
