public synchronized void clearRange(long start, long end) {
		lastRange = null;
		
		// check for range before that extends into cleared area
		int pos = getPositionOfRangeBefore(new ObjectValueRange<T>(start, end, null));
		if (pos >= 0) {
			ObjectValueRange<T> range = ranges.get(pos);
			if (range.getEnd() >= start) {				// truncate previous range if it needed
				ranges.set(pos, new ObjectValueRange<T>(range.getStart(), start-1, range.getValue()));
			}
			if (range.getEnd() > end) {					// create leftover if previous range extends
														// beyond cleared area.
				ranges.add(pos+1, new ObjectValueRange<T>(end+1, range.getEnd(), range.getValue()));
			}
		}
		
		// now clear ranges until we find one past the cleared area
		pos = Math.max(0, pos+1);  						// start at 0 or 1 past the previous range
		while(pos < ranges.size()) {
			ObjectValueRange<T> range = ranges.get(pos);
			if (range.getEnd() <= end) {				// range totally inside cleared area
				ranges.remove(pos);
			}
			else if (range.getStart() > end) {			// range totally past clear area - done
				break;
			}
			else {										// intersects, fixup start
				ranges.set(pos, new ObjectValueRange<T>(end+1, range.getEnd(), range.getValue()));
			}
		}
	}
Clears any object associations within the given range.
@param start the first index in the range to be cleared.
@param end the last index in the range to be cleared.
Ghidra/Framework/Generic/src/main/java/ghidra/util/datastruct/ObjectRangeMap.java