void mergeFunctions(AddressSetView p1MergeSet, ProgramMergeFilter filter, TaskMonitor monitor)
			throws CancelledException {
		int setting = filter.getFilter(ProgramMergeFilter.FUNCTIONS);
		if (setting == ProgramMergeFilter.IGNORE) {
			return;
		}
		ProgramDiffFilter functionDiffFilter =
			new ProgramDiffFilter(ProgramDiffFilter.FUNCTION_DIFFS);
		AddressSetView functionDiffSet = programDiff.getDifferences(functionDiffFilter, monitor);
		AddressSetView diffAddrSet = p1MergeSet.intersect(functionDiffSet);
		AddressSet diffAddrSet2 = DiffUtility.getCompatibleAddressSet(diffAddrSet, program2);
		merger.mergeFunctions(diffAddrSet2, monitor);
	}
<CODE>mergeFunctions</CODE> merges function differences within the specified
 address set based on the current merge filter setting.

@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