product() {
        return this.fold((a, e) => a * e, 1);
    }
Multiplies up the numbers in the sequence, using the `*` operator, and returns the total.
The empty product is defined to be 1, to satisfy the invariant that X.concat([s]).product() === X.product() * s.
@returns {T|!number|*}
@template T