class_docstr: CFG visitor that propagates type information across statements.
class_docstr_tok: ["CFG","visitor","that","propagates","type","information","across","statements","."]
code: def _update_closure_types(self, ast_node, types):
      existing_types = anno.Static.CLOSURE_TYPES.of(ast_node, None)
  
      if existing_types is None:
          existing_types = {}
          anno.Static.CLOSURE_TYPES.add_to(ast_node, existing_types)
  
      for k, v in types.types.items():
          if k in existing_types:
              existing_types[k].update(v)
          else:
              existing_types[k] = set(v)
  
imports: import itertools
  from typing import Any, Callable, Dict, Set
  import gast
  from nvidia.dali._autograph.pyct import anno
  from nvidia.dali._autograph.pyct import cfg
  from nvidia.dali._autograph.pyct import qual_names
  from nvidia.dali._autograph.pyct import transformer
  from nvidia.dali._autograph.pyct.static_analysis import activity
  from nvidia.dali._autograph.pyct.static_analysis import annos
label_desc: Use image node_id 3 for calling the Analyzer obj's underlying member method code with example usage: obj._update_closure_types(ast_node, types) without return types