return null;
throw new NonLinearException("too many pops detected");
    public Object visitPopExpression(SIRPopExpression self, CType tapeType) {	LinearPrinter.println("  visiting pop expression: " + self);	// A pop expression is one of the base cases for creating LinearForms	// the pop expression will creates a linear form that corresponds to using	// a peek at the current offset, which in turn corresponds to a	// use of the element at size-peekoffset-1 in the input vector	int inputIndex = this.peekSize - this.peekOffset - 1;	if (inputIndex < 0) {	    LinearPrinter.warn("Too many pops detected!");	    this.nonLinearFlag = true;	    return null;	}			LinearForm currentForm = this.getBlankLinearForm();	currentForm.setWeight(inputIndex, ComplexNumber.ONE);		// when we hit a pop expression, all further peek expressions have their	// indicies incremented by one compared to the previous expressions	this.peekOffset++;	// return the linear form of the pop expression	//LinearPrinter.println("  returning " + currentForm + " from pop expression");	LinearPrinter.println("  returning linear form from pop expression");	return currentForm;    }