### Question:
Money implements FxConvertible<Money>, Comparable<Money>, Serializable { public Money minus(Money amountToSubtract) { ArgChecker.notNull(amountToSubtract, "amountToSubtract"); ArgChecker.isTrue(amountToSubtract.getCurrency().equals(currency), "Unable to subtract amounts in different currencies"); return new Money(currency, amount.subtract(amountToSubtract.amount)); } private  Money(Currency currency, BigDecimal amount); static Money zero(Currency currency); static Money of(CurrencyAmount currencyAmount); static Money of(Currency currency, double amount); static Money of(Currency currency, BigDecimal amount); @FromString static Money parse(String amountStr); Currency getCurrency(); BigDecimal getAmount(); Money plus(Money amountToAdd); Money minus(Money amountToSubtract); Money multipliedBy(long valueToMultiplyBy); boolean isZero(); boolean isPositive(); boolean isNegative(); CurrencyAmount toCurrencyAmount(); Money convertedTo(Currency resultCurrency, BigDecimal fxRate); @Override Money convertedTo(Currency resultCurrency, FxRateProvider rateProvider); @Override int compareTo(Money other); @Override boolean equals(Object obj); @Override int hashCode(); @Override @ToString String toString();  }### Answer:
@Test public void testMinus() throws Exception { Money a = Money.of(GBP, 1.23); Money b = Money.of(GBP, 0.34); assertThat(a.minus(b)).isEqualTo(Money.of(GBP, 0.89)); assertThat(b.minus(a)).isEqualTo(Money.of(GBP, -0.89)); }