System.out.println("  visiting peek expression" +
LinearPrinter.println("  visiting peek expression" +
    public Object visitPeekExpression(SIRPeekExpression self, CType tapeType, JExpression arg) {	System.out.println("  visiting peek expression" +			   " peek index: " + arg);	// now, we have to visit the expression of the peek( ) to see if it is a constant	// (in this context, that will be a linear form)	LinearForm exprLinearForm = (LinearForm)arg.accept(this);	// if we didn't find a linear form in the expression, we are cooked	// (possibly we couldn't resolve the value of some variable	if (exprLinearForm == null) {	    return null;	}	// otherwise, make sure that the linear form is only a constant offset	// (if it isn't, we are done beacuse we can't resolve what data item is being looked at)	if (!exprLinearForm.isOnlyOffset()) {	    return null;	}	// if the offset is not an integer, something is very wrong...	if (!exprLinearForm.isIntegerOffset()) {	    throw new RuntimeException("Can't have a non integer offset in a peek expression...");	}	// otherwise, create a new linear form that represents which input value that this	// peek expression produces.	// basically, it will be a linear form that is all zeros in its weights	// except for a 1 in the index corresponding to the data item that this peek expression	// accesses	LinearForm peekExprLinearForm = this.getBlankLinearForm();	peekExprLinearForm.setWeight(exprLinearForm.getIntegerOffset(),				     ComplexNumber.ONE);	System.out.println("  returning linear form from peek expression: " + peekExprLinearForm);	return peekExprLinearForm;    }