code: public Collection<GenericMatchInfo> find(String text, int start, EnumSet<GenericNameType> genericTypes) {
          if (text == null || text.length() == 0 || start < 0 || start >= text.length()) {
              throw new IllegalArgumentException("bad input text or range");
          }
          // Find matches in the local trie
          Collection<GenericMatchInfo> results = findLocal(text, start, genericTypes);
  
          // Also find matches in the TimeZoneNames
          Collection<MatchInfo> tznamesMatches = findTimeZoneNames(text, start, genericTypes);
          if (tznamesMatches != null) {
              // transform matches and append them to local matches
              for (MatchInfo match : tznamesMatches) {
                  if (results == null) {
                      results = new LinkedList<GenericMatchInfo>();
                  }
                  results.add(createGenericMatchInfo(match));
              }
          }
          return results;
      }
docs: Returns a collection of time zone display name matches for the specified types in the
  given text at the given offset.
  @param text the text
  @param start the start offset in the text
  @param genericTypes the set of name types.
  @return A collection of match info.