function _lhlValidityChecks(lhlMessage) {
  let parsedMessageElements;
  try {
    parsedMessageElements = MessageParser.parse(escapeIcuMessage(lhlMessage), {ignoreTag: true});
  } catch (err) {
    if (err.name !== 'SyntaxError') throw err;
    throw new Error(`[${err.message}] Did not find the expected syntax in message: ${err.originalMessage}`);
  }

  /**
   * @param {MessageParser.MessageFormatElement[]} elements
   */
  function validate(elements) {
    for (const element of elements) {
      if (element.type === MessageParser.TYPE.plural || element.type === MessageParser.TYPE.select) {
        // `plural`/`select` arguments can't have content before or after them.
        // See http://userguide.icu-project.org/formatparse/messages#TOC-Complex-Argument-Types
        // e.g. https://github.com/GoogleChrome/lighthouse/pull/11068#discussion_r451682796
        if (elements.length > 1) {
          throw new Error(`Content cannot appear outside plural or select ICU messages. Instead, repeat that content in each option (message: '${lhlMessage}')`);
        }

        for (const option of Object.values(element.options)) {
          validate(option.value);
        }
      }
    }
  }

  validate(parsedMessageElements);
}
Do some basic checks on an lhl message to confirm that it is valid. Future
lhl regression catching should go here.

@param {string} lhlMessage