code: public BigMoney convertedTo(CurrencyUnit currency, BigDecimal conversionMultipler) {
          MoneyUtils.checkNotNull(currency, "CurrencyUnit must not be null");
          MoneyUtils.checkNotNull(conversionMultipler, "Multiplier must not be null");
          if (this.currency == currency) {
              if (conversionMultipler.compareTo(BigDecimal.ONE) == 0) {
                  return this;
              }
              throw new IllegalArgumentException("Cannot convert to the same currency");
          }
          if (conversionMultipler.compareTo(BigDecimal.ZERO) < 0) {
              throw new IllegalArgumentException("Cannot convert using a negative conversion multiplier");
          }
          BigDecimal newAmount = amount.multiply(conversionMultipler);
          return BigMoney.of(currency, newAmount);
      }
docs: Returns a copy of this monetary value converted into another currency
  using the specified conversion rate.
  <p>
  The scale of the result will be the sum of the scale of this money and
  the scale of the multiplier. If desired, the scale of the result can be
  adjusted to the scale of the new currency using {@link #withCurrencyScale()}.
  <p>
  This instance is immutable and unaffected by this method.
  
  @param currency  the new currency, not null
  @param conversionMultipler  the conversion factor between the currencies, not null
  @return the new multiplied instance, never null
  @throws IllegalArgumentException if the currency is the same as this currency and the
  conversion is not one; or if the conversion multiplier is negative