Hashtable saveModified=currentModified; currentModified=new Hashtable(); JStatement newStmt = (JStatement)body.accept(this); if (newStmt!=null && newStmt!=body) { self.setBody(newStmt); }   UnrollInfo info = getUnrollInfo(init, cond, incr, body,values,constants);  if(shouldUnroll(info, body, currentModified)) {
if(!self.unrolled) {  Hashtable saveModified=currentModified; currentModified=new Hashtable(); JStatement newStmt = (JStatement)body.accept(this); if (newStmt!=null && newStmt!=body) { self.setBody(newStmt); }   UnrollInfo info = getUnrollInfo(init, cond, incr, body,values,constants);  if(shouldUnroll(info, body, currentModified)) {  saveModified.putAll(currentModified); currentModified=saveModified; currentModified.put(info.var,Boolean.TRUE);  return doUnroll(info, self); } else if(canUnroll(info,currentModified)) {  saveModified.putAll(currentModified); currentModified=saveModified; currentModified.put(info.var,Boolean.TRUE);  return doPartialUnroll(info, self); }
    public Object visitForStatement(JForStatement self,				    JStatement init,				    JExpression cond,				    JStatement incr,				    JStatement body) {	// first recurse into body	Hashtable saveModified=currentModified;	currentModified=new Hashtable();	JStatement newStmt = (JStatement)body.accept(this);	if (newStmt!=null && newStmt!=body) {	    self.setBody(newStmt);	}	// check for loop induction variable		UnrollInfo info = getUnrollInfo(init, cond, incr, body,values,constants);	// see if we can unroll...	if(shouldUnroll(info, body, currentModified)) {	    // Set modified	    saveModified.putAll(currentModified);	    currentModified=saveModified;	    currentModified.put(info.var,Boolean.TRUE);	    // do unrolling	    return doUnroll(info, self);	} else if(canUnroll(info,currentModified)) {	    // Set modified	    saveModified.putAll(currentModified);	    currentModified=saveModified;	    currentModified.put(info.var,Boolean.TRUE);	    // do unrolling	    return doPartialUnroll(info, self);	}	saveModified.putAll(currentModified);	currentModified=saveModified;	return self;    }