new JLocalVariableExpression(null, phaseInfo.pushCounter));
new JAddExpression(null, new JIntLiteral(1), new JLocalVariableExpression(null, phaseInfo.pushCounter)));
    private static JStatement makePeekBackup(FilterInfo filterInfo,					     PhaseInfo phaseInfo) {	// make a statement that will copy unpopped items into the	// peek buffer, assuming the counter will count from 0 to	// (peek-pop) [exclusive upper bound]	// the lhs of the destination of the assignment	JExpression destLhs = 	    new JFieldAccessExpression(null,				       new JThisExpression(null),				       filterInfo.peekBuffer.				       getVariable().getIdent());	// the rhs of the destination of the assignment	JExpression destRhs = 	    new JLocalVariableExpression(null, 					 phaseInfo.loopCounter);	// the lhs of the source of the assignment	JExpression sourceLhs = 	    new JLocalVariableExpression(null,					 phaseInfo.popBuffer);	    	// the rhs of the source of the assignment...	JExpression sourceRhs1 = 	    new	    JAddExpression(null, 			   new JLocalVariableExpression(null, 							phaseInfo.loopCounter),			   new JLocalVariableExpression(null,						       phaseInfo.pushCounter));	// need to subtract the difference in peek and pop counts to	// see what we have to backup	JExpression sourceRhs =	    new JMinusExpression(null,				 sourceRhs1,				 new JIntLiteral(filterInfo.filter.getPeekInt()						 -filterInfo.filter.getPopInt()						 ));	// the expression that copies items from the pop buffer to the	// peek buffer	JExpression copyExp = 	    new JAssignmentExpression(null,				      new JArrayAccessExpression(null,								 destLhs,								 destRhs),				      new JArrayAccessExpression(null,								 sourceLhs,								 sourceRhs));	// finally we have the body of the loop	JStatement body = new JExpressionStatement(null, copyExp, null);	// return a for loop that executes (peek-pop) times.	return makeForLoop(body,			   phaseInfo.loopCounter, 			   new JIntLiteral(filterInfo.filter.getPeekInt() -					   filterInfo.filter.getPopInt()));    }