code: def _lower_complex_dialect_ops_in_block(block):
      def help_lower_complex_dialect_ops(block):
          for op in list(block.operations):
              if _match_and_replace_dialect_op(block, op):
                  return True
          return False
  
      block_changed = True
      while block_changed:
          block_changed = help_lower_complex_dialect_ops(block)
  
imports: import functools
  from typing import Callable, Dict, Optional, Tuple
  import numpy
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import types
  from coremltools.converters.mil.mil.operation import Operation
  from coremltools.converters.mil.mil.ops.defs.complex_dialect_ops import fft_canonicalize_length_dim, fft_canonicalize_shapes_dims
  from coremltools.converters.mil.mil.passes.graph_pass import AbstractGraphPass
  from coremltools.converters.mil.mil.passes.helper import block_context_manager
  from coremltools.converters.mil.mil.passes.pass_registry import register_pass
  from coremltools.converters.mil.mil.var import ComplexVar, Var
label_desc: Use image node_id 23 for calling a global function with example usage: _lower_complex_dialect_ops_in_block(block) and returns: False, True