private void splitAddressWrappingRecordIfExists() throws IOException {
		if (alreadyCheckedForWrappingRecord) {
			return;
		}
		alreadyCheckedForWrappingRecord = true;

		DBRecord wrappingRecord = getAddressWrappingRecord();
		if (wrappingRecord == null) {
			return;
		}

		List<AddressRange> ranges = getRangesForRecord(wrappingRecord);

		if (ranges.size() != 2) {
			throw new AssertException("wrapping records should have two ranges!");
		}

		Field value = getValue(wrappingRecord);

		// replace wrapping record with two non wrapping records
		rangeMapTable.deleteRecord(wrappingRecord.getKey());
		createRecord(ranges.get(0), value);
		createRecord(ranges.get(1), value);

	}
Returns a list of AddressRanges that this record represents. This record's key is the 
encoded start key and it "TO_COL" has the end address key. But since a non-zero image base
can cause that key range to be backwards in address space which means it represents a range
that starts in the upper addresses and then "wraps" to a lower address, resulting in two
address ranges, one and the bottom of the address space and one at the top of the address
space.
@param record a record that represents a contiguous range (in key space) of same values 
@return a list of AddressRanges that this record represents.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/util/AddressRangeMapDB.java