| Index: Source/bindings/scripts/interface_dependency_resolver.py | 
| diff --git a/Source/bindings/scripts/interface_dependency_resolver.py b/Source/bindings/scripts/interface_dependency_resolver.py | 
| index 0db1ca18328fd4551dcad32a81f5a54c1055dca0..f755d878ae24d6bf1de1b00a1751673e7fd550b1 100644 | 
| --- a/Source/bindings/scripts/interface_dependency_resolver.py | 
| +++ b/Source/bindings/scripts/interface_dependency_resolver.py | 
| @@ -44,16 +44,12 @@ from utilities import idl_filename_to_component, is_valid_component_dependency | 
| # Note that this moves the extended attribute from the interface to the member, | 
| # which changes the semantics and yields different code than the same extended | 
| # attribute on the main interface. | 
| -# | 
| -# Paired with the extended attribute name is its value type; needed to be able | 
| -# to correctly merge interface-level occurrences with ones that may | 
| -# be present on the method/attribute/constant. | 
| -DEPENDENCY_EXTENDED_ATTRIBUTES = { | 
| -    'Conditional': 'string', | 
| -    'PerContextEnabled': 'string', | 
| -    'RuntimeEnabled': 'string', | 
| -    'TypeChecking': 'list', | 
| -} | 
| +DEPENDENCY_EXTENDED_ATTRIBUTES = frozenset([ | 
| +    'Conditional', | 
| +    'PerContextEnabled', | 
| +    'RuntimeEnabled', | 
| +    'TypeChecking', | 
| +]) | 
|  | 
|  | 
| class InterfaceDependencyResolver(object): | 
| @@ -248,7 +244,7 @@ def transfer_extended_attributes(dependency_interface, dependency_interface_base | 
| merged_extended_attributes = dict( | 
| (key, value) | 
| for key, value in dependency_interface.extended_attributes.iteritems() | 
| -        if key in DEPENDENCY_EXTENDED_ATTRIBUTES.keys()) | 
| +        if key in DEPENDENCY_EXTENDED_ATTRIBUTES) | 
|  | 
| # A partial interface's members are implemented as static member functions | 
| # in a separate C++ class. This class name is stored in | 
| @@ -280,20 +276,8 @@ def transfer_extended_attributes(dependency_interface, dependency_interface_base | 
| 'ImplementedAs', dependency_interface_basename)) | 
|  | 
| def update_attributes(attributes, extras): | 
| -        def to_list(x): | 
| -            if type(x) is list: | 
| -                return x | 
| -            else: | 
| -                return [x] | 
| - | 
| for key, value in extras.items(): | 
| -            if key in attributes: | 
| -                # Interface-level extended attributes do not take precedence | 
| -                # over same attribute at the method/attribute/const-level. | 
| -                # If the attribute value is a list, the two are combined. | 
| -                if DEPENDENCY_EXTENDED_ATTRIBUTES[key] == 'list': | 
| -                    attributes[key] = to_list(attributes[key]) + to_list(value) | 
| -            else: | 
| +            if key not in attributes: | 
| attributes[key] = value | 
|  | 
| for attribute in dependency_interface.attributes: | 
|  |