@Override
	public DemangledObject demangle(MangledContext context) throws DemangledException {
		if (!(context instanceof MicrosoftMangledContext mContext)) {
			throw new DemangledException("Wrong context type");
		}
		if (!(context.getOptions() instanceof MicrosoftDemanglerOptions options)) {
			throw new DemangledException("MicrosoftDemanglerOptions expected");
		}
		String mangled = context.getMangled();

		demangler = new MDMangGhidra();
		demangler.setMangledSymbol(mangled);
		demangler.setErrorOnRemainingChars(options.errorOnRemainingChars());
		demangler.setDemangleOnlyKnownPatterns(options.demangleOnlyKnownPatterns());
		demangler.setArchitectureSize(mContext.getArchitectureSize());
		demangler.setIsFunction(mContext.shouldInterpretAsFunction());
		try {
			item = demangler.demangle();
			if (item == null) {
				return null;
			}
			String originalDemangled = item.toString();
			demangler.getOutputOptions().setUseEncodedAnonymousNamespace(true);
			object =
				MicrosoftDemanglerUtil.convertToDemangledObject(item, mangled, originalDemangled);
			if (object != null) {
				object.setMangledContext(context);
			}
			return object;
		}
		catch (MDException e) {
			DemangledException de = new DemangledException(true);
			de.initCause(e);
			throw de;
		}
	}
A class for demangling debug symbols created using Microsoft Visual Studio.
Ghidra/Features/MicrosoftDemangler/src/main/java/ghidra/app/util/demangler/microsoft/MicrosoftDemangler.java