### Question:
CRC16 { public static int CCITT_Kermit(@NonNull final byte[] data, final int offset, final int length) { return CRC(0x1021, 0x0000, data, offset, length, true, true, 0x0000); } private  CRC16(); static int CCITT_Kermit(@NonNull final byte[] data, final int offset, final int length); static int CCITT_FALSE(@NonNull final byte[] data, final int offset, final int length); static int MCRF4XX(@NonNull final byte[] data, final int offset, final int length); static int AUG_CCITT(@NonNull final byte[] data, final int offset, final int length); static int ARC(@NonNull final byte[] data, final int offset, final int length); static int MAXIM(@NonNull final byte[] data, final int offset, final int length); static int CRC(final int poly, final int init, @NonNull final byte[] data, final int offset, final int length, final boolean refin, final boolean refout, final int xorout);  }### Answer:
@Test public void CCITT_Kermit_A() { final byte[] data = new byte[] { 'A' }; assertEquals(0x538D, CRC16.CCITT_Kermit(data, 0, 1)); }
@Test public void CCITT_Kermit_123456789() { final byte[] data = "123456789".getBytes(); assertEquals(0x2189, CRC16.CCITT_Kermit(data, 0, 9)); }
@Test public void CCITT_Kermit_123456789_offset() { final byte[] data = "SPACE123456789".getBytes(); assertEquals(0x2189, CRC16.CCITT_Kermit(data, 5, 9)); }
@Test public void CCITT_Kermit_empty() { final byte[] data = new byte[0]; assertEquals(0x0000, CRC16.CCITT_Kermit(data, 0, 1)); }