runSchedule (repSchedule.getSubScheds ());
int nSched; for (nSched = 0; nSched < repSchedule.getNumPhases(); nSched++) { runSchedule (repSchedule.getSubSched (nSched)); }
    void runSchedule (Object schedule)    {        if (schedule instanceof Operator)        {            numExecutions ++;            if (numExecutions == 10000)            {                if (printdot) System.out.print (".");                numExecutions = 0;            }            int inputCount = 0, outputCount = 0;            if (schedule instanceof Stream)            {                Stream stream = (Stream) schedule;                if (stream.getInputChannel () != null)                {                	inputCount = stream.getInputChannel ().getItemsPopped ();                }                if (stream.getOutputChannel () != null)                {                	outputCount = stream.getOutputChannel ().getItemsPushed ();                }            }                        Operator oper = (Operator)schedule;            oper.work ();                        if (schedule instanceof Stream)            {                Stream stream = (Stream) schedule;                int newInputCount, newOutputCount;                if (stream.getInputChannel () != null)                {                	newInputCount = stream.getInputChannel ().getItemsPopped ();                	ASSERT (newInputCount - inputCount == stream.getInputChannel ().getPopCount(), "This probably means that you declared the wrong pop rate for " + stream + "\n  have newInput==" + newInputCount +				" and inputCount==" + inputCount +				" and popCount==" + stream.getInputChannel ().getPopCount() +				" on Stream " + stream);                 }                if (stream.getOutputChannel () != null)                {                	newOutputCount = stream.getOutputChannel ().getItemsPushed ();                	ASSERT (newOutputCount - outputCount == stream.getOutputChannel ().getPushCount());                 }                            }        } else        if (schedule instanceof Array)        {            Object [] array = (Object []) schedule;            int size = array.length;            for (int index = 0; index < size; index++)            {                Object child = array [index];                ASSERT (child);                runSchedule (child);            }        } else        if (schedule instanceof Schedule)        {            Schedule repSchedule = (Schedule) schedule;                        if (repSchedule.isBottomSchedule ())            {                runSchedule (repSchedule.getWorkFunc ());            } else {                int nTimes = repSchedule.getNumReps ();                for ( ; nTimes > 0; nTimes--)                {                    runSchedule (repSchedule.getSubScheds ());                }            }        } else ASSERT (false);    }