//-------------------------------------------------------------------------
        private void assertMCA(MultiCurrencyAmount actual, params CurrencyAmount[] expected)
        {
            assertEquals(actual.size(), expected.Length);
            assertEquals(actual.Amounts.size(), expected.Length);
            assertEquals(actual.Amounts, ImmutableSet.copyOf(expected));
            ISet <Currency> currencies = new HashSet <Currency>();

            foreach (CurrencyAmount expectedAmount in expected)
            {
                currencies.Add(expectedAmount.Currency);
                assertEquals(actual.contains(expectedAmount.Currency), true);
                assertEquals(actual.getAmount(expectedAmount.Currency), expectedAmount);
                assertEquals(actual.getAmountOrZero(expectedAmount.Currency), expectedAmount);
            }
            assertEquals(actual.Currencies, currencies);
            Currency nonExisting = Currency.of("FRZ");

            assertEquals(actual.contains(nonExisting), false);
            assertThrowsIllegalArg(() => actual.getAmount(nonExisting));
            assertEquals(actual.getAmountOrZero(nonExisting), CurrencyAmount.zero(nonExisting));
        }