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_UnaryOp(self, node):
      opnd_types = self.visit(node.operand)
  
      if opnd_types is None:
          return None
  
      types = self.resolver.res_unop(
          self.namespace, self.types_in.types, node, opnd_types
      )
  
      if __debug__:
          self._check_set(types)
  
      return types
  
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 19 for calling the StmtInferrer obj's underlying member method code with example usage: obj.visit_UnaryOp(node) and returns: types, None