### Question:
SignalUtil { public static List<byte[]> split(byte[] data,int chunkSize) { if(chunkSize < 1) { throw new IllegalArgumentException("Bad chunkzize " + chunkSize); } ArrayList<byte[]> split = new ArrayList<>(); for(int i=0; i < data.length; i = i+chunkSize) { byte[] out = SignalUtil.copyRange(data, new ByteRange(i,Math.min(i+chunkSize,data.length))); split.add(out); } return split; }  static int intFromTwoBytes(byte[] bytes); static byte[] fourBytesFromInt(int n); static byte[] twoBytesFromInt(int n); static int intFromFourBytes(byte[] bytes); static int unsign(byte by); static byte sign(int by); static byte[] joinBytesArrays(byte[]... args); static byte[] joinBytesArrays(List<byte[]> args); static int multipleOfFour(int start); static byte[] xor(byte[] a, byte[] b); static long computeCRC32(byte[] bytes); static long computeCRC32c(byte[] bytes); static byte[] flipBytes(byte[] bytes); static byte[] longToFourBytes(long l); static byte[] longToFourBytesFlip(long l); static byte[] longToBytes(long l); static byte[] padToMultipleOfFour(byte[] bytes); static long bytesToLong(byte[] l); static byte[] md5key(byte[] key); static byte[] hmacSha1(byte[] data, byte[] key); static ByteRange range(int a, int b); static byte[] copyRange(byte[] bytes,ByteRange range); static List<byte[]> split(byte[] data,int chunkSize); static byte[] randomBytes(int lgt);  }### Answer:
@Test public void testSplit() { List<byte[]> res = SignalUtil.split(new byte[]{0,0,0,3,3,3,5},3); assertArrayEquals(Arrays.asList(new byte[]{0,0,0},new byte[]{3,3,3},new byte[]{5}).toArray(),res.toArray()); }