if (str instanceof SIRFilter) { propagateFilterFields(propagator, (SIRFilter)str);
if (str instanceof SIRPhasedFilter) { propagateFilterFields(propagator, (SIRPhasedFilter)str);
    private void propagateFields(Propagator propagator, SIRStream str) {	if (str instanceof SIRFilter) {	    propagateFilterFields(propagator, (SIRFilter)str);	} else if (str instanceof SIRSplitJoin) {	    // for split-joins, resolve the weights of splitters and	    // joiners	    propagator.visitArgs(((SIRSplitJoin)str).				 getJoiner().getInternalWeights());	    propagator.visitArgs(((SIRSplitJoin)str).				 getSplitter().getInternalWeights());	} else if (str instanceof SIRFeedbackLoop) {	    // for feedback loops, resolve the weights of splitters, 	    // joiners, and delay	    SIRFeedbackLoop loop = (SIRFeedbackLoop)str;	    propagator.visitArgs(loop.getJoiner().getInternalWeights());	    propagator.visitArgs(loop.getSplitter().getInternalWeights());	    JExpression newDelay = loop.getDelay();            if (newDelay != null)                newDelay = (JExpression)newDelay.accept(propagator);	    if (newDelay!=null && newDelay!=loop.getDelay()) {		loop.setDelay(newDelay);	    }	}    }