### Question:
MultiCurrencyScenarioArray implements ScenarioArray<MultiCurrencyAmount>, ScenarioFxConvertible<CurrencyScenarioArray>, ImmutableBean, Serializable { @Override public Stream<MultiCurrencyAmount> stream() { return amounts.stream(); } private  MultiCurrencyScenarioArray(
      MultiCurrencyAmountArray amounts); static MultiCurrencyScenarioArray of(MultiCurrencyAmountArray amounts); static MultiCurrencyScenarioArray of(MultiCurrencyAmount... amounts); static MultiCurrencyScenarioArray of(List<MultiCurrencyAmount> amounts); static MultiCurrencyScenarioArray of(int size, IntFunction<MultiCurrencyAmount> amountFunction); static MultiCurrencyScenarioArray of(Map<Currency, DoubleArray> values); Set<Currency> getCurrencies(); DoubleArray getValues(Currency currency); @Override int getScenarioCount(); @Override MultiCurrencyAmount get(int index); @Override Stream<MultiCurrencyAmount> stream(); @Override CurrencyScenarioArray convertedTo(Currency reportingCurrency, ScenarioFxRateProvider fxRateProvider); static MultiCurrencyScenarioArray total(Iterable<CurrencyScenarioArray> arrays); static Collector<CurrencyScenarioArray, ?, MultiCurrencyScenarioArray> toMultiCurrencyScenarioArray(); static MultiCurrencyScenarioArray.Meta meta(); @Override MultiCurrencyScenarioArray.Meta metaBean(); MultiCurrencyAmountArray getAmounts(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void stream() { List<MultiCurrencyAmount> expected = ImmutableList.of( MultiCurrencyAmount.of( CurrencyAmount.of(Currency.GBP, 20), CurrencyAmount.of(Currency.USD, 30), CurrencyAmount.of(Currency.EUR, 40)), MultiCurrencyAmount.of( CurrencyAmount.of(Currency.GBP, 21), CurrencyAmount.of(Currency.USD, 32), CurrencyAmount.of(Currency.EUR, 43)), MultiCurrencyAmount.of( CurrencyAmount.of(Currency.GBP, 22), CurrencyAmount.of(Currency.USD, 33), CurrencyAmount.of(Currency.EUR, 44))); assertThat(VALUES_ARRAY.stream().collect(toList())).isEqualTo(expected); }