code: public Money withCurrencyUnit(CurrencyUnit currency, RoundingMode roundingMode) {
          return with(money.withCurrencyUnit(currency).withCurrencyScale(roundingMode));
      }
docs: Returns a copy of this monetary value with the specified currency.
  <p>
  The returned instance will have the specified currency and the amount
  from this instance. If the number of decimal places differs between the
  currencies, then the amount may be rounded.
  <p>
  This instance is immutable and unaffected by this method.
  
  @param currency  the currency to use, not null
  @param roundingMode  the rounding mode to use to bring the decimal places back in line, not null
  @return the new instance with the input currency set, never null
  @throws ArithmeticException if the rounding fails