def METHOD_NAME(op_types):
    """The class decorator used to register all QOperator subclasses."""
    def decorator_op(cls):
        assert cls.__name__.endswith(
            "Operator"
        ), "The name of subclass of QOperator should end with 'Operator' substring."
        if cls.__name__[: -len("Operator")] in QOPERATORS:  # pragma: no cover
            raise ValueError("Cannot have two operators with the same name.")
        for single_op_type in [op_type.strip() for op_type in op_types.split(",")]:
            if single_op_type.startswith("QLinear") or single_op_type in [
                "QGemm",
                "QAttention",
                "QEmbedLayerNormalization",
                "ArgMax",
                "Reshape",
                "Transpose",
                "Squeeze",
                "Unsqueeze",
                "Gather",
                "MaxPool",
                "Pad",
                "Resize",
                "Split",
            ]:
                QOPERATORS[single_op_type] = cls
        return cls
    return decorator_op