return generateBranchingTypeCheck(s, ir, ref, LHStype, RHStib, succBlock,
return generateBranchingTypeCheck(s, ir, ref.copy(), LHStype, RHStib, succBlock,
  static OPT_Instruction checkcastNotNull(OPT_Instruction s, OPT_IR ir) {    OPT_Operand ref = TypeCheck.getClearRef(s);    VM_TypeReference LHStype = TypeCheck.getType(s).getTypeRef();    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.CheckCast());    raiseError.copyPosition(s);    failBlock.appendInstruction(raiseError);    OPT_RegisterOperand RHStib = getTIB(s, ir, ref, guard);    return generateBranchingTypeCheck(s, ir, ref, LHStype, RHStib, succBlock,                                       failBlock, null, OPT_BranchProfileOperand.never());  }