return null;
return mostDownStream;
    private  FlatNode whoShouldFire(HashMap executionCounts, 				    SimulationCounter counters)     {	//breadth first search from bottom	HashSet visited = new HashSet();	Vector queue = new Vector();	FlatNode node;			queue.add(bottom);	while (!queue.isEmpty()) {	    node = (FlatNode)queue.get(0);	    visited.add(node);	    if (canFire(node, executionCounts, counters)) 		return node;	    queue.remove(0);	    for (int i = 0; i < node.inputs; i++) {		if (node.incomingWeights[i] > 0)		    if (!visited.contains(node.incoming[i]))			queue.add(node.incoming[i]);	    }	}	//no node can fire	return null;    }