public static AddressSet getCompatibleAddressSet(AddressRange range, Program otherProgram,
			boolean exactMatchOnly) {
		AddressSpace addrSpace = range.getMinAddress().getAddressSpace();
		AddressSpace otherSpace = getCompatibleAddressSpace(addrSpace, otherProgram);
		if (otherSpace == null) {
			return null;
		}
		Range<Long> r = Range.between(range.getMinAddress().getOffset(),
			range.getMaxAddress().getOffset(), unsignedLongComparator);
		Range<Long> otherSpaceRange = Range.between(otherSpace.getMinAddress().getOffset(),
			otherSpace.getMaxAddress().getOffset(), unsignedLongComparator);
		if (!r.isOverlappedBy(otherSpaceRange)) {
			return null;
		}
		r = r.intersectionWith(otherSpaceRange);
		Address min = otherSpace.getAddressInThisSpaceOnly(r.getMinimum());
		Address max = otherSpace.getAddressInThisSpaceOnly(r.getMaximum());
		AddressSet set = new AddressSet(min, max);
		if (exactMatchOnly && set.getNumAddresses() != range.getLength()) {
			return null;
		}
		return set;
	}
Convert an address range from one program to a compatible address set in the 
specified otherProgram.  Only memory addresses will be considered.
If none of the range can be converted then null is returned.
@param range address range to convert
@param otherProgram target program which corresponds to the returned address range.
@param exactMatchOnly if true and a one-to-one address mapping cannot be identified null 
will be returned, otherwise a partial set may be returned or null if no valid translation
was found.
@return compatible address set or null
Ghidra/Features/Base/src/main/java/ghidra/program/util/DiffUtility.java