performSplitOutputTrace(traceNode, filter, filterInfo, init, primepump, items);
if (primepump) { Iterator dests = traceNode.getDestSet().iterator(); assert dests.hasNext() : "Output should have at least one dest"; Edge edge = (Edge)dests.next(); FilterInfo downstream = FilterInfo.getFilterInfo(edge.getDest().getNextFilter());  int ppFilterIt = (filterInfo.primePumpTrue - downstream.primePumpTrue) * filterInfo.steadyMult; assert ((ppFilterIt * filterInfo.push) % traceNode.totalWeights() == 0) : "Error: Inconsistent primepump stats for output trace node"; ppSteadyIt = (ppFilterIt * filterInfo.push) / traceNode.totalWeights();  iterations -= ppSteadyIt;  while (dests.hasNext()){ edge = (Edge)dests.next(); assert ppFilterIt == filterInfo.steadyMult * (filterInfo.primePumpTrue - FilterInfo.getFilterInfo(edge.getDest().getNextFilter()).primePumpTrue) : "Error: Inconsistent primepump stats for output trace node"; } }
    private static void splitOutputTrace(OutputTraceNode traceNode, boolean init, boolean primepump)    {	FilterTraceNode filter = (FilterTraceNode)traceNode.getPrevious();	//check to see if the splitting is necessary	if (OffChipBuffer.unnecessary(traceNode))	    return;				    	FilterInfo filterInfo = FilterInfo.getFilterInfo(filter);	//calculate the number of items sent	int items = filterInfo.totalItemsSent(init, primepump);		//subtract the items from the primepump that are not consumed	//they are handled below	if (primepump)	    items -= filterInfo.primePumpItemsNotConsumed();		performSplitOutputTrace(traceNode, filter, filterInfo, init, primepump, items);		if (primepump)	    performSplitOutputTrace(traceNode, filter, filterInfo, init, primepump, 				    filterInfo.primePumpItemsNotConsumed());    }