private String getMemoryDifferenceMessage(final boolean noFilteredDifferencesFound,
			ProgramMemoryComparator programMemoryComparator) {
		String message;
		message = "The memory addresses defined by the two programs are not the same.\n \n" +
			(noFilteredDifferencesFound ? "However, no differences were found "
					: "Differences are highlighted ") +
			"for the addresses that are compatible between" +
			"\nthe two programs for the types of program information being compared by this Diff.";

		AddressSet addressesOnlyInOne = programMemoryComparator.getAddressesOnlyInOne();
		if (!addressesOnlyInOne.isEmpty()) {
			message +=
				"\n \nSome addresses are only in program 1 : " + addressesOnlyInOne.toString();
		}

		AddressSet addressesOnlyInTwo = programMemoryComparator.getAddressesOnlyInTwo();
		if (!addressesOnlyInTwo.isEmpty()) {
			message +=
				"\n \nSome addresses are only in program 2 : " + addressesOnlyInTwo.toString();
		}
		return message;
	}
This is the method TaskMonitor called to do the work.

@param monitor The TaskMonitor that will monitor the executing Task.  Will be null if
		  this task declared that it does not use a TaskMonitor
Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/CreateDiffTask.java