if (OffChipBuffer.getBuffer(traceNode, traceNode.getParent().getHead()).redundant())
if (traceNode.oneOutput() && OffChipBuffer.getBuffer(traceNode, traceNode.getDests()[0][0]).redundant())
    private static void splitOutputTrace(OutputTraceNode traceNode, boolean init, boolean primepump)    {	FilterTraceNode filter = (FilterTraceNode)traceNode.getPrevious();		//check to see if the splitting is necessary (the buffer exists)	if (OffChipBuffer.getBuffer(traceNode, traceNode.getParent().getHead()).redundant())	    return;				    	FilterInfo filterInfo = FilterInfo.getFilterInfo(filter);	//calculate the number of items sent	int items = filterInfo.totalItemsSent(init, primepump), 	    iterations, stage = 1, typeSize;		//the stage we are generating code for as used below for generateSwitchCode()	if (!init) 	    stage = 2;	typeSize = Util.getTypeSize(filter.getFilter().getOutputType());	    	//the numbers of times we should cycle thru this "splitter"	assert items % traceNode.totalWeights() == 0: 	    "weights on output trace node does not divide evenly with items sent";	iterations = items / traceNode.totalWeights();		//is there a load immediate in the switch instruction set?!	//I guess not, if switch instruction memory is a problem	//this naive implementation will have to change	StreamingDram sourcePort = OffChipBuffer.getBuffer(filter, traceNode).getDRAM();	for (int i = 0; i < iterations; i++) {	    for (int j = 0; j < traceNode.getWeights().length; j++) {		for (int k = 0; k < traceNode.getWeights()[j]; k++) {		    //generate the array of compute node dests		    ComputeNode dests[] = new ComputeNode[traceNode.getDests()[j].length];		    for (int d = 0; d < dests.length; d++) 			dests[d] = OffChipBuffer.getBuffer(traceNode, 							   traceNode.getDests()[j][d]).getDRAM();		    for (int q = 0; q < typeSize; q++)			SwitchCodeStore.generateSwitchCode(sourcePort, 							   dests, stage);		}	    }	}	//because transfers must be cache line size divisible...	//disregard the dummy values coming out of the dram	if ((items * typeSize) % RawChip.cacheLineWords != 0) {	    int remainder = (items * typeSize) % RawChip.cacheLineWords;	    SwitchCodeStore.disregardIncoming(sourcePort, remainder, init || primepump);	}	//write dummy values into each temp buffer with a remainder	Iterator it = traceNode.getDestSet().iterator();	while (it.hasNext()) {	    InputTraceNode in = (InputTraceNode)it.next();	    int remainder = (typeSize * iterations * traceNode.getWeight(in)) %		RawChip.cacheLineWords;	    SwitchCodeStore.dummyOutgoing(OffChipBuffer.getBuffer(traceNode, in).getDRAM(),					  remainder, init || primepump);	}       }