code: public String getSymbol(Locale locale) {
          if (locale == null) {
              throw new NullPointerException("locale == null");
          }
          // Check the locale first, in case the locale has the same currency.
          LocaleData localeData = LocaleData.get(locale);
          if (localeData.internationalCurrencySymbol.equals(currencyCode)) {
              return localeData.currencySymbol;
          }
  
          // Try ICU, and fall back to the currency code if ICU has nothing.
          String symbol = ICU.getCurrencySymbol(locale, currencyCode);
          return symbol != null ? symbol : currencyCode;
      }
docs: Returns the localized currency symbol for this currency in {@code locale}.
  That is, given "USD" and Locale.US, you'd get "$", but given "USD" and a non-US locale,
  you'd get "US$".
  
  <p>If the locale only specifies a language rather than a language and a country (such as
  {@code Locale.JAPANESE} or {new Locale("en", "")} rather than {@code Locale.JAPAN} or
  {new Locale("en", "US")}), the ISO 4217 currency code is returned.
  
  <p>If there is no locale-specific currency symbol, the ISO 4217 currency code is returned.