void mergeFunctionTags(AddressSetView p1AddressSet, ProgramMergeFilter filter,
			TaskMonitor monitor) {
		int applyTags = filter.getFilter(ProgramMergeFilter.FUNCTION_TAGS);
		int diffType = ProgramDiffFilter.FUNCTION_DIFFS;

		try {
			AddressSetView p1DiffSet =
				programDiff.getDifferences(new ProgramDiffFilter(diffType), monitor);
			AddressSet p1MergeSet = p1DiffSet.intersect(p1AddressSet);
			AddressSet p2MergeSet = DiffUtility.getCompatibleAddressSet(p1MergeSet, program2);

			merger.applyFunctionTagChanges(p2MergeSet, applyTags, null, null, monitor);
		}
		catch (CancelledException e1) {
			// user cancellation
		}
	}
Determines which addresses in the given set contain function tag differences 
between the two programs being compared. This address set is then passed
to the {@link ProgramMerge} to be processed.
 
@param p1AddressSet the address set to be merged
@param filter the types of differences to merge
@param monitor task monitor
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramMergeManager.java