return resolvedType;
  public final synchronized VM_Type resolve() throws NoClassDefFoundError,                                                      IllegalArgumentException {    if (resolvedType != null) return resolvedType;    if (isClassType()) {      VM_Type ans;       if (VM.runningVM) {        Class klass;        String myName = name.classNameFromDescriptor();        try {          klass = classloader.loadClass(myName);        } catch (ClassNotFoundException cnf) {          NoClassDefFoundError ncdfe             = new NoClassDefFoundError("Could not find the class " + myName + ":\n\t" + cnf.getMessage());          ncdfe.initCause(cnf); // in dubious taste, but helps us debug Jikes                                // RVM           throw ncdfe;        }        ans = java.lang.JikesRVMSupport.getTypeForClass(klass);      } else {        // Use a special purpose backdoor to avoid creating java.lang.Class        // objects when not running the VM (we get host JDK Class objects        // and that just doesn't work).        ans = ((VM_BootstrapClassLoader)classloader).loadVMClass(name.classNameFromDescriptor());      }      if (VM.VerifyAssertions)         VM._assert(resolvedType == null || resolvedType == ans);      resolvedType = ans;    } else if (isArrayType()) {      if (isWordArrayType() || isCodeArrayType()) {        // Ensure that we only create one VM_Array object for each pair of        // names for this type.         // Do this by resolving AddressArray to [Address        resolvedType = getArrayElementType().getArrayTypeForElementType().resolve();      } else {        VM_Type elementType = getArrayElementType().resolve();        if (elementType.getClassLoader() != classloader) {          // We aren't the canonical type reference because the element type          // was loaded using a different classloader.           // Find the canonical type reference and ask it to resolve itself.          VM_TypeReference canonical = VM_TypeReference.findOrCreate(elementType.getClassLoader(), name);          resolvedType = canonical.resolve();        } else {          resolvedType = new VM_Array(this, elementType);        }      }    } else {      resolvedType = new VM_Primitive(this);    }    return resolvedType;  }