Numbers { public static Number max(Number... numbers) { Number max = numbers[0]; for (Number number : numbers) { max = isGreaterThan(max, number) ? max : number; } return max; }  static Number add(Number a, Number b); static int compare(Number a, Number b); static Number divide(Number a, Number b); static Number incrementalAverage(Number running, Number number,
            int count); static boolean areEqual(Number a, Number b); @Deprecated static boolean isEqualTo(Number a, Number b); static boolean areEqualCastSafe(Object a, Object b); @Deprecated static boolean isEqualToCastSafe(Object a, Object b); static boolean isEven(Number number); static boolean isFloatingPoint(Number number); static boolean isGreaterThan(Number a, Number b); static boolean isGreaterThanOrEqualTo(Number a, Number b); static boolean isLessThan(Number a, Number b); static boolean isLessThanOrEqualTo(Number a, Number b); static boolean isOdd(Number number); static Number max(Number... numbers); static Number min(Number... numbers); static Number multiply(Number a, Number b); static double percent(Number numerator, Number denominator); static double round(Number value, int places); static Number scale(Number number, Number rawMin, Number rawMax,
            Number scaledMin, Number scaledMax); static BigDecimal toBigDecimal(Number number);  }
@Test public void testMax() { Assert.assertEquals(10, Numbers.max(1, 8, 2.4, 3.789, 10, -11)); }