class_docstr: Default graph compiler.
  It applies its topology to the input token sequence to compile the supervision graph.
  
  Based on https://github.com/k2-fsa/snowfall/blob/master/snowfall/training/ctc_graph.py
code: def compile(
      self, targets: torch.Tensor, target_lengths: torch.Tensor
  ) -> "k2.Fsa":
      token_ids_list = [
          t[:l].tolist() for t, l in zip(targets, target_lengths)
      ]
      label_graph = k2.linear_fsa(token_ids_list).to(self.device)
      label_graph.aux_labels = label_graph.labels.clone()
      supervision_graphs = compose_with_self_loops(
          self.base_graph, label_graph
      )
      supervision_graphs = k2.arc_sort(supervision_graphs).to(
          self.device
      )
  
      # make sure the gradient is not accumulated
      supervision_graphs.requires_grad_(False)
      return supervision_graphs
  
imports: from typing import Optional, Tuple
  import torch
  from nemo.collections.asr.parts.k2.utils import add_self_loops, compose_with_self_loops, intersect_with_self_loops
  from nemo.core.utils.k2_guard import k2
label_desc: Use image node_id 3 for calling the CtcTopologyCompiler obj's underlying member method code with example usage: obj.compile(targets, target_lengths) and returns: supervision_graphs