if (((SIRStream)fire.contents).insideFeedbackLoop()) return ((SIRFilter)fire.contents).getPopInt(); else return ((SIRFilter)fire.contents).getPopInt() * ((Integer)executionCounts.get(fire)).intValue();
    private int itemsNeededToFire(FlatNode fire, SimulationCounter counters,				  HashMap executionCounts)     {	if (initSimulation) {	    if (!counters.hasFired(fire)) {		if (fire.contents instanceof SIRTwoStageFilter){		    //if the twostage does nothing in its initWork()		    //then the initWork should not count as an execution		    //return peek items as the needed items		    SIRTwoStageFilter two = (SIRTwoStageFilter)fire.contents;		    if (two.getInitPeek() == 0 &&			two.getInitPush() == 0 &&			two.getInitPop() == 0) {			return two.getPeekInt();		    }		    return ((SIRTwoStageFilter)fire.contents).getInitPeek();		}		else 		    return ((SIRFilter)fire.contents).getPeekInt();	    }	    return ((SIRFilter)fire.contents).getPopInt();	}	//if inside a feedback loop then just execution one 	//work function call	if (((SIRStream)fire.contents).insideFeedbackLoop())	    return ((SIRFilter)fire.contents).getPopInt();	else	    return ((SIRFilter)fire.contents).getPopInt() * 		((Integer)executionCounts.get(fire)).intValue();    }