private void addKeyRanges(List<KeyRange> keyRangeList, Address start, Address end,
			boolean absolute, boolean create) {
		if (start.isMemoryAddress()) {
			if (create) {
				createBaseSegments(start, end, absolute);
			}
			Address normalizedStart = absolute ? start : getShiftedAddr(start);
			Address normalizedEnd = absolute ? end : getShiftedAddr(end);
			if (normalizedStart.compareTo(normalizedEnd) > 0) {
				AddressSpace space = normalizedStart.getAddressSpace();
				addNormalizedRange(keyRangeList, normalizedStart, space.getMaxAddress(), absolute);
				addNormalizedRange(keyRangeList, space.getMinAddress(), normalizedEnd, absolute);
			}
			else {
				addNormalizedRange(keyRangeList, normalizedStart, normalizedEnd, absolute);
			}
		}
		else {
			// WARNING! intended for stack and other non-memory spaces which must be 32-bit addressable or smaller
			long minKey = encodeRelative(start, false, INDEX_MATCH);
			long maxKey = encodeRelative(end, false, INDEX_MATCH);
			keyRangeList.add(new KeyRange(minKey, maxKey));
		}
	}
Add simple key ranges where the address range lies within a single base segment for a single space.
NOTE: start and end addresses must have the same address space!
@param keyRangeList the list to store key ranges into
@param start the start address
@param end the end address
@param absolute true if the address are to be encoded as absolute (not relative to the
 image base
@param create if true, this method will add new address bases that are required to
store addresses in that database that have that address base
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/map/AddressMapDB.java