@Override
	public byte[] readBytes(long index, long length) throws IOException {
		if (index < 0 || index >= subLength) {
			throw new IOException("Invalid index: " + index);
		}
		if (index + length > subLength) {
			throw new IOException("Unable to read past EOF: " + index + ", " + length);
		}
		return provider.readBytes(subOffset + index, length);
	}
Constructs a {@link ByteProviderWrapper} around the specified {@link ByteProvider},
constrained to a subsection of the provider.

@param provider the {@link ByteProvider} to wrap
@param subOffset the offset in the {@link ByteProvider} of where to start the new
  {@link ByteProviderWrapper} 
@param subLength the length of the new {@link ByteProviderWrapper} 
@param fsrl {@link FSRL} identity of the file this ByteProvider represents
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/ByteProviderWrapper.java