### Question:
DefaultMtuSplitter implements DataSplitter { @Nullable @Override public byte[] chunk(@NonNull final byte[] message, @IntRange(from = 0) final int index, @IntRange(from = 20) final int maxLength) { final int offset = index * maxLength; final int length = Math.min(maxLength, message.length - offset); if (length <= 0) return null; final byte[] data = new byte[length]; System.arraycopy(message, offset, data, 0, length); return data; }  @Nullable @Override byte[] chunk(@NonNull final byte[] message,
						@IntRange(from = 0) final int index,
						@IntRange(from = 20) final int maxLength);  }### Answer:
@Test public void chunk_23() { final int MTU = 23; final DefaultMtuSplitter splitter = new DefaultMtuSplitter(); final byte[] result = splitter.chunk(text.getBytes(), 1, MTU - 3); assertArrayEquals(text.substring(MTU - 3, 2 * (MTU - 3)).getBytes(), result); }
@Test public void chunk_43() { final int MTU = 43; final DefaultMtuSplitter splitter = new DefaultMtuSplitter(); final byte[] result = splitter.chunk(text.getBytes(), 2, MTU - 3); assertArrayEquals(text.substring(2 * (MTU - 3), 3 * (MTU - 3)).getBytes(), result); }
@Test public void chunk_end() { final int MTU = 23; final DefaultMtuSplitter splitter = new DefaultMtuSplitter(); final byte[] result = splitter.chunk(text.getBytes(), 200, MTU - 3); assertNull(result); }