wrapper.reclaimChildren();
    public static SIRPipeline fuse(SIRStream str) {        // try fusing toplevel separately since noone contains it        SIRPipeline wrapper = SIRContainer.makeWrapper(str);        FuseAll fuseAll = new FuseAll();        boolean hasFused = true;        while (hasFused) {            try {                assert wrapper.get(0).getParent() == wrapper;                Lifter.lift(wrapper);                if (wrapper.size()>1) {                    wrapper = SIRContainer.makeWrapper(wrapper);                }                IterFactory.createFactory().createIter(wrapper.get(0)).accept(fuseAll);                hasFused = false;            } catch (SuccessfulFuseException e) {}        }        return wrapper;    }