if (VM.VerifyAssertions) VM.assert(iTables[iTables.length-1] == null);
if (VM.VerifyAssertions) VM._assert(iTables[iTables.length-1] == null);
  private static void installITable(VM_Class C, VM_Class I) {    Object[] tib = C.getTypeInformationBlock();    Object[] iTables = (Object[])tib[TIB_ITABLES_TIB_INDEX];    if (iTables == null) {      iTables = new Object[2];      tib[TIB_ITABLES_TIB_INDEX] = iTables;    } else {      for (int i=0; i<iTables.length; i++) {	if (((Object[])iTables[i])[0] == I) {	  return; // some other thread just built the iTable	}      }      Object[] tmp = new Object[iTables.length+1];      System.arraycopy(iTables, 0, tmp, 0, iTables.length);      iTables = tmp;      tib[TIB_ITABLES_TIB_INDEX] = iTables;    }    if (VM.VerifyAssertions) VM.assert(iTables[iTables.length-1] == null);    Object[] iTable = buildITable(C, I);    iTables[iTables.length - 1] = iTable;    // iTables[0] is a move to front cache; fill it here so we can    // assume it always contains some iTable.    iTables[0] = iTable;  }