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():
      def f():
        pass
      def g():
        # `def f` 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","(",")",":","def","f","(",")",":","pass","def","g","(",")",":","#","`","def","f","`","reaches","here"]
code: def _proces_function(self, node):
      parent_analyzer = self.current_analyzer
      subgraph = self.graphs[node]
  
      if (
          self.current_analyzer is not None
          and node in self.current_analyzer.graph.index
      ):
          cfg_node = self.current_analyzer.graph.index[node]
          defined_in = self.current_analyzer.in_[cfg_node].value
      else:
          defined_in = ()
  
      analyzer = Analyzer(subgraph, defined_in)
      analyzer.visit_forward()
  
      self.current_analyzer = analyzer
      node = self.generic_visit(node)
      self.current_analyzer = parent_analyzer
      return node
  
imports: import gast
  from tensorflow.python.autograph.pyct import anno
  from tensorflow.python.autograph.pyct import cfg
  from tensorflow.python.autograph.pyct import transformer
label_desc: Use image node_id 2 for calling the TreeAnnotator obj's underlying member method code with example usage: obj._proces_function(node) and returns: node