| Index: src/collection.js
 | 
| diff --git a/src/collection.js b/src/collection.js
 | 
| index d11612681e918c56f7205af23470995eddbf0e5b..fcf4d38d94f80683d276db2efdc6b047cd0aac5e 100644
 | 
| --- a/src/collection.js
 | 
| +++ b/src/collection.js
 | 
| @@ -47,6 +47,10 @@ function SetConstructor() {
 | 
|  
 | 
|  
 | 
|  function SetAdd(key) {
 | 
| +  if (!IS_SET(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['Set.prototype.add', this]);
 | 
| +  }
 | 
|    if (IS_UNDEFINED(key)) {
 | 
|      key = undefined_sentinel;
 | 
|    }
 | 
| @@ -55,6 +59,10 @@ function SetAdd(key) {
 | 
|  
 | 
|  
 | 
|  function SetHas(key) {
 | 
| +  if (!IS_SET(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['Set.prototype.has', this]);
 | 
| +  }
 | 
|    if (IS_UNDEFINED(key)) {
 | 
|      key = undefined_sentinel;
 | 
|    }
 | 
| @@ -63,6 +71,10 @@ function SetHas(key) {
 | 
|  
 | 
|  
 | 
|  function SetDelete(key) {
 | 
| +  if (!IS_SET(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['Set.prototype.delete', this]);
 | 
| +  }
 | 
|    if (IS_UNDEFINED(key)) {
 | 
|      key = undefined_sentinel;
 | 
|    }
 | 
| @@ -80,6 +92,10 @@ function MapConstructor() {
 | 
|  
 | 
|  
 | 
|  function MapGet(key) {
 | 
| +  if (!IS_MAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['Map.prototype.get', this]);
 | 
| +  }
 | 
|    if (IS_UNDEFINED(key)) {
 | 
|      key = undefined_sentinel;
 | 
|    }
 | 
| @@ -88,6 +104,10 @@ function MapGet(key) {
 | 
|  
 | 
|  
 | 
|  function MapSet(key, value) {
 | 
| +  if (!IS_MAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['Map.prototype.set', this]);
 | 
| +  }
 | 
|    if (IS_UNDEFINED(key)) {
 | 
|      key = undefined_sentinel;
 | 
|    }
 | 
| @@ -96,6 +116,10 @@ function MapSet(key, value) {
 | 
|  
 | 
|  
 | 
|  function MapHas(key) {
 | 
| +  if (!IS_MAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['Map.prototype.has', this]);
 | 
| +  }
 | 
|    if (IS_UNDEFINED(key)) {
 | 
|      key = undefined_sentinel;
 | 
|    }
 | 
| @@ -104,6 +128,10 @@ function MapHas(key) {
 | 
|  
 | 
|  
 | 
|  function MapDelete(key) {
 | 
| +  if (!IS_MAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['Map.prototype.delete', this]);
 | 
| +  }
 | 
|    if (IS_UNDEFINED(key)) {
 | 
|      key = undefined_sentinel;
 | 
|    }
 | 
| @@ -126,6 +154,10 @@ function WeakMapConstructor() {
 | 
|  
 | 
|  
 | 
|  function WeakMapGet(key) {
 | 
| +  if (!IS_WEAKMAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['WeakMap.prototype.get', this]);
 | 
| +  }
 | 
|    if (!IS_SPEC_OBJECT(key)) {
 | 
|      throw %MakeTypeError('invalid_weakmap_key', [this, key]);
 | 
|    }
 | 
| @@ -134,6 +166,10 @@ function WeakMapGet(key) {
 | 
|  
 | 
|  
 | 
|  function WeakMapSet(key, value) {
 | 
| +  if (!IS_WEAKMAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['WeakMap.prototype.set', this]);
 | 
| +  }
 | 
|    if (!IS_SPEC_OBJECT(key)) {
 | 
|      throw %MakeTypeError('invalid_weakmap_key', [this, key]);
 | 
|    }
 | 
| @@ -142,6 +178,10 @@ function WeakMapSet(key, value) {
 | 
|  
 | 
|  
 | 
|  function WeakMapHas(key) {
 | 
| +  if (!IS_WEAKMAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['WeakMap.prototype.has', this]);
 | 
| +  }
 | 
|    if (!IS_SPEC_OBJECT(key)) {
 | 
|      throw %MakeTypeError('invalid_weakmap_key', [this, key]);
 | 
|    }
 | 
| @@ -150,6 +190,10 @@ function WeakMapHas(key) {
 | 
|  
 | 
|  
 | 
|  function WeakMapDelete(key) {
 | 
| +  if (!IS_WEAKMAP(this)) {
 | 
| +    throw MakeTypeError('incompatible_method_receiver',
 | 
| +                        ['WeakMap.prototype.delete', this]);
 | 
| +  }
 | 
|    if (!IS_SPEC_OBJECT(key)) {
 | 
|      throw %MakeTypeError('invalid_weakmap_key', [this, key]);
 | 
|    }
 | 
| 
 |