docs: function greedyDisjunction (aliases, matchingGroup) {
    aliases = aliases.slice() // copy
  
    // sort by longest string first
    aliases.sort(function (a, b) {
      let lenCompare = b.length - a.length
      if (lenCompare !== 0) {
        return lenCompare < 0 ? -1 : 1
      }
      // else sort by normal string comparison
      return a < b ? -1 : 1
    })
  
    let res = '('
  
    if (!matchingGroup) {
      res += '?:' //  non-matching group
    }
  
    aliases.forEach(function (alias, i) {
      if (!alias) {
        return // e.g. the "major" quality can be expressed as an empty string, so skip in the regex
      }
      if (i > 0) {
        res += '|'
      }
      res += quote(alias)
    })
  
    return res + ')'
  }