code: public static String getDisplayName(
          TZID tzid,
          NameStyle style,
          Locale locale
      ) {
  
          String canonical = tzid.canonical();
          int index = canonical.indexOf('~');
          ZoneModelProvider provider = DEFAULT_PROVIDER;
          String zoneID = canonical;
  
          if (index >= 0) {
              String pname = canonical.substring(0, index);
              if (!pname.equals(NAME_DEFAULT)) {
                  provider = PROVIDERS.get(pname);
                  if (provider == null) {
                      return canonical;
                  }
              }
              zoneID = canonical.substring(index + 1);
          }
  
          ZoneNameProvider np = provider.getSpecificZoneNameRepository();
  
          if (np == null) {
              np = NAME_PROVIDER;
          }
  
          String name = np.getDisplayName(zoneID, style, locale);
  
          if (name.isEmpty()) {
              if (np != NAME_PROVIDER) {
                  name = NAME_PROVIDER.getDisplayName(zoneID, style, locale);
              }
              name = (name.isEmpty() ? canonical : name);
          }
  
          return name;
  
      }
docs: /*[deutsch]
  <p>Liefert den anzuzeigenden Zeitzonennamen. </p>
  
  <p>Ist der Zeitzonenname nicht ermittelbar, wird die ID der Zeitzone geliefert. </p>
  
  @param   tzid                timezone id
  @param   style               name style
  @param   locale              language setting
  @return  localized timezone name for display purposes
  @see     java.util.TimeZone#getDisplayName(boolean,int,Locale)
  java.util.TimeZone.getDisplayName(boolean,int,Locale)
  @see     Locale#getDefault()
  @see     #getID()
  @since   3.20/4.16