private void mergeAdditions(FunctionTagManagerDB tagManagerMY,
			FunctionTagManagerDB tagManagerLATEST, FunctionTagManagerDB tagManagerRESULT,
			long[] myAdditionIDs, long[] latestAdditionIDs) {

		String CONFLICT_REASON = "Identical tag names added, but comments differ";

		for (long id : myAdditionIDs) {
			FunctionTag myTag = tagManagerMY.getFunctionTag(id);
			FunctionTag latestTag = tagManagerLATEST.getFunctionTag(id);

			// Sanity check: If myTag isn't valid, just return and do nothing. If 
			// the latest tag is invalid, just continue with adding what is in My.
			if (myTag == null) {
				return;
			}

			// If the names are the same, but the comments are different...
			if (latestTag != null && myTag.getName().equals(latestTag.getName()) &&
				!(myTag.getComment().equals(latestTag.getComment()))) {
				tagConflicts.put(id, CONFLICT_REASON);
				continue;
			}

			tagManagerRESULT.createFunctionTag(myTag.getName(), myTag.getComment());
		}

		// Note: The Result program already has Latest changes in it, so no need to update 
		// it here. If this wasn't the case we'd have to do the following:
		// for (long id : latestAdditionIDs) {
		//	  FunctionTag tag = tagManagerLATEST.getFunctionTag(id);
		//	  tagManagerRESULT.createFunctionTag(tag.getName(), tag.getComment());
		// }
	}
Merges tags that have been added.

CONFLICT CASES: Name is the same, comment is different.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/FunctionTagMerger.java