SIRFilter result = new SIRFilter(first.filter.getParent(), getFusedName(filterInfo), getFields(filterInfo), getMethods(filterInfo, init, initWork, steadyWork), new JIntLiteral(peekCount), new JIntLiteral(popCount), new JIntLiteral(pushCount), steadyWork, first.filter.getInputType(), last.filter.getOutputType());
result.copyState(new SIRFilter(first.filter.getParent(), getFusedName(filterInfo), getFields(filterInfo), getMethods(filterInfo, init, initWork, steadyWork), new JIntLiteral(peekCount), new JIntLiteral(popCount), new JIntLiteral(pushCount), steadyWork, first.filter.getInputType(), last.filter.getOutputType()));
    private static SIRFilter makeFused(List filterInfo, 				       JMethodDeclaration init, 				       JMethodDeclaration initWork, 				       JMethodDeclaration steadyWork) {	// get the first and last filters' info	FilterInfo first = (FilterInfo)filterInfo.get(0);	FilterInfo last = (FilterInfo)filterInfo.get(filterInfo.size()-1);	// calculate the peek, pop, and push count of the fused filter	int peekCount = first.filter.getPeekInt();	int popCount = 	    (first.init.num + first.steady.num) * first.filter.getPopInt();	int pushCount = 	    (last.init.num + last.steady.num) * last.filter.getPushInt();	// make a new filter to represent the fused combo	SIRFilter result = 	    new SIRFilter(first.filter.getParent(),			  getFusedName(filterInfo),			  getFields(filterInfo),			  getMethods(filterInfo, init, initWork, steadyWork),			  new JIntLiteral(peekCount), 			  new JIntLiteral(popCount),			  new JIntLiteral(pushCount),			  steadyWork,			  first.filter.getInputType(),			  last.filter.getOutputType());	// set init functions and work functions of fused filter	result.setInit(init);	result.setWork(steadyWork);	return result;    }