do {  unroller = new Unroller(new Hashtable()); ((SIRFilter)node.contents).getMethods()[i].accept(unroller); } while(unroller.hasUnrolled());  ((SIRFilter)node.contents).getMethods()[i]. accept(new Propagator(new Hashtable()));
    public void visitNode(FlatNode node)     {	if (node.isFilter()){	    //do not unroll file writers...	    if (node.contents instanceof SIRFileWriter)		return; 	    //if this is a sink unroll	    if (((SIRFilter)node.contents).getPushInt() == 0) {		System.out.println("Propagating and Unrolling Sink " + 				   ((SIRFilter)node.contents).getName()+"...");		for (int i = 0; i < ((SIRFilter)node.contents).getMethods().length; i++) {		    Unroller unroller;		    do {			do {			    //unroll			    unroller = new Unroller(new Hashtable());			    ((SIRFilter)node.contents).getMethods()[i].accept(unroller);			} while(unroller.hasUnrolled());			//propagate constants 			((SIRFilter)node.contents).getMethods()[i].			    accept(new Propagator(new Hashtable()));			//unroll again			unroller = new Unroller(new Hashtable());			((SIRFilter)node.contents).getMethods()[i].accept(unroller);		    } while(unroller.hasUnrolled());			}	    }	}    }