code: public static final String[] getKeywordValues(String baseName, String keyword) {
          Set<String> keywords = new HashSet<String>();
          ULocale locales[] = getAvailEntry(baseName, ICU_DATA_CLASS_LOADER).getULocaleList();
          int i;
  
          for (i = 0; i < locales.length; i++) {
              try {
                  UResourceBundle b = UResourceBundle.getBundleInstance(baseName, locales[i]);
                  // downcast to ICUResourceBundle?
                  ICUResourceBundle irb = (ICUResourceBundle) (b.getObject(keyword));
                  Enumeration<String> e = irb.getKeys();
                  while (e.hasMoreElements()) {
                      String s = e.nextElement();
                      if (!DEFAULT_TAG.equals(s) && !s.startsWith("private-")) {
                          // don't add 'default' items, nor unlisted types
                          keywords.add(s);
                      }
                  }
              } catch (Throwable t) {
                  //System.err.println("Error in - " + new Integer(i).toString()
                  // + " - " + t.toString());
                  // ignore the err - just skip that resource
              }
          }
          return keywords.toArray(new String[0]);
      }
docs: Given a tree path and keyword, return a string enumeration of all possible values for that keyword.
  @param baseName resource specifier
  @param keyword a particular keyword to consider, must match a top level resource name
  within the tree. (i.e. "collations")
  @hide draft / provisional / internal are hidden on Android