private FieldDescriptor readField(ClassDescriptor thisClassDescriptor) throws IOException, InvalidClassFileFormatException { int access_flags = in.readUnsignedShort(); int name_index = in.readUnsignedShort(); int descriptor_index = in.readUnsignedShort(); int attributes_count = in.readUnsignedShort();  String fieldName = getUtf8String(name_index); String fieldSignature = getUtf8String(descriptor_index);  for (int i = 0; i < attributes_count; i++) { readAttribute(); }  return new FieldDescriptor( expectedClassDescriptor.getClassName(), fieldName, fieldSignature, (access_flags & IClassConstants.ACC_STATIC) != 0);
private FieldDescriptor readField(ClassDescriptor thisClassDescriptor) throws IOException, InvalidClassFileFormatException { return readFieldOrMethod(thisClassDescriptor, new FieldOrMethodDescriptorCreator<FieldDescriptor>() {  public FieldDescriptor create(String className, String name, String signature, int accessFlags) { return new FieldDescriptor(className, name, signature, (accessFlags & IClassConstants.ACC_STATIC) != 0); } });
	private FieldDescriptor readField(ClassDescriptor thisClassDescriptor) throws IOException, InvalidClassFileFormatException {		int access_flags = in.readUnsignedShort();		int name_index = in.readUnsignedShort();		int descriptor_index = in.readUnsignedShort();		int attributes_count = in.readUnsignedShort();			String fieldName = getUtf8String(name_index);		String fieldSignature = getUtf8String(descriptor_index);				for (int i = 0; i < attributes_count; i++) {			readAttribute();		}				return new FieldDescriptor(				expectedClassDescriptor.getClassName(),				fieldName,				fieldSignature,				(access_flags & IClassConstants.ACC_STATIC) != 0);	}