code: def _match_pattern(op):
      if op.op_type == "sigmoid":
          # abort fusion if op output is also a block output
          if op.outputs[0] in op.enclosing_block.outputs:
              return None
          # find following op
          child_ops = op.outputs[0].child_ops
          if len(child_ops) == 1:
              mul_op_candidate = list(child_ops)[0]
              if mul_op_candidate.op_type != "mul":
                  return None
              mul_inputs_actual = {
                  mul_op_candidate.x.name,
                  mul_op_candidate.y.name,
              }
              mul_inputs_expect = {op.x.name, op.outputs[0].name}
              if mul_inputs_actual != mul_inputs_expect:
                  return None
              return mul_op_candidate
  
      return None
  
file_path: coremltools/coremltools/converters/mil/backend/mil/passes/fuse_activation_silu.py
imports: from coremltools.converters.mil.mil import Builder
  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
label_desc: Use image node_id 1 for calling a global function with example usage: _match_pattern(op) and returns: None, None, mul_op_candidate, None, None