### Question:
BitUtil { public static long align(long value, int alignment) { assert isPowerOfTwo(alignment) : "alignment must be a power of 2:" + alignment; return value + (long) (alignment - 1) & (long) (~(alignment - 1)); } private  BitUtil(); static boolean isPowerOfTwo(final int value); static boolean isPowerOfTwo(final long value); static int previousPowerOfTwo(int v); static long previousPowerOfTwo(long v); static int nearbyPowerOfTwo(int x); static long nearbyPowerOfTwo(long x); static int nextHighestPowerOfTwo(int v); static long nextHighestPowerOfTwo(long v); static long align(long value, int alignment); static long ceilDiv(long dividend, long divisor); static int ceilDiv(int dividend, int divisor);  }### Answer:
@Test void shouldAlignToNextMultipleOfALignment() { assertEquals(0L, align(0L, 4)); assertEquals(4L, align(1L, 4)); assertEquals(4L, align(3L, 4)); assertEquals(4L, align(4L, 4)); assertEquals(8L, align(5L, 4)); assertEquals(0L, align(-1L, 4)); assertEquals(0L, align(-3L, 4)); assertEquals(-4L, align(-4L, 4)); assertEquals(-4L, align(-5L, 4)); assertEquals(Long.MAX_VALUE - 3, align(Long.MAX_VALUE - 3, 4)); assertEquals(Long.MIN_VALUE, align(Long.MAX_VALUE, 4)); }