return new SIRPeekExpression(new JPrefixExpression(null, OPE_PREINC,
return new SIRPeekExpression(new JPostfixExpression(null, OPE_POSTINC,
    private static JStatement popToPeek(JStatement orig) {	// define a variable to be our counter of pop position	final JVariableDefinition var = 	    new JVariableDefinition(/* where */ null,				    /* modifiers */ 0,				    /* type */ CStdType.Integer,				    /* ident */ 				    LoweringConstants.getUniqueVarName(),				    /* initializer */				    new JIntLiteral(-1));	// make a declaration statement for our new variable	JVariableDeclarationStatement varDecl =	    new JVariableDeclarationStatement(null, var, null);	// adjust the contents of <orig> to be relative to <var>	orig.accept(new SLIRReplacingVisitor() {                    public Object visitPopExpression(SIRPopExpression oldSelf,                                                     CType oldTapeType) {                        // Recurse into children.                        SIRPopExpression self = (SIRPopExpression)                            super.visitPopExpression(oldSelf,                                                     oldTapeType);			// reference our var			JLocalVariableExpression ref = new JLocalVariableExpression(null,										    var);                        // Return new peek expression.                        return new SIRPeekExpression(new JPrefixExpression(null,									   OPE_PREINC,									   ref),						     oldTapeType);                    }                    public Object visitPeekExpression(SIRPeekExpression oldSelf,						      CType oldTapeType,						      JExpression arg) {                        // Recurse into children.                        SIRPeekExpression self = (SIRPeekExpression)                            super.visitPeekExpression(oldSelf,                                                     oldTapeType,						     arg);			// reference our var			JLocalVariableExpression ref = new JLocalVariableExpression(null,										    var);                        // Return new peek expression.                        return new SIRPeekExpression(new JAddExpression(null, ref, arg),						     oldTapeType);                    }                });	// return the block	JStatement[] statements = {varDecl, orig};	return new JBlock(null, statements, null);    }	