public FieldVisitor visitField(
     final int access,
     final String name,
     final String desc,
     final String signature,
     final Object value) {
   checkState();
   checkAccess(
       access,
       Opcodes.ACC_PUBLIC
           + Opcodes.ACC_PRIVATE
           + Opcodes.ACC_PROTECTED
           + Opcodes.ACC_STATIC
           + Opcodes.ACC_FINAL
           + Opcodes.ACC_VOLATILE
           + Opcodes.ACC_TRANSIENT
           + Opcodes.ACC_SYNTHETIC
           + Opcodes.ACC_ENUM
           + Opcodes.ACC_DEPRECATED
           + 0x40000); // ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
   CheckMethodAdapter.checkIdentifier(name, "field name");
   CheckMethodAdapter.checkDesc(desc, false);
   if (signature != null) {
     CheckMethodAdapter.checkFieldSignature(signature);
   }
   if (value != null) {
     CheckMethodAdapter.checkConstant(value);
   }
   FieldVisitor av = cv.visitField(access, name, desc, signature, value);
   return new CheckFieldAdapter(av);
 }