initWorkPhases = new PhasingSchedule[filterIter.getNumInitStages()]; steadyWorkPhases = new PhasingSchedule[filterIter.getNumWorkPhases()];  for (int n = 0; n < filterIter.getNumInitStages(); n++) { initWorkPhases[n] = new PhasingSchedule( this, new Schedule( filterIter.getInitFunctionStage(n), filterIter.getUnspecializedIter()), filterIter.getInitPeekStage(n), filterIter.getInitPopStage(n), filterIter.getInitPushStage(n));  }  for (int n = 0; n < filterIter.getNumWorkPhases(); n++) { steadyWorkPhases[n] = new PhasingSchedule( this, new Schedule( filterIter.getWorkFunctionPhase(n), filterIter.getUnspecializedIter()), filterIter.getPeekPhase(n), filterIter.getPopPhase(n), filterIter.getPushPhase(n)); }
    public Filter(FilterIter iterator, Iterator parent, StreamFactory factory)    {        super(iterator);                graph = factory.getLatencyGraph();    }