code: private synchronized Collection<GenericMatchInfo> findLocal(String text, int start, EnumSet<GenericNameType> types) {
          GenericNameSearchHandler handler = new GenericNameSearchHandler(types);
          _gnamesTrie.find(text, start, handler);
          if (handler.getMaxMatchLen() == (text.length() - start) || _gnamesTrieFullyLoaded) {
              // perfect match
              return handler.getMatches();
          }
  
          // All names are not yet loaded into the local trie.
          // Load all available names into the trie. This could be very heavy.
  
          Set<String> tzIDs = TimeZone.getAvailableIDs(SystemTimeZoneType.CANONICAL, null, null);
          for (String tzID : tzIDs) {
              loadStrings(tzID);
          }
          _gnamesTrieFullyLoaded = true;
  
          // now, try it again
          handler.resetResults();
          _gnamesTrie.find(text, start, handler);
          return handler.getMatches();
      }
docs: Returns a collection of time zone display name matches for the specified types in the
  given text at the given offset. This method only finds matches from the local trie,
  that contains 1) generic location names and 2) long/short generic partial location names,
  used by this object.
  @param text the text
  @param start the start offset in the text
  @param types the set of name types.
  @return A collection of match info.