<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register(self, key, value, type_info):
 """ Registers a callable with the specified key and type info. `key` String key to identify a callable. `value` Callable object. `type_info` Dictionary with type information about the value provided. """


        # check for existing action
        old_action = self._actions.get(key)

        # update existing type info if value hasn't changed
        if old_action == value and key in self._type_info:
            self._type_info[key].update(type_info)
        else:
            self._type_info[key] = dict(type_info)

        super(ExtRegistry, self).register(key, value)