public AddressSetView getDetailsAddressSet(final Address p1Address) {
		Address p2Address = SimpleDiffUtility.getCompatibleAddress(p1, p1Address, p2);
		CodeUnit codeunit1 = (p1Address != null) ? l1.getCodeUnitContaining(p1Address) : null;
		CodeUnit codeunit2 = (p2Address != null) ? l2.getCodeUnitContaining(p2Address) : null;
		if ((codeunit1 == null) || (codeunit2 == null)) {
			noMem = true;
			return new AddressSet();
		}
		Address cu1Min = codeunit1.getMinAddress();
		Address cu1Max = codeunit1.getMaxAddress();
		Address cu2Min = codeunit2.getMinAddress();
		Address cu2Max = codeunit2.getMaxAddress();
		Address cu2MinAsP1Addr = SimpleDiffUtility.getCompatibleAddress(p2, cu2Min, p1);
		Address cu2MaxAsP1Addr = SimpleDiffUtility.getCompatibleAddress(p2, cu2Max, p1);

		// The min address for the second program's code unit might not be in the first program.
		Address minimum =
			((cu2MinAsP1Addr == null) || (cu1Min.compareTo(cu2MinAsP1Addr) <= 0)) ? cu1Min
					: cu2MinAsP1Addr;

		// The max address for the second program's code unit might not be in the first program.
		Address maximum =
			((cu2MaxAsP1Addr == null) || (cu1Max.compareTo(cu2MaxAsP1Addr) >= 0)) ? cu1Max
					: cu2MaxAsP1Addr;

		return new AddressSet(minimum, maximum);
	}
Gets the address set where detailed differences will be determined for details at the
indicated address. An address set is returned since the indicated address may be in different
sized code units in each of the two programs.
@param p1Address the current address where details are desired.
This address may be from program1 or program2.
@return the program1 address set for code units containing that address within the programs being diffed.
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramDiffDetails.java