public synchronized void clearRange(Address start, Address end) {
		lastRange = null;

		// check for range before that extends into cleared area
		int pos = getPositionOfRangeBefore(new AddressValueRange<T>(start, end, null));
		if (pos >= 0) {
			AddressValueRange<T> range = ranges.get(pos);
			if (range.getEnd().compareTo(start) >= 0) {				// truncate previous range if it needed
				ranges.set(pos,
					new AddressValueRange<T>(range.getStart(), start.previous(), range.getValue()));
			}
			if (range.getEnd().compareTo(end) > 0) {					// create leftover if previous range extends
				// beyond cleared area.
				ranges.add(pos + 1,
					new AddressValueRange<T>(end.next(), 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()) {
			AddressValueRange<T> range = ranges.get(pos);
			if (range.getEnd().compareTo(end) <= 0) {				// range totally inside cleared area
				ranges.remove(pos);
			}
			else if (range.getStart().compareTo(end) > 0) {			// range totally past clear area - done
				break;
			}
			else {										// intersects, fixup start
				ranges.set(pos,
					new AddressValueRange<T>(end.next(), 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/SoftwareModeling/src/main/java/ghidra/program/database/register/AddressRangeObjectMap.java