docs: function resolveAndSetMessageIdsAndSeqNos(message, state, context) {
    // Get the resolveMessageIdsAndSeqNos function to use
    const resolveMessageIdsAndSeqNos = settings.getResolveMessageIdsAndSeqNosFunction(context);
  
    if (!resolveMessageIdsAndSeqNos) {
      const errMsg = `FATAL - Cannot resolve message ids & sequence numbers, since no 'resolveMessageIdsAndSeqNos' function is configured. Configure one & redeploy ASAP!`;
      context.error(errMsg);
      throw new FatalError(errMsg);
    }
  
    const record = state.record;
    const userRecord = state.userRecord;
  
    // Get or generate & set the message's & its record's MD5 message digests on its state (if NOT previously generated)
    const md5s = state.md5s ? state.md5s : generateAndSetMD5s(message, record, userRecord, state, context);
  
    // Get or resolve & set the message's record's eventID, eventSeqNo & eventSubSeqNo on its state (if NOT previously resolved)
    const eventIdAndSeqNos = isNotBlank(state.eventID) && isNotBlank(state.eventSeqNo) ?
      getEventIdAndSeqNos(state) : resolveAndSetEventIdAndSeqNos(record, userRecord, state, context);
  
    try {
      // Resolve the message's ids, keys & sequence numbers
      const messageIdsAndSeqNos = resolveMessageIdsAndSeqNos(message, record, userRecord, eventIdAndSeqNos, md5s, context);
  
      // Cache the message's ids, keys & sequence numbers on its state
      setMessageIdsAndSeqNos(state, messageIdsAndSeqNos);
  
      return messageIdsAndSeqNos;
  
    } finally {
      // Cache a description of the message for logging purposes
      resolveAndSetMessageDesc(state);
  
      // Clear the message state's previous and next message (if any) to prepare for subsequent sorting
      setPrevMessage(state, undefined);
      setNextMessage(state, undefined);
    }
  }