private void processWith64Function(String mangled, String expectDemangled,
			String expectedFunction, String expectedConvention, int expectedNumBytes)
			throws DemangledException {
		MicrosoftDemangler demangler = new MicrosoftDemangler();

		MicrosoftMangledContext context =
			demangler.createMangledContext(mangled, null, program64, functionAddress64);
		MicrosoftDemanglerOptions options = (MicrosoftDemanglerOptions) context.getOptions();
		// Important to set to false to standardize our test results to simple expected
		//  results.  When the C-style symbols do not create function results either because
		//  there is not a function at the address or because of the architecture, we might end
		//  up with remaining charactes because the demangler sets its index back tot he start.
		options.setErrorOnRemainingChars(false);

		// Testing Demangled hierarchy
		DemangledFunction demangledFunction = (DemangledFunction) demangler.demangle(context);
		assertEquals(expectedFunction,
			demangledFunction == null ? null : demangledFunction.toString());

		// Testing MDMang hierarchy
		MDObjectC objc = (MDObjectC) demangler.getMdItem();
		String convention = objc.getCallingConvention();
		int numParameterBytes = objc.getNumParameterBytes();
		assertEquals(expectedConvention, convention);
		assertEquals(expectedNumBytes, numParameterBytes);
		assertEquals(expectDemangled, objc.toString());
	}
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