fire = whoShouldFire(counts, counters);
fire = whoShouldFire(lastToFire, counts, counters);
    private HashMap go(HashMap counts, SimulationCounter counters)     {		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;	    	    //	    System.out.println(Namer.getName(fire.contents));	    //keep track of everything needed when a node fires	    int items = fireMe(fire, counters, counts);	    //simulate the firings	    //1 item for a joiner, push items for a filter	    	  	    	    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));		//see if anyone downstream can fire		go(counts, counters);	    }	    	}	return switchSchedules;    }