} else if (index + length <= size) {  System.arraycopy(data, start + index, dst, dstOffset, length);
	public void get(byte[] dst, int dstOffset, int index, int length) {		try {		if (index >= size) {			// Index is beyond my data			if (next != null) {				next.get(dst, dstOffset, index - size, length);			} else {				throw new IndexOutOfBoundsException("at index " + index);			}		} else if (index + length <= size) {			// All bytes are within my data			System.arraycopy(data, start + index, dst, dstOffset, length);		} else {			// First byte is within my data, last is not			if (next != null) {				final int myLength = size - index;				System.arraycopy(data, start + index, dst, dstOffset, myLength);				next.get(dst, dstOffset + myLength, Math.max(0, index - myLength), length - myLength);			} else {				throw new IndexOutOfBoundsException("at index " + index);			}		}		} catch (IndexOutOfBoundsException ex) {			log.debug("get(dst, " + dstOffset + ", " + index + ", " + length + ") start=" + start + ", size=" + size);			throw new IndexOutOfBoundsException(ex.getMessage());		}	}