def _check_child_op_types(
        op: Operation, child_op_types: List[str], check_order: bool = True
    ) -> bool:
        """
        Returns ``True`` for child op types matching ``child_op_types``, otherwise returns ``False``.

                Parameters
                ----------

        param op : Current op.

        param child_op_type : Expected child op type.

        param check_order : Ensure child in given order, defaults to ``True``.
        """
        if op is None or len(op.outputs) != 1:
            return False
        child_ops = list(op.outputs[0].child_ops)
        if len(child_ops) != len(child_op_types):
            return False
        ops_types = [c.op_type for c in child_ops]
        if check_order is False:
            ops_types = sorted(ops_types)
            child_op_types = sorted(child_op_types)
        return ops_types == child_op_types

        Returns ``True`` for child op types matching ``child_op_types``, otherwise returns ``False``.

                Parameters
                ----------

        param op : Current op.

        param child_op_type : Expected child op type.

        param check_order : Ensure child in given order, defaults to ``True``.
        
coremltools/converters/mil/mil/passes/defs/optimize_normalization.py