if (next != null) { final int myLength = size - index; System.arraycopy(src, srcOffset, data, start + index, myLength); next.set(index - myLength, src, srcOffset + myLength, length - myLength); } else { throw new IndexOutOfBoundsException("at index " + index); }
data[start + index] = (byte) value;
	public void set(int index, byte[] src, int srcOffset, int length) {		if (index >= size) {			// Index is beyond my data			if (next != null) {				next.set(index - size, src, srcOffset, length);			} else {				throw new IndexOutOfBoundsException("at index " + index);			}		} else if (index + length <= size) {			// All bytes are within my data			System.arraycopy(src, srcOffset, data, start + index, length);		} else {			// First byte is within my data, last is not			if (next != null) {				final int myLength = size - index;				System.arraycopy(src, srcOffset, data, start + index, myLength);				next.set(index - myLength, src, srcOffset + myLength, length - myLength);			} else {				throw new IndexOutOfBoundsException("at index " + index);			}		}	}