### Question:
MathFunctions { public static int getHighestSetBit(final BigInteger value, final int highestBit) { for (int i = highestBit; i >= 0; i--) { if (value.testBit(i)) { return i; } } return -1; } private  MathFunctions(); static int getHighestSetBit(final BigInteger value, final int highestBit); static int max(final int firstValue, final int... values); static double log2(final double value);  }### Answer:
@Test public void testGetHighestSetBit() { Assert.assertEquals(13, MathFunctions.getHighestSetBit(BigInteger.valueOf(0x2c34L), 100)); Assert.assertEquals(0, MathFunctions.getHighestSetBit(BigInteger.valueOf(0x1L), 100)); Assert.assertEquals(9, MathFunctions.getHighestSetBit(BigInteger.valueOf(0x13a4L), 10)); Assert.assertEquals(-1, MathFunctions.getHighestSetBit(BigInteger.valueOf(0x2c00L), 7)); }