code: public List<T> match(String pattern) throws NoRuleException {
          List<T> matches = new ArrayList<>();
          if (pattern.contains("?") || pattern.contains("*")) {
              for (Map.Entry<String, T> entry : rules.entrySet()) {
                  if (FilenameUtils.wildcardMatch(entry.getKey(), pattern)) {
                      matches.add(entry.getValue());
                  }
              }
          } else {
              matches.add(getById(pattern));
          }
          return matches;
      }
docs: Matches the rules in this bucket against the given pattern that might contain
  wildcards, i.e. '*' and '?'.
  
  @param pattern
  The pattern.
  @return The list of matching rules.
  @throws NoRuleException
  If the pattern did not contained any wildcard and the referenced
  rule is not contained in the bucket.