### Question:
NumericUtils { public static Number addNumbers(Number one, Number other) { return calculate(one, other, Long::sum, Double::sum, BigDecimal::add); }  static Number addNumbers(Number one, Number other); static Number subtractNumbers(Number one, Number other); static Number multiplyNumbers(Number one, Number other);  }### Answer:
@Test void testAddNumbers() { assertThat(NumericUtils.addNumbers(-4, 3)).isEqualTo(-1); assertThat(NumericUtils.addNumbers(-0.1, 0.1)).isEqualTo(0.0); assertThat(NumericUtils.addNumbers(0.9, 0.1)).isEqualTo(1.0); assertThat(NumericUtils.addNumbers(4.3f, 7.1f)).isEqualTo(11.4f); assertThat(NumericUtils.addNumbers((short) 4, (short) 7)).isEqualTo((short) 11); assertThat(NumericUtils.addNumbers((short) 30000, (short) 20000)).isEqualTo(50000L); assertThat(NumericUtils.addNumbers(4L, 7.3)).isEqualTo(11.3); assertThat(NumericUtils.addNumbers(100000000000000L, 100000000000000L)).isEqualTo(200000000000000L); assertThat(NumericUtils.addNumbers(2000000000, 2000000000)).isEqualTo(4000000000L); assertThat(NumericUtils.addNumbers(Decimal128.fromNumber(1L), Decimal128.fromNumber(2.5))).isEqualTo(Decimal128.fromNumber(3.5)); assertThatExceptionOfType(UnsupportedOperationException.class) .isThrownBy(() -> NumericUtils.addNumbers(new BigDecimal(1), new BigDecimal(1))) .withMessage("cannot calculate on 1 and 1"); }