assert childrenNumExecs[nChild].signum() == 1;
assert childrenNumExecs[nChild].signum() == 1 :"" + childrenNumExecs[nChild].signum() + " == 1  " + pipeline.getObject().getClass().getName() + "[" + nChild + "]";
    public void computeSteadyState()    {        childrenNumExecs = new BigInteger[nChildren];        // multiply the children's num of executions        // by the appropriate output factors        {            // use this to keep track of product of all output rates            BigInteger outProduct = BigInteger.ONE;            int nChild;            for (nChild = 0; nChild < nChildren; nChild++)            {                StreamInterface child = children[nChild];                assert child != null;                childrenNumExecs[nChild] = outProduct;                                outProduct =                    outProduct.multiply(                        BigInteger.valueOf(child.getSteadyPush()));            }        }        // now multiply the children's num of executions        // by the appropriate input factors        {            // use this value to keep track of product of input rates            BigInteger inProduct = BigInteger.ONE;            int nChild;            for (nChild = nChildren - 1; nChild >= 0; nChild--)            {                StreamInterface child = children[nChild];                assert child != null;                // continue computing the number of executions this child needs                childrenNumExecs[nChild] =                    childrenNumExecs[nChild].multiply(inProduct);                inProduct =                    inProduct.multiply(                        BigInteger.valueOf(child.getSteadyPop()));            }        }        // compute the GCD of number of executions of the children        // and didivde those numbers by the GCD        BigInteger gcd;        {            gcd = childrenNumExecs[0];            int nChild;            for (nChild = 0; nChild < nChildren; nChild++)            {                gcd = gcd.gcd(childrenNumExecs[nChild]);            }        }        // divide the children's execution counts by the gcd        {            int nChild;            for (nChild = 0; nChild < nChildren; nChild++)            {                StreamInterface child = children[nChild];                assert child != null;                assert childrenNumExecs[nChild].mod(gcd)                    .equals(BigInteger.ZERO);                childrenNumExecs[nChild] =                    childrenNumExecs[nChild].divide(gcd);                // make sure that the child executes a positive                // number of times!                assert childrenNumExecs[nChild].signum() == 1;            }        }        // initialize self        {            int peekExtra =                children[0].getSteadyPeek() - children[0].getSteadyPop();            int pop =                childrenNumExecs[0].intValue()                    * children[0].getSteadyPop();            int push =                childrenNumExecs[nChildren                    - 1].intValue() * children[nChildren                    - 1].getSteadyPush();            setSteadyPeek(pop + peekExtra);            setSteadyPop(pop);            setSteadyPush(push);        }    }