System.out.println("Initial expression for field: " + expr);
    public void visitFilter(SIRFilter filter,		     SIRStream parent,		     JFieldDeclaration[] fields,		     JMethodDeclaration[] methods,		     JMethodDeclaration init,		     JMethodDeclaration work,		     CType inputType, CType outputType) {	// assignment statements that need to be added to the init function 	final Vector assignmentStatements = new Vector();		for (int i=0; i<fields.length; i++) {	    	    	    // go and visit all of the field declarations	    fields[i].accept(new SLIRReplacingVisitor() {		    public Object visitFieldDeclaration(JFieldDeclaration self,							int modifiers,							CType type,							String ident,							JExpression expr)		    {			// if this field declaration has an initial value,			// make an assignment expression to stick in the			// init function			System.out.println("Initial expression for field: " + expr);			if (expr != null) {			    // build up the this.field = initalValue expression			    			    			    JThisExpression thisExpr = new JThisExpression (self.getTokenReference());			    JFieldAccessExpression fieldExpr;			    fieldExpr = new JFieldAccessExpression(self.getTokenReference(),								   thisExpr,								   ident);			    			    JAssignmentExpression assignExpr;			    assignExpr = new JAssignmentExpression(self.getTokenReference(),								   fieldExpr,								   expr);			    			    JExpressionStatement assignStmt;			    assignStmt = new JExpressionStatement(self.getTokenReference(),								  assignExpr,								  null);			    // add the new statement to the list of statements we are going to			    // add to the init function			    assignmentStatements.add(assignStmt);			    			    // mutate the field so that it has no initializer expression			    self.getVariable().setExpression(null);			}		    return self;		    }		}); // end crazy anonymous class	} // end for loop		// now, we have to add the initializing assignment statements	// to the beginning of the init function.	// Reverses the order of the initializations (because we see the fields	// in reverse order above)	if(filter.getInit()!=null) {	    JBlock body = filter.getInit().getBody();	    for (int i=0; i<assignmentStatements.size(); i++) {		body.addStatement(0,				  (JStatement)assignmentStatements.elementAt(i));	    }	}    }