def METHOD_NAME(cls, message, message_queue=None):
    topic = message.topic.name
    system_properties = message.system_properties
    message_id = system_properties.message_id
    body_digest = system_properties.body_digest
    check_sum = body_digest.checksum
    raw = message.body
    corrupted = False
    digest_type = body_digest.type
    # Digest Type check
    if digest_type == ProtoDigestType.CRC32:
        expected_check_sum = format(binascii.crc32(raw) & 0xFFFFFFFF, '08X')
        if not expected_check_sum == check_sum:
            corrupted = True
    elif digest_type == ProtoDigestType.MD5:
        expected_check_sum = hashlib.md5(raw).hexdigest()
        if not expected_check_sum == check_sum:
            corrupted = True
    elif digest_type == ProtoDigestType.SHA1:
        expected_check_sum = hashlib.sha1(raw).hexdigest()
        if not expected_check_sum == check_sum:
            corrupted = True
    elif digest_type in [ProtoDigestType.unspecified, None]:
        print(f"Unsupported message body digest algorithm, digestType={digest_type}, topic={topic}, messageId={message_id}")
    # Body Encoding check
    body_encoding = system_properties.body_encoding
    body = raw
    if body_encoding == ProtoEncoding.GZIP:
        body = gzip.decompress(message.body)
    elif body_encoding in [ProtoEncoding.IDENTITY, None]:
        pass
    else:
        print(f"Unsupported message encoding algorithm, topic={topic}, messageId={message_id}, bodyEncoding={body_encoding}")
    tag = system_properties.tag
    message_group = system_properties.message_group
    delivery_time = system_properties.delivery_timestamp
    keys = list(system_properties.keys)
    born_host = system_properties.born_host
    born_time = system_properties.born_timestamp
    delivery_attempt = system_properties.delivery_attempt
    queue_offset = system_properties.queue_offset
    properties = {key: value for key, value in message.user_properties.items()}
    receipt_handle = system_properties.receipt_handle
    return cls(message_id, topic, body, tag, message_group, delivery_time, keys, properties, born_host,
               born_time, delivery_attempt, message_queue, receipt_handle, queue_offset, corrupted)