for (int i = 0; i < nelts; ++i) newArray[i] = buildMultiDimensionalArray(numElements, dimIndex, newArrayType);  return newArray; }
for (int i = 0; i < nelts; ++i) newArray[i] = buildMultiDimensionalArray(numElements, dimIndex, newArrayType, allocator);  return newArray; }
  public static Object buildMultiDimensionalArray(int[] numElements, 						  int dimIndex, 						  VM_Array arrayType) {    if (!arrayType.isInstantiated()) {      arrayType.load();      arrayType.resolve();      arrayType.instantiate();    }    int    nelts     = numElements[dimIndex];    int    size      = arrayType.getInstanceSize(nelts);    Object newObject = quickNewArray(nelts, size, arrayType.getTypeInformationBlock());    if (++dimIndex == numElements.length)      return newObject; // all dimensions have been built    Object[] newArray     = (Object[]) newObject;    VM_Array newArrayType = arrayType.getElementType().asArray();       for (int i = 0; i < nelts; ++i)      newArray[i] = buildMultiDimensionalArray(numElements, dimIndex,                                                newArrayType);    return newArray;  }