public synchronized boolean removeRange(long start, long end) {

		boolean status = false;
		// go from start to end
		// get the page starting at start
		// get page start index and end index
		//    subtract page.getSize() from numProperties
		//    remove the entire page
		//    increment start by size of page
		// else
		//    for (i<endofPage; start++)
		//       call slow remove(index);

		while (start <= end) {
			// get page containing start
			long pageID = getPageID(start);
			short offset = getPageOffset(start);

			ValueStoragePage<T> page = getPage(pageID);

			if (page == null) {
				long nextPageId = propertyPageIndex.getNext(pageID);
				if (nextPageId < 0) {
					break;
				}
				start = nextPageId << numPageBits;
				continue;
			}

			// if start is beginning of page && end of page is still less than start
			if (offset == 0 && (pageSize + start) <= end) {

				// decrement # properties on a page
				this.numProperties -= page.getSize();

				// remove the entire page
				ht.remove(pageID);
				propertyPageIndex.remove(pageID);

				status = true;
				long nextPageId = propertyPageIndex.getNext(pageID);
				start = nextPageId << numPageBits;
			}
			else {
				// start at offset, and remove each property
				for (; offset < pageSize && start <= end; offset++, start++) {
					status |= removeFromPage(page, pageID, offset);
				}
			}
		}

		return status;
	}
Removes all property values within a given range.
@param start begin range
@param end end range, inclusive
@return true if any property value was removed; return
		false otherwise.
Ghidra/Framework/Generic/src/main/java/ghidra/util/map/ValueMap.java