for (let i = xs.length; i-- > 0; ) {
        acc = <any>reduce(acc, xs[i]);
        if (isReduced(acc)) {
            acc = (<any>acc).deref();
            break;