if (!((SIRStream)fire.contents).insideFeedbackLoop()) ret *= ((Integer)executionCounts.get(fire)).intValue();
ret *= BlockExecutionCounts.getBlockCount(fire);
    private int fireMe(FlatNode fire, SimulationCounter counters, HashMap executionCounts)     {	if (fire.contents instanceof SIRFilter) {	    	    //consume the date from the buffer	    counters.decrementBufferCount(fire, 					  itemsNeededToFire(fire, counters, executionCounts));	    	    	    //for a steady state execution return the normal push	    int ret = ((SIRFilter)fire.contents).getPushInt();	    if (initSimulation) {		//if the filter is a two stage, and it has not fired		//return the initPush() unless the initWork does nothing		if (fire.contents instanceof SIRTwoStageFilter) {		    if (!counters.hasFired(fire)) {			SIRTwoStageFilter two = (SIRTwoStageFilter)fire.contents;			if (!(two.getInitPeek() == 0 &&			      two.getInitPush() == 0 &&			      two.getInitPop() == 0)){			    ret = ((SIRTwoStageFilter)fire.contents).getInitPush();			}		    }		}		//decrement the schedule execution counter		//now this node has fired		counters.setFired(fire);		decrementExecutionCounts(fire, executionCounts);		return ret;	    }	    //now this node has fired	    counters.setFired(fire);	    //if this is not inside of a feedback loop fire everything	    //at once	    if (!((SIRStream)fire.contents).insideFeedbackLoop())		ret *= ((Integer)executionCounts.get(fire)).intValue();	    //decrement the schedule execution counter	    decrementExecutionCounts(fire, executionCounts);	    return ret; 	}	else if (fire.contents instanceof SIRJoiner) {	    return fireJoiner(fire, counters, executionCounts);	}    	Utils.fail("Trying to fire a non-filter or joiner");	return -1;    }