class_docstr: Dealing with Repeat.
  
  The depth choice should already have been handled in :class:`ParameterChoiceLeafMutator` and :class:`ParameterChoiceMutator`.
code: def mutate(self, model):
      for node in self.nodes:
          # the logic here is similar to layer choice. We find cell attached to each node.
          target: Graph = model.graphs[
              cast(Cell, node.operation).cell_name
          ]
          chain = self._retrieve_chain_from_graph(target)
          # and we get the chosen depth (by value choice)
          node_in_model = cast(Node, model.get_node_by_name(node.name))
          # depth is a value choice in base model
          # but it's already mutated by a ParameterChoiceMutator here
          chosen_depth: int = node_in_model.operation.parameters[
              "depth"
          ]
          for edge in chain[chosen_depth - 1].outgoing_edges:
              edge.remove()
          target.add_edge(
              (chain[chosen_depth - 1], None),
              (target.output_node, None),
          )
          for rm_node in chain[chosen_depth:]:
              for edge in rm_node.outgoing_edges:
                  edge.remove()
              rm_node.remove()
  
          # to delete the unused parameters.
          target_node = cast(Node, model.get_node_by_name(node.name))
          cell_operation = cast(Cell, node.operation)
          target_node.update_operation(Cell(cell_operation.cell_name))
  
imports: from __future__ import annotations
  from typing import Any, List, Tuple, Dict, Iterable, cast
  from nni.mutable import MutableExpression, Categorical, frozen_context, label_scope
  from nni.nas.space import Graph, GraphModelSpace, Node, StationaryMutator, Mutator
  from nni.nas.space.graph_op import Cell
label_desc: Use image node_id 3 for calling the RepeatMutator obj's underlying member method code with example usage: obj.mutate(model) without return types