Hashtable handlerCache = new Hashtable();
  private final static void adjustPointersInDuplicatedCode(OPT_IR ir, HashMap origToDupMap){    Hashtable handlerCache = new Hashtable();    // Iterate over the original version of all duplicate blocks    Iterator dupBlocks = origToDupMap.values().iterator();    while (dupBlocks.hasNext()) {      OPT_BasicBlock dupBlock = (OPT_BasicBlock) dupBlocks.next();      // Look at the successors of duplicated Block.       for (OPT_BasicBlockEnumeration out = dupBlock.getNormalOut();           out.hasMoreElements();) {        OPT_BasicBlock origSucc = out.next();        OPT_BasicBlock dupSucc =  (OPT_BasicBlock)origToDupMap.get(origSucc);        // If the successor is not in the duplicated code, then        // redirect it to stay in the duplicated code. (dupSucc !=        // null implies that origSucc has a corresponding duplicated        // block, and thus origSucc is in the checking code.        if (dupSucc != null) {                    dupBlock.redirectOuts(origSucc,dupSucc,ir);          if (DEBUG) {            VM.sysWrite("Source: " + dupBlock + "\n");            VM.sysWrite("============= FROM " + origSucc +                         " =============\n");            //origSucc.printExtended();            VM.sysWrite("============= TO " + dupSucc +                         "=============\n");            //dupSucc.printExtended();          }        }        else {          if (DEBUG)             VM.sysWrite("Not adjusting pointer from " + dupBlock +                         " to " + origSucc + " because dupSucc is null\n");        }      }    }  }