doesImpl, interfaceIndex << 2,
doesImpl, Offset.fromIntZeroExtend(interfaceIndex << 2),
  static OPT_Instruction mustImplementInterface(OPT_Instruction s, OPT_IR ir) {    OPT_Operand ref = TypeCheck.getClearRef(s);    VM_Class LHSClass = (VM_Class)TypeCheck.getType(s).getVMType();    if (VM.VerifyAssertions) VM._assert(LHSClass != null, "Should be resolvable...");    int interfaceIndex = LHSClass.getDoesImplementIndex();    int interfaceMask = LHSClass.getDoesImplementBitMask();    OPT_Operand guard = TypeCheck.getClearGuard(s);    OPT_BasicBlock myBlock = s.getBasicBlock();    OPT_BasicBlock failBlock = myBlock.createSubBlock(s.bcIndex, ir, .0001f);    OPT_BasicBlock succBlock = myBlock.splitNodeAt(s, ir);    myBlock.insertOut(failBlock);    myBlock.insertOut(succBlock);    ir.cfg.linkInCodeOrder(myBlock, succBlock);    ir.cfg.addLastInCodeOrder(failBlock);    OPT_Instruction raiseError =       Trap.create(TRAP, null, OPT_TrapCodeOperand.MustImplement());    raiseError.copyPosition(s);    failBlock.appendInstruction(raiseError);        OPT_RegisterOperand RHStib = getTIB(s, ir, ref, guard);    OPT_RegisterOperand doesImpl =       InsertUnary(s, ir, GET_DOES_IMPLEMENT_FROM_TIB,                   VM_TypeReference.IntArray, RHStib);    if (VM_DynamicTypeCheck.MIN_DOES_IMPLEMENT_SIZE <= interfaceIndex) {      OPT_RegisterOperand doesImplLength =         InsertGuardedUnary(s, ir, ARRAYLENGTH, VM_TypeReference.Int,                            doesImpl.copyD2U(), TG());      OPT_Instruction lengthCheck =         IfCmp.create(INT_IFCMP, null, doesImplLength, IC(interfaceIndex),                     OPT_ConditionOperand.LESS_EQUAL(),                      failBlock.makeJumpTarget(),                     OPT_BranchProfileOperand.never());      s.insertBefore(lengthCheck);      myBlock.splitNodeWithLinksAt(lengthCheck, ir);      myBlock.insertOut(failBlock); // required due to splitNode!    }    OPT_RegisterOperand entry =       InsertLoadOffset(s, ir, INT_LOAD, VM_TypeReference.Int,                       doesImpl, interfaceIndex << 2,                        new OPT_LocationOperand(VM_TypeReference.Int),                        TG());    OPT_RegisterOperand bit = InsertBinary(s, ir, INT_AND, VM_TypeReference.Int, entry, IC(interfaceMask));    IfCmp.mutate(s, INT_IFCMP, null, bit, IC(0),                 OPT_ConditionOperand.EQUAL(),                  failBlock.makeJumpTarget(),                 OPT_BranchProfileOperand.never());    return s;  }