public void applySourceMapDifferences(AddressSet originAddrs, int settings, TaskMonitor monitor)
			throws LockException {
		SourceFileManager originManager = originProgram.getSourceFileManager();
		SourceFileManager resultManager = resultProgram.getSourceFileManager();
		AddressIterator originAddrIter = originAddrs.getAddresses(true);
		while (originAddrIter.hasNext()) {
			Address originAddr = originAddrIter.next();
			try {
				Address resultAddr = originToResultTranslator.getAddress(originAddr);
				for (SourceMapEntry resultEntry : resultManager.getSourceMapEntries(resultAddr)) {
					if (resultAddr.equals(resultEntry.getBaseAddress())) {
						resultManager.removeSourceMapEntry(resultEntry);
					}
				}
				for (SourceMapEntry originEntry : originManager.getSourceMapEntries(originAddr)) {
					if (!originEntry.getBaseAddress().equals(originAddr)) {
						continue;
					}
					SourceFile originFile = originEntry.getSourceFile();
					resultManager.addSourceFile(originFile);
					resultManager.addSourceMapEntry(originFile, originEntry.getLineNumber(),
						resultAddr, originEntry.getLength());
				}
			}
			catch (AddressTranslationException e) {
				// as long as originAddrs comes from ProgramDiff.getSourceMapDifferences
				// this shouldn't happen
				throw new AssertException("couldn't translate " + originAddr + " in " +
					originProgram.getName() + " to " + resultProgram.getName());
			}
			catch (AddressOverflowException e) {
				throw new AssertException("Address overflow when merging source map entries");
			}
		}
	}
Merge the source map information from the origin program to the result program.

@param originAddrs address from origin program to merge
@param settings merge settings
@param monitor monitor
@throws LockException if invoked without exclusive access
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramMerge.java