private ObjectValueRange<T> adjustRemainingRangeForOverlap(T object, 
			ObjectValueRange<T> newRange, int insertionIndex, long newEnd) {
		
		if ( insertionIndex >= ranges.size() ) {
			return newRange; // no record to adjust
		}
		
		ObjectValueRange<T> range = ranges.get(insertionIndex);
		if ( range.getStart() > newEnd+1 ) { // no overlap
			return newRange;
		}
		
		if (valuesEqual(range.getValue(), object)) { // merge records
			ranges.remove(insertionIndex);
			newRange = new ObjectValueRange<T>(newRange.getStart(), range.getEnd(), object);
		}
		// overwrite the old record to start past the end of the new range
		else {
			ranges.set(insertionIndex, new ObjectValueRange<T>(newEnd+1, range.getEnd(), range.getValue()));
		}
			
		return newRange;
	}
Associates the given object with all indices in the given range. The object may be null,
but an assocition is still established.  Use the clearRange() method to remove associations.
@param start the start of the range.
@param end the end (inclusive) of the range.
@param object the object to associate with the given range.
Ghidra/Framework/Generic/src/main/java/ghidra/util/datastruct/ObjectRangeMap.java