code: public BigMoney minus(BigDecimal amountToSubtract) {
          MoneyUtils.checkNotNull(amountToSubtract, "Amount must not be null");
          if (amountToSubtract.compareTo(BigDecimal.ZERO) == 0) {
              return this;
          }
          BigDecimal newAmount = amount.subtract(amountToSubtract);
          return BigMoney.of(currency, newAmount);
      }
docs: Returns a copy of this monetary value with the amount subtracted.
  <p>
  This subtracts the specified amount from this monetary amount, returning a new object.
  <p>
  No precision is lost in the result.
  The scale of the result will be the maximum of the two scales.
  For example,'USD 25.95' minus '3.021' gives 'USD 22.929'.
  <p>
  This instance is immutable and unaffected by this method.
  
  @param amountToSubtract  the monetary value to subtract, not null
  @return the new instance with the input amount subtracted, never null