### Question:
FinancialAmountUtil { public static BigDecimal subtractHandlingNulls(final BigDecimal amount, final BigDecimal amountToSubtract) { if (amountToSubtract == null) return amount; return amount == null ? amountToSubtract.negate() : amount.subtract(amountToSubtract); }  static BigDecimal subtractHandlingNulls(final BigDecimal amount, final BigDecimal amountToSubtract); static BigDecimal addHandlingNulls(final BigDecimal amount, final BigDecimal amountToAdd); static BigDecimal determineVatAmount(
            final BigDecimal netAmount,
            final BigDecimal grossAmount,
            final Tax tax,
            final LocalDate now); static BigDecimal determineNetAmount(
            final BigDecimal vatAmount,
            final BigDecimal grossAmount,
            final Tax tax,
            final LocalDate now); static BigDecimal determineGrossAmount(
            final BigDecimal netAmount,
            final BigDecimal vatAmount,
            final Tax tax,
            final LocalDate now);  }### Answer:
@Test public void subtractHandlingNulls() throws Exception { BigDecimal amount; BigDecimal amountToSubtract; BigDecimal result; amount = new BigDecimal("100"); amountToSubtract = new BigDecimal("10.11"); result = FinancialAmountUtil.subtractHandlingNulls(amount, amountToSubtract); Assertions.assertThat(result).isEqualTo(new BigDecimal("89.89")); amount = new BigDecimal("100"); amountToSubtract = null; result = FinancialAmountUtil.subtractHandlingNulls(amount, amountToSubtract); Assertions.assertThat(result).isEqualTo(new BigDecimal("100")); amount = null; amountToSubtract = new BigDecimal("10.11"); result = FinancialAmountUtil.subtractHandlingNulls(amount, amountToSubtract); Assertions.assertThat(result).isEqualTo(new BigDecimal("-10.11")); amount = null; amountToSubtract = null; result = FinancialAmountUtil.subtractHandlingNulls(amount, amountToSubtract); Assertions.assertThat(result).isNull(); }