ScratchRegister result = null;
  private ScratchRegister getCurrentScratchRegister(OPT_Register r,OPT_Instruction s) {    ScratchRegister result = null;    for (Iterator i = scratchInUse.iterator(); i.hasNext(); ) {      ScratchRegister sr = (ScratchRegister)i.next();      if (sr.currentContents == r) {        return sr;      }      int location = OPT_RegisterAllocatorState.getSpill(sr.currentContents);      int location2 = OPT_RegisterAllocatorState.getSpill(r);       if (location == location2) {        // OK. We're currently holding a different symbolic register r2 in        // a scratch register, and r2 is mapped to the same spill location        // as r.  So, coopt the scratch register for r, instead.        OPT_Register r2 = sr.currentContents;        sr.currentContents = r;        scratchMap.endScratchInterval(sr.scratch,s);        scratchMap.endSymbolicInterval(r2,s);        scratchMap.beginScratchInterval(sr.scratch,s);        scratchMap.beginSymbolicInterval(r,sr.scratch,s);        return sr;      }    }    return null;  }