code: @Override
      public Set<CurrencyUnit> getCurrencies(CurrencyQuery query) {
          Set<CurrencyUnit> result = new HashSet<>();
          for (Locale locale : query.getCountries()) {
              try {
                  result.add(Waehrung.of(Currency.getInstance(locale)));
              } catch (IllegalArgumentException ex) {
                  LOG.log(Level.WARNING, "Cannot get currency for locale '" + locale + "':", ex);
              }
          }
          for (String currencyCode : query.getCurrencyCodes()) {
              try {
                  result.add(Waehrung.of(currencyCode));
              } catch (IllegalArgumentException ex) {
                  LOG.log(Level.WARNING, "Cannot get currency '" + currencyCode + "':", ex);
              }
          }
          for (CurrencyProviderSpi spi : Bootstrap.getServices(CurrencyProviderSpi.class)) {
              result.addAll(spi.getCurrencies(query));
          }
          return result;
      }
docs: Access all currencies matching the given query.
  
  @param query The currency query, not null.
  @return a set of all currencies found, never null.