private void createBaseSegments(Address minAddress, Address maxAddress, boolean absolute) {

		long minBase;
		long maxBase;

		if (!absolute && isInDefaultAddressSpace(minAddress)) {
			minBase = getNormalizedOffset(minAddress) & BASE_MASK;
			maxBase = getNormalizedOffset(maxAddress) & BASE_MASK;
		}
		else {
			minBase = minAddress.getOffset() & BASE_MASK;
			maxBase = maxAddress.getOffset() & BASE_MASK;
		}

		long minSegment = minBase >>> 32;
		long maxSegment = maxBase >>> 32;
		long numBases;
		if (minSegment <= maxSegment) {
			numBases = maxSegment - minSegment + 1;
		}
		else {
			numBases = maxSegment + (0x100000000L - minSegment) + 1;
		}

		if (numBases > 2) {
			throw new UnsupportedOperationException("Can't create address bases for a range that" +
				"extends across more than two upper 32 bit segments!");
		}

		getBaseAddressIndex(minAddress.getNewAddress(minBase), false, INDEX_CREATE);
		if (minBase != maxBase) {
			getBaseAddressIndex(minAddress.getNewAddress(maxBase), false, INDEX_CREATE);
		}
	}
Create all memory base segments within the specified range.
NOTE: minAddress and maxAddress must have the same address space!
@param minAddress start address of the range
@param maxAddress last address of the range
@param absolute if the address are absolute and not relative
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/map/AddressMapDB.java