class MultipleCurrencyAmount implements ImmutableBean,
    Iterable<CurrencyAmount>, Serializable {

  public MultipleCurrencyAmount with(final Currency currency, final double amount) {
    ArgumentChecker.notNull(currency, "currency");
    TreeMap<Currency, CurrencyAmount> copy = new TreeMap<Currency, CurrencyAmount>(_currencyAmountMap);
    copy.put(currency, CurrencyAmount.of(currency, amount));
    return new MultipleCurrencyAmount(copy);
  }

  private  MultipleCurrencyAmount(ImmutableSortedMap<Currency, CurrencyAmount> currencyAmountMap);
  private  MultipleCurrencyAmount(
      SortedMap<Currency, CurrencyAmount> currencyAmountMap);

}