@classmethod
def new(cls, message, content, grouping_value=None, error_message=None):
    """
        Creates a new message, based on an existing message. This has the consequence that it will be tracked together
            and the tap will not be notified until every message in the chain is properly ack'ed.

        :param message: Message instance, as received by the intersection
        :param content: Any value that can be serialized into json
        :param grouping_value: String that can be used for routing messages consistently to the same receiver
        """
    return cls(ramp_unique_id=message.ramp_unique_id, content=content,
        grouping_value=grouping_value, error_message=error_message,
        producer_uuid=message.producer_uuid)
