class_docstr: Runs liveness analysis on each of the functions defined in the AST.
  
  If a function defined other local functions, those will have separate CFGs.
  However, dataflow analysis needs to tie up these CFGs to properly emulate the
  effect of closures. In the case of liveness, the parent function's live
  variables must account for the variables that are live at the entry of each
  subfunction. For example:
  
    def foo():
      # baz is live from here on
      def bar():
        print(baz)
  
  This analyzer runs liveness analysis on each individual function, accounting
  for the effect above.
class_docstr_tok: ["Runs","liveness","analysis","on","each","of","the","functions","defined","in","the","AST",".","If","a","function","defined","other","local","functions",",","those","will","have","separate","CFGs",".","However",",","dataflow","analysis","needs","to","tie","up","these","CFGs","to","properly","emulate","the","effect","of","closures",".","In","the","case","of","liveness",",","the","parent","function","'s","live","variables","must","account","for","the","variables","that","are","live","at","the","entry","of","each","subfunction",".","For","example",":","def","foo","(",")",":","#","baz","is","live","from","here","on","def","bar","(",")",":","print","(","baz",")","This","analyzer","runs","liveness","analysis","on","each","individual","function",",","accounting","for","the","effect","above","."]
code: def visit_If(self, node):
      node = self.generic_visit(node)
      node = self._block_statement_live_out(node)
      return self._block_statement_live_in(node, node.test)
  
imports: import gast
  from tensorflow.python.autograph.pyct import anno
  from tensorflow.python.autograph.pyct import cfg
  from tensorflow.python.autograph.pyct import transformer
  from tensorflow.python.autograph.pyct.static_analysis import annos
label_desc: Use image node_id 8 for calling the TreeAnnotator obj's underlying member method code with example usage: obj.visit_If(node) and returns: self