'Return :class:`classes.Definition` objects, which contain all
names that point to the definition of the name under the cursor. This
is very useful for refactoring (renaming), or to show all usages of a
variable.
.. todo:: Implement additional_module_paths
:rtype: list of :class:`classes.Definition`'

def usages(self, additional_module_paths=()):

    (temp, settings.dynamic_flow_information) = (settings.dynamic_flow_information, False)
    try:
        module_node = self._get_module_node()
        user_stmt = get_statement_of_position(module_node, self._pos)
        definition_names = self._goto()
        if ((not definition_names) and isinstance(user_stmt, tree.Import)):
            name = user_stmt.get_name_of_position(self._pos)
            if (name is None):
                return []
            definition_names = [TreeNameDefinition(self._get_module(), name)]
        if (not definition_names):
            return []
        definition_names = usages.resolve_potential_imports(self._evaluator, definition_names)
        modules = set([d.get_root_context() for d in definition_names])
        modules.add(self._get_module())
        definitions = usages.usages(self._evaluator, definition_names, modules)
    finally:
        settings.dynamic_flow_information = temp
    return helpers.sorted_definitions(set(definitions))
