docs: def _transit_to(self, from_node, to_node, outside=False, ins_addr=None, stmt_idx=None):
          """
          Registers an edge between basic blocks in this function's transition graph.
          Arguments are CodeNode objects.
  
          :param from_node            The address of the basic block that control
                                      flow leaves during this transition.
          :param to_node              The address of the basic block that control
                                      flow enters during this transition.
          :param bool outside:        If this is a transition to another function, e.g. tail call optimization
          :return: None
          """
  
          if outside:
              self._register_nodes(True, from_node)
              if to_node is not None:
                  self._register_nodes(False, to_node)
  
              self._jumpout_sites.add(from_node)
          else:
              if to_node is not None:
                  self._register_nodes(True, from_node, to_node)
              else:
                  self._register_nodes(True, from_node)
  
          if to_node is not None:
              self.transition_graph.add_edge(from_node, to_node, type='transition', outside=outside, ins_addr=ins_addr,
                                             stmt_idx=stmt_idx
                                             )
  
          if outside:
              # this node is an endpoint of the current function
              self._add_endpoint(from_node, 'transition')
  
          # clear the cache
          self._local_transition_graph = None