private Address getAddress(long index) throws IOException {
		if (index == 0) {
			return baseAddress;
		}
		long base = baseAddress.getOffset();
		long newAddress = base + index;
		if (Long.compareUnsigned(base, newAddress) > 0) {
			throw new IOException("Invalid index: %s".formatted(Long.toUnsignedString(index)));
		}
		return baseAddress.getNewAddress(newAddress);
	}
Constructs a new {@link MemoryByteProvider} relative to the specified base address, with
the specified length.

@param memory the {@link Memory}
@param baseAddress the base address
@param maxAddress the highest address accessible by this provider (inclusive), or null
if there is no memory
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/MemoryByteProvider.java