}
if (debugrates) { if (librarydebug) { System.err.println(splitjoin.getObject().getClass() .getName() + "[" + nChild + "] end: " + ((at.dms.kjc.iterator.SIRIterator)splitjoin .getChild(nChild)).getObject() .getClass().getName()); } else { System.err.println(((SIRStream)splitjoin.getObject()) .getIdent() + "[" + nChild + "] end: " + ((SIRStream) ((at.dms.kjc.iterator.SIRIterator)splitjoin .getChild(nChild)).getObject()).getIdent()); } }  }
    public SplitJoin(SplitJoinIter _splitjoin, StreamFactory factory)    {        super(_splitjoin);        assert _splitjoin != null;        splitjoin = _splitjoin;        // fill up the children array        // do this to preseve consistancy of iterators        {            nChildren = splitjoin.getNumChildren();            // a pipeline must have some children            assert nChildren > 0;            children = new StreamInterface[nChildren];            int nChild;            for (nChild = 0; nChild < splitjoin.getNumChildren(); nChild++)            {                // create a new object for the child                children[nChild] =                    factory.newFrom(splitjoin.getChild(nChild), splitjoin.getUnspecializedIter());            }            // compute my steady schedule            // my children already have computed their steady schedules,            // so I just have to do mine	    if (factory.needsSchedule()) {		computeSteadyState();	    }        }    }