if (VM.VerifyAssertions) VM.assert(im.isPublic() && im.isAbstract());
if (VM.VerifyAssertions) VM._assert(im.isPublic() && im.isAbstract());
  private static IMTDict buildIMTDict(VM_Class klass, VM_Class[] interfaces) {    IMTDict d = new IMTDict(klass);    for (int i=0; i<interfaces.length; i++) {      VM_Method[] interfaceMethods = interfaces[i].getDeclaredMethods();      for (int j=0; j<interfaceMethods.length; j++) {	VM_Method im = interfaceMethods[j];	if (im.isClassInitializer()) continue; 	if (VM.VerifyAssertions) VM.assert(im.isPublic() && im.isAbstract()); 	int id = VM_ClassLoader.findOrCreateInterfaceMethodSignatureId(im.getName(), im.getDescriptor());	VM_Method vm = klass.findVirtualMethod(im.getName(), im.getDescriptor());	// NOTE: if there is some error condition, then we are playing a dirty trick and	//       pretending that a static method of VM_Runtime is a virtual method.	//       Since the methods in question take no arguments, we can get away with this.	if (vm == null || vm.isAbstract()) {	  vm = VM_Entrypoints.raiseAbstractMethodError;	} else if (!vm.isPublic()) {	  vm = VM_Entrypoints.raiseIllegalAccessError;	}	d.addElement(id, vm);      }    }    return d;  }