public void moveAddressRange(Address fromAddr, Address toAddr, long length, TaskMonitor monitor)
			throws AddressOverflowException, CancelledException {
		lock.acquire();
		try {

			Address rangeEnd = fromAddr.addNoWrap(length - 1);

			AddressSet currentSet = new AddressSet();
			AddressRangeIterator rangeIter = propertyMap.getAddressRanges(fromAddr, rangeEnd);
			while (rangeIter.hasNext()) {
				monitor.checkCancelled();
				currentSet.add(rangeIter.next());
			}

			propertyMap.clearRange(fromAddr, rangeEnd);

			rangeIter = currentSet.getAddressRanges();
			while (rangeIter.hasNext()) {
				monitor.checkCancelled();
				AddressRange range = rangeIter.next();
				Address startAddr = range.getMinAddress();
				Address endAddr = range.getMaxAddress();
				long offset = startAddr.subtract(fromAddr);
				startAddr = toAddr.add(offset);
				offset = endAddr.subtract(fromAddr);
				endAddr = toAddr.add(offset);
				propertyMap.paintRange(startAddr, endAddr, FIELD);
			}
		}
		finally {
			lock.release();
		}
	}
Move the address range to a new starting address.
@param fromAddr move from address
@param toAddr move to address
@param length number of address to move
@param monitor
@throws CancelledException
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/util/AddressSetPropertyMapDB.java