def with_tags(self, *new_tags: Hashable) -> cirq.Operation:
        """Creates a new TaggedOperation, with this op and the specified tags.

        This method can be used to attach meta-data to specific operations
        without affecting their functionality.  The intended usage is to
        attach classes intended for this purpose or strings to mark operations
        for specific usage that will be recognized by consumers.  Specific
        examples include ignoring this operation in optimization passes,
        hardware-specific functionality, or circuit diagram customizability.

        Tags can be a list of any type of object that is useful to identify
        this operation as long as the type is hashable.  If you wish the
        resulting operation to be eventually serialized into JSON, you should
        also restrict the operation to be JSON serializable.

        Please note that tags should be instantiated if classes are
        used.  Raw types are not allowed.

        Args:
            *new_tags: The tags to wrap this operation in.
        """
        if not new_tags:
            return self
        return TaggedOperation(self, *new_tags)
Creates a new TaggedOperation, with this op and the specified tags.

        This method can be used to attach meta-data to specific operations
        without affecting their functionality.  The intended usage is to
        attach classes intended for this purpose or strings to mark operations
        for specific usage that will be recognized by consumers.  Specific
        examples include ignoring this operation in optimization passes,
        hardware-specific functionality, or circuit diagram customizability.

        Tags can be a list of any type of object that is useful to identify
        this operation as long as the type is hashable.  If you wish the
        resulting operation to be eventually serialized into JSON, you should
        also restrict the operation to be JSON serializable.

        Please note that tags should be instantiated if classes are
        used.  Raw types are not allowed.

        Args:
            *new_tags: The tags to wrap this operation in.
        
cirq-core/cirq/ops/raw_types.py