splitArrayParts = (specimen, requiredPatt, optionalPatt) => {
    const numRequired = requiredPatt.length;
    const numOptional = optionalPatt.length;
    const requiredSpecimen = specimen.slice(0, numRequired);
    const optionalSpecimen = specimen.slice(
      numRequired,
      numRequired + numOptional,
    );
    const restSpecimen = specimen.slice(numRequired + numOptional);
    return harden({ requiredSpecimen, optionalSpecimen, restSpecimen });
  }
@param {Passable[]} specimen
@param {Pattern[]} requiredPatt
@param {Pattern[]} optionalPatt
@returns {{
  requiredSpecimen: Passable[],
  optionalSpecimen: Passable[],
  restSpecimen: Passable[]
}}