static map(iterable, mapper) {
    //>>includeStart('debug', pragmas.debug);
    Check.defined("iterable", iterable);
    Check.defined("mapper", mapper);
    //>>includeEnd('debug');

    const result = {
      [Symbol.iterator]: function* () {
        for (const element of iterable) {
          yield mapper(element);
        }
      },
    };
    return result;
  }
Creates a new iterable that applies the given mapper to the given iterable.

@param {Iterable} iterable The input iterable
@param {Function} mapper The mapper
@returns {Iterable} The mapped iterable