| Index: Source/bindings/scripts/v8_interface.py | 
| diff --git a/Source/bindings/scripts/v8_interface.py b/Source/bindings/scripts/v8_interface.py | 
| index 623308484300aed627cf267fdfd48297db28a051..8b80f3b120428d406e0f0efff62302e9c98c0a72 100644 | 
| --- a/Source/bindings/scripts/v8_interface.py | 
| +++ b/Source/bindings/scripts/v8_interface.py | 
| @@ -384,7 +384,7 @@ def interface_context(interface): | 
| iterator_method = generated_iterator_method('iterator') | 
|  | 
| if interface.iterable or interface.maplike or interface.setlike: | 
| -            methods.extend([ | 
| +            implicit_methods = [ | 
| generated_iterator_method('keys'), | 
| generated_iterator_method('values'), | 
| generated_iterator_method('entries'), | 
| @@ -396,7 +396,17 @@ def interface_context(interface): | 
| is_optional=True, | 
| extended_attributes={'Default': 'Undefined'})], | 
| extended_attributes=forEach_extended_attributes), | 
| -            ]) | 
| +            ] | 
| + | 
| +            methods_by_name = {} | 
| +            for method in methods: | 
| +                methods_by_name.setdefault(method['name'], []).append(method) | 
| + | 
| +            for implicit_method in implicit_methods: | 
| +                if implicit_method['name'] in methods_by_name: | 
| +                    # FIXME: Check that the existing method is compatible. | 
| +                    continue | 
| +                methods.append(implicit_method) | 
|  | 
| # FIXME: maplike<> and setlike<> should also imply the presence of a | 
| # subset of keys(), values(), entries(), forEach(), has(), get(), add(), | 
|  |