if (!visitPopPeek) { return expr; }   FEContext ctx = expr.getContext(); String name = varGen.nextVar(); Type type = getType(expr); addStatement(new StmtVarDecl(ctx, type, name, null));  Expression var = new ExprVar(ctx, name); addStatement(new StmtAssign(ctx, var, expr, 0));  return var;
if (expr instanceof ExprPeek) { ExprPeek peekArgument = (ExprPeek) expr; expr = new ExprPeek(expr.getContext(), (Expression) peekArgument.getExpr().accept(this)); }     if (!visitPopPeek) { return expr; }   FEContext ctx = expr.getContext(); String name = varGen.nextVar(); Type type = getType(expr); addStatement(new StmtVarDecl(ctx, type, name, null));  Expression var = new ExprVar(ctx, name); addStatement(new StmtAssign(ctx, var, expr, 0));  return var;
    private Object visitPeekOrPop(Expression expr)    {	// don't change anything if we're not to be visiting pops or	// peeks	if (!visitPopPeek) {	    return expr;	}	// Create a temporary variable...	FEContext ctx = expr.getContext();	String name = varGen.nextVar();	Type type = getType(expr);	addStatement(new StmtVarDecl(ctx, type, name, null));	// Generate an assignment to that..	Expression var = new ExprVar(ctx, name);	addStatement(new StmtAssign(ctx, var, expr, 0));	// ...and return the variable.	return var;    }