void mergeLabels(AddressSetView p1MergeSet, ProgramMergeFilter filter, TaskMonitor monitor)
			throws CancelledException {
		int setting = filter.getFilter(ProgramMergeFilter.SYMBOLS);
		boolean replacePrimary = filter.getFilter(ProgramMergeFilter.PRIMARY_SYMBOL) != 0;
		boolean replaceFunction = filter.getFilter(ProgramMergeFilter.FUNCTIONS) != 0;

		ProgramDiffFilter symbolDiffFilter = new ProgramDiffFilter(ProgramDiffFilter.SYMBOL_DIFFS);
		AddressSetView symbolDiffSet = programDiff.getDifferences(symbolDiffFilter, monitor);
		AddressSetView diffAddrSet = p1MergeSet.intersect(symbolDiffSet);
		AddressSet diffAddrSet2 = DiffUtility.getCompatibleAddressSet(diffAddrSet, program2);

		if (setting != ProgramMergeFilter.IGNORE) {
			merger.mergeLabels(diffAddrSet2, setting, replacePrimary, replaceFunction, monitor);
		}
		else if (replaceFunction) {
			merger.replaceFunctionNames(diffAddrSet2, monitor);
		}
	}
<CODE>mergeLabels</CODE> merges all symbols and aliases
in the specified address set from the second program 
based on the current merge filter setting.
It merges them into the merge program.

@param p1MergeSet the addresses to be merged.
The addresses in this set should be derived from program1.
@param filter the current merge filter settings indicating what types
of differences should be merged.
@param monitor the task monitor for notifying the user of this merge's
progress.
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramMergeManager.java