SimulationCounter counters = new SimulationCounter(JoinerSimulator.schedules);
    private HashMap go(HashMap counts)     {	SimulationCounter counters = 	    new SimulationCounter(JoinerSimulator.schedules);	FlatNode fire, dest;			while(true) {	    //find out who should fire	    fire = whoShouldFire(counts, counters);	    //if no one left to fire, stop	    if (fire == null)		break;	    //keep track of everything needed when a node fires	    fireMe(fire, counters, counts);	    //simulate the firings	    //1 item for a joiner, push items for a filter	    int items = 1;	    if (fire.contents instanceof SIRFilter)		items = ((SIRFilter)fire.contents).getPushInt();	    	    for (int i = 0; i < items; i++) {				//get the destinations of this item		//could be multiple dests with duplicate splitters		//a filter always has one outgoing arc, so sent to way 0		generateSwitchCode(fire, getDestination(fire.edges[0], 							counters, "", 							fire));	    }	    	}	return switchSchedules;    }