constructor(iterable) {
      if (!isObject(this)) {
        throw new TypeError('Wrong map object type.');
      }

      initMap(this);

      if (iterable != null) {
        var it = toIterator(iterable);
        var next;
        while (!(next = it.next()).done) {
          if (!isObject(next.value)) {
            throw new TypeError('Expected iterable items to be pair objects.');
          }
          this.set(next.value[0], next.value[1]);
        }
      }
    }
23.1.1.1
Takes an `iterable` which is basically any object that implements a
Symbol.iterator (@@iterator) method. The iterable is expected to be a
collection of pairs. Each pair is a key/value pair that will be used
to instantiate the map.

@param {*} iterable