<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def load_message(obj, msg_type, msg=None, field_archiver=None):
 """ Loads message if the given type from the object. Supports reading directly to existing message. :param obj: :param msg_type: :param msg: :param field_archiver: :return: """

    msg = msg_type() if msg is None else msg

    fields = msg_type.f_specs() if msg_type else msg.__class__.f_specs()
    for field in fields:
        await load_message_field(obj, msg, field, field_archiver=field_archiver)

    return msg