class_docstr: AST visitor that annotates each symbol name with its reaching definitions.
  
  Simultaneously, the visitor runs the dataflow analysis on each function node,
  accounting for the effect of closures. For example:
  
    def foo():
      bar = 1
      def baz():
        # bar = 1 reaches here
class_docstr_tok: ["AST","visitor","that","annotates","each","symbol","name","with","its","reaching","definitions",".","Simultaneously",",","the","visitor","runs","the","dataflow","analysis","on","each","function","node",",","accounting","for","the","effect","of","closures",".","For","example",":","def","foo","(",")",":","bar","=","1","def","baz","(",")",":","#","bar","=","1","reaches","here"]
code: def __init__(self, source_info, graphs, definition_factory):
      super(TreeAnnotator, self).__init__(source_info)
      self.allow_skips = False
      self.definition_factory = definition_factory
      self.graphs = graphs
      self.current_analyzer = None
      self.current_cfg_node = None
  
imports: import weakref
  import gast
  from nvidia.dali._autograph.pyct import anno
  from nvidia.dali._autograph.pyct import cfg
  from nvidia.dali._autograph.pyct import transformer
label_desc: Use image node_id 1 to create a new TreeAnnotator object from inherited base classes: transformer with example: obj = TreeAnnotator(source_info, graphs, definition_factory)