public final void delete(Address start, Address end) {
		if (start.compareTo(end) > 0) {
			throw new IllegalArgumentException(
				"Start address (" + start + ") is greater than end address (" + end + ")");
		}
		RedBlackEntry<Address, Address> entry = rbTree.getEntryLessThanEqual(start);
		if (entry == null) {
			entry = rbTree.getFirst();
		}
		else if (entry.getValue().compareTo(start) < 0) {
			entry = entry.getSuccessor();
		}

		while (entry != null) {
			Address minRange = entry.getKey();
			Address maxRange = entry.getValue();
			switch (compareRange(start, end, minRange, maxRange)) {
				case RANGE1_COMPLETELY_AFTER_RANGE2:
					// delete range is after current range so ok, move to next range to consider
					entry = entry.getSuccessor();
					break;
				case RANGE1_COMPLETELY_BEFORE_RANGE2:
					// delete range is before range, so done
					return;
				case RANGE1_EQUALS_RANGE2:
					// delete range matches range, delete it and done
					deleteRangeNode(entry);
					return;
				case RANGE1_STARTS_AT_RANGE2_ENDS_AFTER_RANGE2:
				case RANGE1_STARTS_BEFORE_RANGE2_ENDS_AFTER_RANGE2:
				case RANGE1_STARTS_BEFORE_RANGE2_ENDS_AT_RANGE2_END:
					// delete range spans current range, delete current range and move to next range
					entry = deleteRangeNode(entry);
					break;
				case RANGE1_STARTS_AT_RANGE2_ENDS_BEFORE_RANGE2:
				case RANGE1_STARTS_BEFORE_RANGE2_ENDS_INSIDE_RANGE2:
					// delete first part of range and then done.
					deleteRangeNode(entry);
					createRangeNode(end.next(), maxRange);
					return;
				case RANGE1_STARTS_INSIDE_RANGE2_ENDS_AFTER_RANGE2:
				case RANGE1_STARTS_INSIDE_RANGE2_ENDS_AT_RANGE2:
					// delete back part of range, and get next range
					updateRangeEndAddress(entry, start.previous());
					entry = entry.getSuccessor();
					break;
				case RANGE1_STARTS_INSIDE_RANGE2_ENDS_INSIDE_RANGE2:
					// delete range is inside, update current range and add in back part of range
					updateRangeEndAddress(entry, start.previous());
					createRangeNode(end.next(), maxRange);
					return;

			}
		}

	}
Deletes a range of addresses from this set
@param start the starting address of the range to be removed
@param end the ending address of the range to be removed (inclusive)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/address/AddressSet.java