mustMatch = (specimen, patt, label = undefined) => {
    let innerError;
    try {
      if (checkMatches(specimen, patt, identChecker, undefined)) {
        return;
      }
    } catch (er) {
      innerError = er;
    }
    // should only throw
    checkMatches(specimen, patt, assertChecker, label);
    const outerError = makeError(
      X`internal: ${label}: inconsistent pattern match: ${q(patt)}`,
    );
    if (innerError !== undefined) {
      annotateError(outerError, X`caused by ${innerError}`);
    }
    throw outerError;
  }
Returning normally indicates success. Match failure is indicated by
throwing.

@param {any} specimen
@param {Pattern} patt
@param {string|number} [label]