if (!elementType.isPrimitiveType() && elementType.isResolved()) {
if (!elementType.isPrimitiveType()) {
  public final synchronized void resolve() {    if (isResolved())      return;    if (VM.VerifyAssertions) VM._assert(state == CLASS_LOADED);    if (elementType.isLoaded() && !elementType.isResolved()) {      try {	elementType.resolve();       }	catch (VM_ResolutionException e) {	System.err.println("VM_Array.resolve: cannot resolve element type::: " + elementType); // TODO: we should throw e      }    }        // Using the type information block for java.lang.Object as a template,    // build a type information block for this new array type by copying the    // virtual method fields and substuting an appropriate type field.    //    if (javaLangObjectTIB == null) {      VM_Class cls = VM_ClassLoader.findOrCreateType(VM_Atom.findOrCreateAsciiAtom("Ljava/lang/Object;"), VM_SystemClassLoader.getVMClassLoader()).asClass();      javaLangObjectTIB = cls.getTypeInformationBlock();    }           typeInformationBlock = VM_RuntimeStructures.newTIB(javaLangObjectTIB.length);    VM_Statics.setSlotContents(tibSlot, typeInformationBlock);    // Initialize dynamic type checking data structures    typeInformationBlock[0] = this;    typeInformationBlock[TIB_SUPERCLASS_IDS_INDEX] = VM_DynamicTypeCheck.buildSuperclassIds(this);    typeInformationBlock[TIB_DOES_IMPLEMENT_INDEX] = VM_DynamicTypeCheck.buildDoesImplement(this);    if (!elementType.isPrimitiveType() && elementType.isResolved()) {      typeInformationBlock[TIB_ARRAY_ELEMENT_TIB_INDEX] = elementType.getTypeInformationBlock();    }     state = CLASS_RESOLVED;  }