modifiers |= SYNTHETIC;
modifiers |= ACC_SYNTHETIC; } else if (attName == VM_ClassLoader.signatureAttributeName) { tmp_signature = VM_Class.getUtf(constantPool, input.readUnsignedShort());
  static VM_Field readField(VM_TypeReference declaringClass,                            int constantPool[], VM_MemberReference memRef,                            int modifiers, DataInputStream input) throws IOException {    // Read the attributes, processing the "non-boring" ones    int cvi = 0;    VM_Annotation tmp_runtimeVisibleAnnotations[] = null;    VM_Annotation tmp_runtimeInvisibleAnnotations[] = null;    for (int i = 0, n = input.readUnsignedShort(); i < n; ++i) {      VM_Atom attName   = VM_Class.getUtf(constantPool, input.readUnsignedShort());      int     attLength = input.readInt();      if (attName == VM_ClassLoader.constantValueAttributeName) {        cvi = input.readUnsignedShort();      } else if (attName == VM_ClassLoader.syntheticAttributeName) {        modifiers |= SYNTHETIC;      } else if (attName == VM_ClassLoader.runtimeVisibleAnnotationsAttributeName) {        tmp_runtimeVisibleAnnotations = VM_AnnotatedElement.readAnnotations(constantPool, input, 2,                                                                            declaringClass.getClassLoader());      } else if (VM_AnnotatedElement.retainRuntimeInvisibleAnnotations &&                 (attName == VM_ClassLoader.runtimeInvisibleAnnotationsAttributeName)) {        tmp_runtimeInvisibleAnnotations = VM_AnnotatedElement.readAnnotations(constantPool, input, 2,                                                                              declaringClass.getClassLoader());      } else {        // all other attributes are boring...        input.skipBytes(attLength);      }    }    return new VM_Field(declaringClass, memRef, modifiers & APPLICABLE_TO_FIELDS, cvi,                        tmp_runtimeVisibleAnnotations, tmp_runtimeInvisibleAnnotations);  }