### Question:
ArrayByteSequence extends ByteSequence implements Serializable { @Override public byte byteAt(int i) { if (i < 0) { throw new IllegalArgumentException("i < 0, " + i); } if (i >= length) { throw new IllegalArgumentException("i >= length, " + i + " >= " + length); } return data[offset + i]; } ArrayByteSequence(byte[] data);  ArrayByteSequence(byte[] data, int offset, int length);  ArrayByteSequence(String s);  ArrayByteSequence(ByteBuffer buffer);  ArrayByteSequence(ByteSequence byteSequence); @Override byte byteAt(int i); @Override byte[] getBackingArray(); @Override boolean isBackedByArray(); @Override int length(); @Override int offset(); @Override ByteSequence subSequence(int start, int end); @Override byte[] toArray(); @Override String toString();  }### Answer:
@Test(expected = IllegalArgumentException.class) public void testInvalidByteAt0() { abs.byteAt(-1); }
@Test(expected = IllegalArgumentException.class) public void testInvalidByteAt1() { abs.byteAt(data.length); }