private void processModifiedFunctionNamespace(long id, Symbol mySym, Symbol resultSym) {
		Namespace myNs = // default thunks may lie about their namespace
			isDefaultThunk(mySym) ? mySym.getProgram().getGlobalNamespace()
					: mySym.getParentNamespace();
		Namespace resultNs = // default thunks may lie about their namespace
			isDefaultThunk(resultSym) ? resultSym.getProgram().getGlobalNamespace()
					: resultSym.getParentNamespace();
		try {
			Namespace desiredNs = resolveNamespace(myPgm, myNs);
			// Is the result namespace the one we actually want it to be?
			if (desiredNs != null && (desiredNs != resultNs)) {
				// Check to see if latest and my both changed the namespace.
				boolean renamedInMy = Arrays.binarySearch(myRenameIDs, id) >= 0;
				boolean renamedInLatest = Arrays.binarySearch(latestRenameIDs, id) >= 0;
				if (renamedInMy && renamedInLatest) {
					Symbol latestSym = latestSymTab.getSymbol(id);
					Namespace myNamespace = mySym.getParentNamespace();
					Namespace latestNamespace = latestSym.getParentNamespace();
					Namespace equivNamespace = DiffUtility.getNamespace(latestNamespace, myPgm);
					if (myNamespace != equivNamespace) {
						saveRenameConflict(id); // Both Latest and My put function in new namespace.
					}
					// Else Latest already moved to the same namespace as My.
				}
				else {
					resultSym.setNamespace(desiredNs); // Moved to new namespace only in My.
				}
			}
		}
		catch (UsrException e1) {
			String msg = "Failed to set namespace to '" + myNs.getName(true) + "' for function '" +
				resultSym.getName(true) + "'.";
			Msg.showError(this, null, "Rename Function Symbol Error", msg);
		}
	}
Determine the type of changes to the symbols in the LATEST and MY (CheckedOut) program.
Changes can be symbol removed, added, changed, renamed, and set to primary.
@param monitor task monitor for displaying progress to the user
@throws CancelledException if the user cancels the merge.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/SymbolMerger.java