     (binding [util/*this* this, util/*super* super]
 
       (doseq [f (:fields t)]
-        (let [flags (or (seq (:flags f)) *field-flags*)
+        (let [flags (:flags f *field-flags*)
               fv (.visitField cv (util/flags flags) (:name f)
                               (util/type-desc (:type f)) nil (:value f))]
           (ann/visit fv (:annotations f))

        cls (if (.contains cls ".")
              cls
              (str (munge (ns-name *ns*)) "." cls))
        flags (set (or (seq (:flags t)) *class-flags*))
        concrete? (not (or (:interface flags)
                           (:abstract flags)))
        flags (if (:interface flags) (conj flags :abstract) flags)

                [flags desc init?]
                (case mname
                  "<clinit>" [[:static], [:void] false]
                  "<init>" [(:flags m *init-flags*)
                            (if (= :void (last (:desc m)))
                              (:desc m)
                              (concat (:desc m) [:void]))
                            true]
                  #_:else [(:flags m *method-flags*)
                           (or (:desc m) [:void])
                           false])
                mv (.visitMethod cv (util/flags flags) mname
