docs: public ClassNameMatchStatus addPattern(String classNamePattern) {
          boolean matchFound = false;
          if (m_classList == null) {
              m_classList = getClasspathClassFileNames();
          }
  
          String preppedName = classNamePattern.trim();
  
          // include only full classes
          // for nested classes, include the parent pattern
          int indexOfDollarSign = classNamePattern.indexOf('$');
          if (indexOfDollarSign >= 0) {
              classNamePattern = classNamePattern.substring(0, indexOfDollarSign);
          }
  
          // Substitution order is critical.
          // Keep track of whether or not this is a wildcard expression.
          // '.' is specifically not a wildcard.
          String regExPreppedName = preppedName.replace(".", "[.]");
          boolean isWildcard = regExPreppedName.contains("*");
          if (isWildcard) {
              regExPreppedName = regExPreppedName.replace("**", "[\\w.\\$]+");
              regExPreppedName = regExPreppedName.replace("*",  "[\\w\\$]*");
          }
  
          String regex = "^" + // (line start)
                         regExPreppedName +
                         "$";  // (line end)
  
          Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
  
          Matcher matcher = pattern.matcher(m_classList);
          while (matcher.find()) {
              String match = matcher.group();
              // skip nested classes; the base class will include them
              if (match.contains("$")) {
                  continue;
              }
              matchFound = true;
              m_classNameMatches.add(match);
          }
          if (matchFound) {
              return ClassNameMatchStatus.MATCH_FOUND;
          }
          else {
              if (isWildcard) {
                  return ClassNameMatchStatus.NO_WILDCARD_MATCH;
              }
              else {
                  return ClassNameMatchStatus.NO_EXACT_MATCH;
              }
          }
  
      }