class_docstr: Runs type inference on a single AST statement.
  
  This visitor annotates most nodes with type information. It also sets types
  for the symbols modified by this statement in its types_out property.
  
  Note: this inferrer is able to capture side effects of functions, however,
  these side effects will not be applied to the current expression. Doing so
  would create too much of a dependence on the runtime's internal rules about
  execution order.
  Example:
  
    def f():
      nonlocal a
      a = 1
      return a
  
    a = 0.0
    b = f() + a  # a = float; side effect of f() ignored
    print(a)  # a = int; side effect of f() accounted for
code: def visit_FunctionDef(self, node):
      f_name = qual_names.QN(node.name)
  
      if node.decorator_list:
          raise NotImplementedError(
              "decorators: {}".format(node.decorator_list)
          )
  
      ret_types = None
      if node.returns:
          ret_types, _ = self.resolver.res_name(
              self.namespace,
              self.types_in.types,
              anno.Basic.QN.of(node.returns),
          )
          if __debug__:
              self._check_set(ret_types)
  
      if ret_types is None:
          ret_types = {Any}
  
      f_types = set()
      for rt in ret_types:
          f_types.add(Callable[[Any], rt])
  
      self.new_symbols[f_name] = f_types
      # The definition of a function is an expression, hence has no return value.
      return None
  
imports: import itertools
  from typing import Any, Callable, Dict, Set
  import gast
  from tensorflow.python.autograph.pyct import anno
  from tensorflow.python.autograph.pyct import cfg
  from tensorflow.python.autograph.pyct import qual_names
  from tensorflow.python.autograph.pyct import transformer
  from tensorflow.python.autograph.pyct.static_analysis import activity
  from tensorflow.python.autograph.pyct.static_analysis import annos
label_desc: Use image node_id 11 for calling the StmtInferrer obj's underlying member method code with example usage: obj.visit_FunctionDef(node) and returns: None