this.signature              = signature;
  private VM_Class(VM_TypeReference typeRef, int constantPool[], int modifiers,                   VM_Class superClass, VM_Class declaredInterfaces[],                   VM_Field declaredFields[], VM_Method declaredMethods[],                   VM_TypeReference declaredClasses[], VM_TypeReference declaringClass,                   VM_Atom sourceName, VM_Method classInitializerMethod,                   VM_Annotation runtimeVisibleAnnotations[],                   VM_Annotation runtimeInvisibleAnnotations[])  {    super(typeRef, runtimeVisibleAnnotations, runtimeInvisibleAnnotations);    // final fields    this.constantPool           = constantPool;    this.modifiers              = modifiers;    this.superClass             = superClass;    this.declaredInterfaces     = declaredInterfaces;    this.declaredFields         = declaredFields;    this.declaredMethods        = declaredMethods;    this.declaredClasses        = declaredClasses;    this.declaringClass         = declaringClass;    this.sourceName             = sourceName;    this.classInitializerMethod = classInitializerMethod;        // non-final fields    this.subClasses         = emptyVMClass;    state                   = CLASS_LOADED;    // we're about to leak a reference to 'this' force memory to be    // consistent    VM_Magic.sync();        if (superClass != null) {      // MUST wait until end of constructor to 'publish' the subclass link.      // If we do this earlier, then people can see an incomplete VM_Class object      // by traversing the subclasses of our superclass!      superClass.addSubClass(this);    }        VM_Callbacks.notifyClassLoaded(this);        if (VM.TraceClassLoading && VM.runningVM) VM.sysWrite("VM_Class: (end)   load file " +                                                           typeRef.getName() + "\n");    if (VM.verboseClassLoading) VM.sysWrite("[Loaded " + toString() + "]\n");  }