code: def _lower_complex_stft(op: Operation):
      is_complex = types.is_complex(op.input.dtype)
  
      # check parameters for validity
      if op.win_length and op.win_length.val > op.n_fft.val:
          raise ValueError(
              "Window length must be less than or equal to n_fft"
          )
      if is_complex and op.onesided and op.onesided.val:
          raise ValueError("Onesided is only valid for real inputs")
  
      real, imag = _stft(
          op.input.real if is_complex else op.input,
          op.input.imag if is_complex else None,
          op.n_fft,
          op.hop_length,
          op.win_length,
          op.window,
          op.normalized,
          op.onesided,
          before_op=op,
      )
  
      return _wrap_complex_output(op.outputs[0], real, imag)
  
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 19 for calling a global function with example usage: _lower_complex_stft(op) and returns: _wrap_complex_output