@Test
	public void testMultipleTagAndListingConflicts() throws Exception {

		mtf.initialize(notepad, new OriginalProgramModifierListener() {

			@Override
			public void modifyLatest(ProgramDB program) throws Exception {
				editTagName(program, TAG_NAME_A, TAG_NAME_A_LATEST);
				deleteTag(program, TAG_NAME_B);
			}

			@Override
			public void modifyPrivate(ProgramDB program) throws Exception {
				editTagName(program, TAG_NAME_A, TAG_NAME_A_MY);
				addTagToFunction(TAG_NAME_B, program, "100194b");
			}

			@Override
			public void modifyOriginal(ProgramDB program) throws Exception {
				FunctionTagManager tagManager = getTagManager(program);
				tagManager.createFunctionTag(TAG_NAME_A, "");
				tagManager.createFunctionTag(TAG_NAME_B, "");
				tagManager.createFunctionTag(TAG_NAME_C, "");
			}
		});

		executeMerge(ASK_USER);
		chooseFunctionTagButton(MY_BUTTON, true);
		chooseListingFunctionTagButton(MY_BUTTON, addr("100194b"), false);
		waitForMergeCompletion();

		assertTrue(isTagInProgram(TAG_NAME_A_MY, mtf.getResultProgram()));
		assertTrue(isTagInProgram(TAG_NAME_B, mtf.getResultProgram()));
		assertTrue(isTagInProgram(TAG_NAME_C, mtf.getResultProgram()));

		assertTrue(isTagInFunction(TAG_NAME_B, mtf.getResultProgram(), "100194b"));
	}
Tests that we can correctly recognize multiple conflicts with both the tag
merger and the tag listing merger. In this case we do the following:
1. Add tags A, B and C to both programs
2. Rename A in Latest, and delete B
3. Rename A and C in My, and add B to a function
4. Verify we have 2 conflicts (the edit of A, and the add of a 
   deleted tag - B, in My).

@throws Exception
Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/function/tags/FunctionTagMergeTest.java