# Path: pycc/asttools/references.py
# def add_parent_references(node):
# def add_sibling_references(node):
# def copy_location(new_node, old_node):
# def get_top_node(node):
# 
# Path: pycc/asttools/name.py
# NAME_SOURCE = enum.Enum(('DEFINED', 'ADOPTED', 'IMPORTED', 'BUILTIN'))
# def declaration(node, start=None):
# def name_source(node, declared=None):
#     def visit_Name(self, node):
#     def visit_alias(self, node):
#     def visit_FunctionDef(self, node):
#     def visit_Global(self, node):
#     def visit_arguments(self, node):
#     def visit_arg(self, node):
# class NameVisitorMixin(object):
# 
# Path: pycc/asttools/scope.py
# SCOPE_TYPE = enum.Enum(("MODULE", "FUNCTION", "CLASS"))
# def is_scope(node):
# def scope_type(node):
# def parent_scope(node):
# def child_scopes(node):
# 
# Path: pycc/asttools/visitor.py
# class NodeVisitor(object):
# class NodeVisitorIter(NodeVisitor):
# class NodeTransformer(NodeVisitor):
#     def __init__(self, node):
#     def generic_visit(self, node):
#     def visit(self):
#     def visit(self):
#     def __init__(self, *args, **kwargs):
#     def modified(self):
#     def _replace(self, new, old):
#     def visit(self):


import ast
from ..asttools import references as reftools
from ..asttools import name as nametools
from ..asttools import scope as scopetools
from ..asttools import visitor as visitortools
    def node(self):
        """Get the raw ast.Name node."""
        return self._node

    @property
    def declaration(self):
        """Get the first declaration of the Name."""
        return self._declaration

    @property
    def source(self):
        """Get the asttools.name.NAME_SOURCE of the Name."""
        return self._source

    @property
    def token(self):
        """Get the string which represents the Name."""
        return self._node.id

    @property
    def uses(self):
        """Get an iterable of all uses of the name.

        If the source is asttools.name.NAME_SOURCE.BUILTIN this iterable will
        contain all uses of the name in the module. Otherwise only uses within
        the lexical scope of the declaration are contained within the iterable.
        """
        search_path = self._declaration_scope
        if search_path is None:


# Path: pycc/asttools/references.py
# def add_parent_references(node):
# def add_sibling_references(node):
# def copy_location(new_node, old_node):
# def get_top_node(node):
# 
# Path: pycc/asttools/name.py
# NAME_SOURCE = enum.Enum(('DEFINED', 'ADOPTED', 'IMPORTED', 'BUILTIN'))
# def declaration(node, start=None):
# def name_source(node, declared=None):
#     def visit_Name(self, node):
#     def visit_alias(self, node):
#     def visit_FunctionDef(self, node):
#     def visit_Global(self, node):
#     def visit_arguments(self, node):
#     def visit_arg(self, node):
# class NameVisitorMixin(object):
# 
# Path: pycc/asttools/scope.py
# SCOPE_TYPE = enum.Enum(("MODULE", "FUNCTION", "CLASS"))
# def is_scope(node):
# def scope_type(node):
# def parent_scope(node):
# def child_scopes(node):
# 
# Path: pycc/asttools/visitor.py
# class NodeVisitor(object):
# class NodeVisitorIter(NodeVisitor):
# class NodeTransformer(NodeVisitor):
#     def __init__(self, node):
#     def generic_visit(self, node):
#     def visit(self):
#     def visit(self):
#     def __init__(self, *args, **kwargs):
#     def modified(self):
#     def _replace(self, new, old):
#     def visit(self):


# Path: pycc/astwrappers/name.py
import ast
from ..asttools import references as reftools
from ..asttools import name as nametools
from ..asttools import scope as scopetools
from ..asttools import visitor as visitortools

    def node(self):
        """Get the raw ast.Name node."""
        return self._node

    @property
    def declaration(self):
        """Get the first declaration of the Name."""
        return self._declaration

    @property
    def source(self):
        """Get the asttools.name.NAME_SOURCE of the Name."""
        return self._source

    @property
    def token(self):
        """Get the string which represents the Name."""
        return self._node.id

    @property
    def uses(self):
        """Get an iterable of all uses of the name.

        If the source is asttools.name.NAME_SOURCE.BUILTIN this iterable will
        contain all uses of the name in the module. Otherwise only uses within
        the lexical scope of the declaration are contained within the iterable.
        """
        search_path = self._declaration_scope
        if search_path is None:


            search_path = reftools.get_top_node(self._node)