code: def visitName(self, node):
      if isinstance(node.ctx, _ast.Store):
          self.modified.add(node.id)
  
      elif isinstance(node.ctx, _ast.Load):
          self.used.update(node.id)
  
      if not self.graph.has_node(node.id):
          self.graph.add_node(node.id)
          if isinstance(node.ctx, _ast.Load):
              self.undefined.add(node.id)
  
      for ctx_var in self.context_names:
          if not self.graph.has_edge(node.id, ctx_var):
              self.graph.add_edge(node.id, ctx_var)
  
      return {node.id}
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from ...asttools import Visitor, visit_children
  import _ast
  from ...asttools.visitors.symbol_visitor import get_symbols
label_desc: Use image node_id 2 for calling the CollectNodes obj's underlying member method code with example usage: obj.visitName(node) and returns: unknown