@Test
	//This test checks that we can provide a mangled string for a function namespace.
	// The return String from getOriginalMangled() is not null only for this special
	// circumstance.  So, in normal processing, we should check it for non-null to
	// determine that we have a result of this form.
	// The symbol here is from our cn3.cpp source target.
	public void testFunctionNamespace() throws Exception {
		String mangled = "?fn3@?2??Bar3@Foo2b@@SAHXZ@4HA";
		String wholeTruth = "int `public: static int __cdecl Foo2b::Bar3(void)'::`3'::fn3";
		String functionNamespaceMangledTruth = "?Bar3@Foo2b@@SAHXZ";
		String functionNamespaceTruth = "public: static int __cdecl Foo2b::Bar3(void)";

		MicrosoftDemangler demangler = new MicrosoftDemangler();

		MicrosoftMangledContext context =
			demangler.createMangledContext(mangled, null, program32, address32);
		DemangledObject obj = demangler.demangle(context);
		String demangled = demangler.getMdItem().toString();
		assertEquals(wholeTruth, demangled);

		String mangledFunctionNS = obj.getNamespace().getNamespace().getMangledString();
		assertEquals(functionNamespaceMangledTruth, mangledFunctionNS);

		context = demangler.createMangledContext(mangledFunctionNS, null, program32, address32);
		demangler.demangle(context);
		demangled = demangler.getMdItem().toString();
		assertEquals(functionNamespaceTruth, demangled);
	}
This class performs extra demangler testing for special cases that do not fit
the testing pattern found in MDMangBaseTest and {@link MicrosoftDemanglerTest}
Ghidra/Features/MicrosoftDemangler/src/test/java/ghidra/app/util/demangler/microsoft/MicrosoftDemanglerExtraTest.java