System.out.println("  visiting push expression: " +
LinearPrinter.println("  visiting push expression: " +
    public Object visitPushExpression(SIRPushExpression self, CType tapeType, JExpression arg) {	System.out.println("  visiting push expression: " +			   "argument: " + arg);	// try and resolve the argument to a LinearForm by munging the argument	LinearForm argLinearForm = (LinearForm)arg.accept(this);	// if we get null, it means we don't know that this push expression will	// yield a linear form, so therefore we can't characterize the filter as	// a whole as having linear form.	if (argLinearForm == null) {	    // set the flag that says this filter isn't linear	    this.nonLinearFlag = true;	} else {	    // we have a linear form, so we update the matrix representation	    argLinearForm.copyToColumn(this.representationMatrix, this.pushOffset);	    // update the constant vector with the offset from the linear form	    this.representationVector.setElement(this.pushOffset, argLinearForm.getOffset());	    // increment the push offset (for the next push statement)	    this.pushOffset++;	}	// make sure we didn't screw up anything.	checkRep();	// push expressions don't return values, so they also certainly don't return linear forms	return null;    }