class_docstr: Information about 1 nesting level of if/else statement.
  
  Keeps the current branch (if we entered if/else branch) and the data nodes that were
  produced in their scopes. Keeps the mapping of DataNodes produced in higher scopes that
  were already split for use in this scope.
docstr: Register the outputs of split node that were produced from the source_data_node
  (or its descendant on this scope, the shortcut node).
  
  Parameters
  ----------
  source_data_node : DataNode
      Original source node that was looked up, record for faster consecutive lookups
  producer_node : DataNode
      The closest node on the path from source_data_node to this split
  true_node : DataNode
      True branch split
  false_node : DataNode
      False branch split
docstr_tok: ["Register","the","outputs","of","split","node","that","were","produced","from","the","source_data_node","(","or","its","descendant","on","this","scope",",","the","shortcut","node",")",".","Parameters","--","--","--","--","--","source_data_node",":","DataNode","Original","source","node","that","was","looked","up",",","record","for","faster","consecutive","lookups","producer_node",":","DataNode","The","closest","node","on","the","path","from","source_data_node","to","this","split","true_node",":","DataNode","True","branch","split","false_node",":","DataNode","False","branch","split"]
code: def add_split(
      self, source_data_node, producer_node, true_node, false_node
  ):
      """Register the outputs of split node that were produced from the source_data_node
      (or its descendant on this scope, the shortcut node).
  
      Parameters
      ----------
      source_data_node : DataNode
          Original source node that was looked up, record for faster consecutive lookups
      producer_node : DataNode
          The closest node on the path from source_data_node to this split
      true_node : DataNode
          True branch split
      false_node : DataNode
          False branch split
      """
      self.splits[_data_node_repr(source_data_node)] = (
          true_node,
          false_node,
      )
      # Record the direct preceding node as the producer:
      self.splits[_data_node_repr(producer_node)] = (
          true_node,
          false_node,
      )
      self.produced_true |= {_data_node_repr(true_node)}
      self.produced_false |= {_data_node_repr(false_node)}
  
imports: from nvidia.dali import _autograph
  from nvidia.dali.data_node import DataNode
  from nvidia.dali import fn
  from nvidia.dali._autograph.utils import ag_logging
  from nvidia.dali._autograph.operators import variables
  from contextlib import contextmanager
  from enum import Enum
  import tree
label_desc: Use image node_id 5 for calling the _StackEntry obj's underlying member method code with example usage: obj.add_split(source_data_node, producer_node, true_node, false_node) without return types