code: public Set<String> getVisibleIDs(String matchID) {
          Set<String> result = getVisibleIDMap().keySet();
  
          Key fallbackKey = createKey(matchID);
  
          if (fallbackKey != null) {
              Set<String> temp = new HashSet<String>(result.size());
              for (String id : result) {
                  if (fallbackKey.isFallbackOf(id)) {
                      temp.add(id);
                  }
              }
              result = temp;
          }
          return result;
      }
docs: <p>Return a snapshot of the visible IDs for this service.  This
  set will not change as Factories are added or removed, but the
  supported ids will, so there is no guarantee that all and only
  the ids in the returned set are visible and supported by the
  service in subsequent calls.</p>
  
  <p>matchID is passed to createKey to create a key.  If the
  key is not null, it is used to filter out ids that don't have
  the key as a fallback.