   Class instance/static fields are provided as maps. Options:
 
     :name   field name (required).
+
     :type   field type (required).
-    :flags  modifier flags.
+
+    :flags  seq of field modifier flags.
+
     :value  initial value. Only for primitive and String static fields,
             and if given, must be a corresponding Integer, Float, Long,
             Double, or String value.

    :name   method name (required). Can be either :init or :clinit,
            designating a constructor or the static initializer,
            respectively.
    :flags  modifier flags. Ignored for the static initializer.
    :desc   method parameter types and return type (specified last).
            Ignored for the static initializer, optional for
            constructors. For constructors, the method return type is
            forced to void if not explicitly specified as such.
    :emit   either a fn taking a MethodVisitor or a sequence of
            instructions to emit for the method (see `insn.op`).
            Optional if method is abstract.

       :dynamic true}
  *method-flags* #{:public :final})

(def ^{:doc "The bytecode version to use for types if unspecified."
       :dynamic true}
  *bytecode-version* 1.7)

