code: public BigMoney plus(Iterable<? extends BigMoneyProvider> moniesToAdd) {
          BigDecimal total = amount;
          for (BigMoneyProvider moneyProvider : moniesToAdd) {
              BigMoney money = checkCurrencyEqual(moneyProvider);
              total = total.add(money.amount);
          }
          return with(total);
      }
docs: Returns a copy of this monetary value with a collection of monetary amounts added.
  <p>
  This adds the specified amounts to this monetary amount, returning a new object.
  The amounts are added as though using {@link #plus(BigMoneyProvider)}.
  The amounts must be in the same currency.
  <p>
  This instance is immutable and unaffected by this method.
  
  @param moniesToAdd  the monetary values to add, no null elements, not null
  @return the new instance with the input amounts added, never null
  @throws CurrencyMismatchException if the currencies differ