### Question:
MathUtils { @SuppressWarnings("unchecked") public static <D extends Number> D difference(D num1, Number num2) { BigDecimal res = toBigDecimal(num1).subtract(toBigDecimal(num2)); return MathUtils.cast(res, (Class<D>) num1.getClass()); } private  MathUtils(); @SuppressWarnings("unchecked") static D result(D num1, Number num2, Operator operator); @SuppressWarnings("unchecked") static D sum(D num1, Number num2); @SuppressWarnings("unchecked") static D difference(D num1, Number num2); static D cast(Number num, Class<D> type);  }### Answer:
@Test public void difference() { assertEquals(Integer.valueOf(2), MathUtils.difference(5, 3.0)); }