code: def _apply_graph_transformations(
      graph, transformers
  ):  # (Graph, Iterable[Transformer]) -> Graph
      old_node_names = _extract_node_names(graph)  # type: ignore
      while True:
          for transformer in transformers:
              graph = transformer(graph)
          new_node_names = _extract_node_names(graph)  # type: ignore
          if new_node_names == old_node_names:
              break
          old_node_names = new_node_names
      return graph
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  from onnx import numpy_helper, ValueInfoProto, AttributeProto, GraphProto, NodeProto, TensorProto, TensorShapeProto
  from typing import Any, Text, Iterable, List, Dict, Sequence, Optional, Tuple, Union
  from typing_extensions import Protocol
  import numpy
label_desc: Use image node_id 4 for calling a global function with example usage: _apply_graph_transformations(graph, transformers) and returns: graph