VM_Field(VM_Class declaringClass, VM_MemberReference memRef, int modifiers, DataInputStream input) throws IOException { super(declaringClass, memRef, modifiers & APPLICABLE_TO_FIELDS);
private VM_Field(VM_TypeReference declaringClass, VM_MemberReference memRef, int modifiers, int constantValueIndex, VM_Annotation runtimeVisibleAnnotations[], VM_Annotation runtimeInvisibleAnnotations[]) { super(declaringClass, memRef, modifiers, runtimeVisibleAnnotations, runtimeInvisibleAnnotations); this.constantValueIndex = constantValueIndex;
  VM_Field(VM_Class declaringClass, VM_MemberReference memRef,           int modifiers, DataInputStream input) throws IOException {    super(declaringClass, memRef, modifiers & APPLICABLE_TO_FIELDS);    memRef.asFieldReference().setResolvedMember(this);        // Read the attributes, processing the "non-boring" ones    int cvi = 0; // kludge to allow us to make constantValueIndex final.    for (int i = 0, n = input.readUnsignedShort(); i < n; ++i) {      VM_Atom attName   = declaringClass.getUtf(input.readUnsignedShort());      int     attLength = input.readInt();      if (attName == VM_ClassLoader.constantValueAttributeName) {        cvi = input.readUnsignedShort();		} else if (attName == VM_ClassLoader.syntheticAttributeName) {		  modifiers |= SYNTHETIC;      } else {        // all other attributes are boring...        input.skipBytes(attLength);      }    }        constantValueIndex = cvi;  }