function MapConstructor(iterable) {
  if (IS_UNDEFINED(new.target)) {
    throw MakeTypeError(kConstructorNotFunction, "Map");
  }

  %_MapInitialize(this);

  if (!IS_NULL_OR_UNDEFINED(iterable)) {
    var adder = this.set;
    if (!IS_CALLABLE(adder)) {
      throw MakeTypeError(kPropertyNotFunction, adder, 'set', this);
    }

    for (var nextItem of iterable) {
      if (!IS_RECEIVER(nextItem)) {
        throw MakeTypeError(kIteratorValueNotAnObject, nextItem);
      }
      %_Call(adder, this, nextItem[0], nextItem[1]);
    }
  }
}
function MapConstructor(iterable) {
  if (IS_UNDEFINED(new.target)) {
    throw MakeTypeError(kConstructorNotFunction, "Map");
  }

  %_MapInitialize(this);

  if (!IS_NULL_OR_UNDEFINED(iterable)) {
    var adder = this.set;
    if (!IS_CALLABLE(adder)) {
      throw MakeTypeError(kPropertyNotFunction, adder, 'set', this);
    }

    for (var nextItem of iterable) {
      if (!IS_RECEIVER(nextItem)) {
        throw MakeTypeError(kIteratorValueNotAnObject, nextItem);
      }
      %_Call(adder, this, nextItem[0], nextItem[1]);
    }
  }
}
function MapConstructor ( iterable ) { if ( IS_UNDEFINED ( new . target ) ) { throw MakeTypeError ( kConstructorNotFunction , "Map" ) ; } % _MapInitialize ( this ) ; if ( ! IS_NULL_OR_UNDEFINED ( iterable ) ) { var adder = this . set ; if ( ! IS_CALLABLE ( adder ) ) { throw MakeTypeError ( kPropertyNotFunction , adder , 'set' , this ) ; } for ( var nextItem of iterable ) { if ( ! IS_RECEIVER ( nextItem ) ) { throw MakeTypeError ( kIteratorValueNotAnObject , nextItem ) ; } % _Call ( adder , this , nextItem [ 0 ] , nextItem [ 1 ] ) ; } } }
------------------------------------------------------------------- Harmony Map
------------------------------------------------------------------- Harmony Map