@Test
	public void testMergeConflictingLabel() throws Exception {
		// Diff/Merge symbols from 1002950 to 100299b

		SymbolTable symtab1 = p1.getSymbolTable();
		symtab1.createLabel(addr(0x100295d), "ONE", SourceType.USER_DEFINED);
		SymbolTable symtab2 = p2.getSymbolTable();
		symtab2.createLabel(addr(0x1002969), "ONE", SourceType.USER_DEFINED);
		AddressSet limitedAddrSet = new AddressSet(addr(0x1002950), addr(0x100299b));
		programMerge = new ProgramMergeManager(p1, p2, limitedAddrSet);

		AddressSet as = new AddressSet(addr(0x100295d));
		AddressSet as2 = new AddressSet(addr(0x1002969));

		programMerge.setDiffFilter(new ProgramDiffFilter(ProgramDiffFilter.SYMBOL_DIFFS));
		programMerge.setMergeFilter(
			new ProgramMergeFilter(ProgramMergeFilter.SYMBOLS, ProgramMergeFilter.MERGE));
		AddressSetView diffAs = programMerge.getFilteredDifferences();
		assertEquals(as.union(as2), diffAs);

		programMerge.merge(as2, TaskMonitor.DUMMY);
		assertEquals(as, programMerge.getFilteredDifferences());
		Symbol[] symbols = symtab1.getSymbols(addr(0x1002969));
		assertEquals(1, symbols.length);
		assertEquals("ONE", symbols[0].getName());
		assertEquals(p1.getGlobalNamespace(), symbols[0].getParentNamespace());
	}
Test that programMerge can replace the symbol differences between
Program1 and Program2 when program1 and program2 have the same variables
at differing places that would cause a duplicate name when applied
individually but not if all are applied.
Ghidra/Features/Base/src/test.slow/java/ghidra/program/util/ProgramMerge1Test.java