code: def get_node_edges(
      self,
      node: relay.Expr,
      relay_param: Dict[str, tvm.runtime.NDArray],
      node_to_id: Dict[relay.Expr, str],
  ) -> Tuple[Union[VizNode, None], List[VizEdge]]:
      if isinstance(node, relay.Var):
          node = VizNode(
              node_to_id[node],
              "AwesomeVar",
              f"name_hint {node.name_hint}",
          )
          # no edge is introduced. So return an empty list.
          return node, []
  
      # delegate other types to the other parser.
      return self._delegate.get_node_edges(
          node, relay_param, node_to_id
      )
  
file_path: tvm/gallery/how_to/work_with_relay/using_relay_viz.py
imports: from typing import Dict, Union, Tuple, List
  import tvm
  from tvm import relay
  from tvm.contrib import relay_viz
  from tvm.contrib.relay_viz.interface import VizEdge, VizNode, VizParser
  from tvm.contrib.relay_viz.terminal import TermGraph, TermPlotter, TermVizParser
label_desc: Use image node_id 2 for calling the YourAwesomeParser obj's underlying member method code with example usage: obj.get_node_edges(node, relay_param, node_to_id) and returns: self, node,  list