code: public BigMoney withAmount(BigDecimal amount) {
          MoneyUtils.checkNotNull(amount, "Amount must not be null");
          if (this.amount.equals(amount)) {
              return this;
          }
          return BigMoney.of(currency, amount);
      }
docs: Returns a copy of this monetary value with the specified amount.
  <p>
  The returned instance will have this currency and the new amount.
  The scale of the returned instance will be that of the specified BigDecimal.
  <p>
  This instance is immutable and unaffected by this method.
  
  @param amount  the monetary amount to set in the returned instance, not null
  @return the new instance with the input amount set, never null