filter(predicate) {
        let seq = this._iterable;
        return Seq.fromGenerator(function*() {
            for (let e of seq) {
                if (predicate(e)) {
                    yield e;
                }
            }
        });
    }
Returns a sequence iterating the items of the receiving sequence that match a predicate. Items that don't match
the predicate, by causing it to return a falsy value, are skipped.
@param {!function(T) : !boolean} predicate
@returns {!Seq.<T>}
@template T