### Question:
NumericUtils { public static Number multiplyNumbers(Number one, Number other) { return calculate(one, other, (a, b) -> a * b, (a, b) -> a * b, BigDecimal::multiply); }  static Number addNumbers(Number one, Number other); static Number subtractNumbers(Number one, Number other); static Number multiplyNumbers(Number one, Number other);  }### Answer:
@Test void testMultiplyNumbers() { assertThat(NumericUtils.multiplyNumbers(-4, 3)).isEqualTo(-12); assertThat((double) NumericUtils.multiplyNumbers(0.1, 0.1)).isEqualTo(0.01, Offset.offset(0.0001)); assertThat((double) NumericUtils.multiplyNumbers(1.1, 0.1)).isEqualTo(0.11, Offset.offset(0.0001)); assertThat(NumericUtils.multiplyNumbers(2.0f, 4.0f)).isEqualTo(8.0f); assertThat(NumericUtils.multiplyNumbers((short) 4, (short) 7)).isEqualTo((short) 28); assertThat(NumericUtils.multiplyNumbers((short) 400, (short) 700)).isEqualTo(280000L); assertThat(NumericUtils.multiplyNumbers(100000000000000L, 10)).isEqualTo(1000000000000000L); assertThat(NumericUtils.multiplyNumbers(50000, 100000)).isEqualTo(5000000000L); assertThat(NumericUtils.multiplyNumbers(Decimal128.fromNumber(1000), Decimal128.fromNumber(2000.5))).isEqualTo(Decimal128.fromNumber(2000500.0)); assertThatExceptionOfType(UnsupportedOperationException.class) .isThrownBy(() -> NumericUtils.multiplyNumbers(new BigDecimal(1), new BigDecimal(1))) .withMessage("cannot calculate on 1 and 1"); }