@Test
	public void testSimpleRenameNamespaceAddSymbolNoConflict() throws Exception {
		mtf.initialize("NotepadMergeListingTest", new ProgramModifierListener() {

			@Override
			public void modifyLatest(ProgramDB program) {
				try {
					Namespace emptyNamespace = (Namespace) getUniqueSymbol(program,
						"EmptyNamespace", program.getGlobalNamespace()).getObject();
					emptyNamespace.getSymbol().setName("ChangedNS", SourceType.USER_DEFINED);
					assertEquals("ChangedNS", emptyNamespace.getName());
				}
				catch (Exception e) {
					Assert.fail(e.getMessage());
				}
			}

			@Override
			public void modifyPrivate(ProgramDB program) {
				try {
					SymbolTable symtab = program.getSymbolTable();
					Namespace emptyNamespace = (Namespace) getUniqueSymbol(program,
						"EmptyNamespace", program.getGlobalNamespace()).getObject();
					symtab.createLabel(addr(program, "0x1001000"), "bats", emptyNamespace,
						SourceType.USER_DEFINED);
				}
				catch (Exception e) {
					Assert.fail(e.getMessage());
				}
			}
		});

		executeMerge(ASK_USER);
		waitForMergeCompletion();

		Symbol emptyNsSymbol =
			getUniqueSymbol(resultProgram, "EmptyNamespace", resultProgram.getGlobalNamespace());
		assertNull(emptyNsSymbol);
		Symbol changedNsSymbol =
			getUniqueSymbol(resultProgram, "ChangedNS", resultProgram.getGlobalNamespace());
		Namespace changedNamespace = (Namespace) changedNsSymbol.getObject();
		assertNotNull(changedNamespace);
		Symbol batsSymbol = getUniqueSymbol(resultProgram, "bats", changedNamespace);
		assertNotNull(batsSymbol);
		assertEquals(addr("0x1001000"), batsSymbol.getAddress());
		assertEquals("bats", batsSymbol.getName());
	}
Test the merge of the versioned program's symbols in the listing.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/listing/SymbolMergeManagerNamespace1Test.java