code: public Money withAmount(double amount, RoundingMode roundingMode) {
          return with(money.withAmount(amount).withCurrencyScale(roundingMode));
      }
docs: Returns a copy of this monetary value with the specified amount using a well-defined
  conversion from a {@code double}.
  <p>
  The returned instance will have this currency and the new amount.
  If the scale of the {@code BigDecimal} needs to be adjusted, then
  it will be rounded using the specified mode.
  <p>
  The amount is converted via {@link BigDecimal#valueOf(double)} which yields
  the most expected answer for most programming scenarios.
  Any {@code double} literal in code will be converted to
  exactly the same BigDecimal with the same scale.
  For example, the literal '1.45d' will be converted to '1.45'.
  <p>
  This instance is immutable and unaffected by this method.
  
  @param amount  the monetary amount to set in the returned instance, not null
  @param roundingMode  the rounding mode to adjust the scale, not null
  @return the new instance with the input amount set, never null