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.checkUnqualifiedName(version, 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);
	}