@Test
	public void testAddSameNamespaceNoConflict() throws Exception {

		final String libname = "user32.dll";
		final String namespace = "MyNamespace";

		mtf.initialize("NotepadMergeListingTest", new MergeProgramModifier() {

			@Override
			public void initializeProgram(MergeProgram program) throws Exception {
				program.addMemory("memory", "0x0", 0x200);
			}

			@Override
			public void modifyLatest(MergeProgram mergeProgram) throws Exception {
				Library library =
					mergeProgram.createExternalLibrary(libname, SourceType.USER_DEFINED);
				mergeProgram.createNamespace(library, namespace, SourceType.USER_DEFINED);
			}

			@Override
			public void modifyPrivate(MergeProgram mergeProgram) throws Exception {
				Library library =
					mergeProgram.createExternalLibrary(libname, SourceType.USER_DEFINED);
				mergeProgram.createNamespace(library, namespace, SourceType.USER_DEFINED);
			}
		});

		executeMerge(ASK_USER);
		waitForMergeCompletion();

		Namespace externalLibrary =
			(Namespace) resultProgram.getSymbolTable().getLibrarySymbol(libname).getObject();

		Symbol myNamespaceSymbol = getUniqueSymbol(resultProgram, namespace, externalLibrary);
		assertNotNull(myNamespaceSymbol);
		assertEquals(SymbolType.NAMESPACE, myNamespaceSymbol.getSymbolType());

		Symbol conflictSymbol =
			getUniqueSymbol(resultProgram, "MyNamespace_conflict1", externalLibrary);
		assertNull(conflictSymbol);
	}
The external function merger only detects and merges source differences when a name
difference is being merged.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/listing/ExternalMergerAddTest.java