( ! (child instanceof SIRTwoStageFilter)) &&  (i == 0 || child.getInputType() instanceof CFloatType || child.getInputType() instanceof CIntType) &&
(! (child instanceof SIRTwoStageFilter)) &&
        boolean canFuse(SIRStream child, int i) {            switch(this.mode) {            case FUSE_PIPELINES_OF_FILTERS:                return (// can only fuse filters                        child instanceof SIRFilter &&                        // must be fusable                        FusePipe.isFusable(child));            case FUSE_PIPELINES_OF_STATELESS_FILTERS:                return (// can only fuse filters                        child instanceof SIRFilter &&                        // must be fusable                        FusePipe.isFusable(child) &&                        // child must be stateless                        !StatelessDuplicate.hasMutableState((SIRFilter)child) &&                        // cannot be a two-stage filter (could introduce fusion state?)                        !(child instanceof SIRTwoStageFilter) &&                        // only first filter can peek                        (i==0 || !FusePipelines.filterPeeks((SIRFilter)child)));            case FUSE_PIPELINES_OF_STATELESS_STREAMS:                return (// must be fusable                        predictFusion.isFusable(child) &&                        // must be stateless                        !predictFusion.hasState(child) &&                        // cannot be a two-stage filter (could introduce fusion state?)                        !predictFusion.isTwoStage(child) &&                        // only first filter can peek                        (i==0 || !predictFusion.doesPeeking(child)));            case FUSE_PIPELINES_OF_VECTORIZABLE_FILTERS:                return (// can only fuse filters                        child instanceof SIRFilter &&                        // must be fusable                        FusePipe.isFusable(child) &&                        // may not be two-stage: certainly                         // filters after first can not be two stage                        // since vectorization will change tapeType for                        // work function.                        (/*i == 0 ||*/ ! (child instanceof SIRTwoStageFilter)) &&                        // previous filter outputs a vectorizable type                        (i == 0 || child.getInputType() instanceof CFloatType                                || child.getInputType() instanceof CIntType) &&                        // only first filter can peek                        (i==0 || !FusePipelines.filterPeeks((SIRFilter)child)) &&                        // and vectorizable...                        Vectorizable.vectorizable((SIRFilter)child));            }            assert false : "Unexpected mode";            return false;        }