void mergeSourceMap(AddressSetView p1AddressSet, ProgramMergeFilter filter,
			TaskMonitor monitor) {
		int setting = filter.getFilter(ProgramMergeFilter.SOURCE_MAP);
		if (setting == ProgramMergeFilter.IGNORE) {
			return;
		}
		if (setting == ProgramMergeFilter.MERGE) {
			throw new IllegalStateException("Cannot merge source map information");
		}
		int diffType = ProgramDiffFilter.SOURCE_MAP_DIFFS;
		try {
			AddressSetView p1DiffSet =
				programDiff.getDifferences(new ProgramDiffFilter(diffType), monitor);
			AddressSet p1MergeSet = p1DiffSet.intersect(p1AddressSet);
			AddressSet p2MergeSet = DiffUtility.getCompatibleAddressSet(p1MergeSet, program2);

			merger.applySourceMapDifferences(p2MergeSet, setting, monitor);

		}
		catch (CancelledException e1) {
			// user cancellation
		}
		catch (LockException e) {
			// GUI prevents you from selecting "REPLACE" if you don't have exclusive access
			// so we shouldn't get here
			throw new AssertException("Attempting to merge source map without exclusive access");
		}
	}
Merges source map information from program 2 into program 1.
<br>
Note: This method does not consider unmapped {@link SourceFile}s, i.e., those which are
not associated with any addresses in program 2.  In particular, it will not create new
unmapped files in program 1.
 
@param p1AddressSet address set in program 1 to receive changes
@param filter merge filter
@param monitor monitor
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramMergeManager.java