class CaseRuleExceptions {

  private static final Set<String> exceptions = loadExceptions(
    "/de/eigennamen_gross.txt",  // Premium
    "/de/case_rule_exceptions.txt"
  );

  private CaseRuleExceptions() {
  }

  public static Set<String> getExceptions() {
    return exceptions;
  }

  public static Set<StringMatcher[]> getExceptionPatterns() {<FILL_FUNCTION_BODY>}

  private static Set<String> loadExceptions(String... paths) {
    Set<String> result = new HashSet<>();
    for (String path : paths) {
      List<String> lines = JLanguageTool.getDataBroker().getFromResourceDirAsLines(path);
      for (String line : lines) {
        if (line.isEmpty() || line.startsWith("#")) {
          continue;
        }
        if (Character.isWhitespace(line.charAt(0)) || Character.isWhitespace(line.charAt(line.length()-1))) {
          throw new IllegalArgumentException("Invalid line in " + path + ", starts or ends with whitespace: '" + line + "'");
        }
        result.add(line);
      }
    }
    return Collections.unmodifiableSet(result);
  }

}

    ObjectOpenHashSet<StringMatcher[]> exceptionPatterns = new ObjectOpenHashSet<>(250);
    for (String phrase : exceptions) {
      String[] parts = StringUtils.split(phrase, ' ');
      StringMatcher[] patterns = new StringMatcher[parts.length];
      for (int j = 0; j < parts.length; j++) {
        patterns[j] = StringMatcher.regexp(parts[j]);
      }
      exceptionPatterns.add(patterns);
    }
    exceptionPatterns.trim();
    return Collections.unmodifiableSet(exceptionPatterns);
  
<no_super_class>