private static Demangled getDemangled(MDQualifier qual, String mangled,
			String demangledSource) {
		Demangled demangled = null;
		if (qual.isNested()) {
			String subMangled = qual.getNested().getMangled();
			MDObjectCPP obj = qual.getNested().getNestedObject();
			if (!obj.isHashObject()) {
				MDTypeInfo typeInfo = obj.getTypeInfo();
				MDType type = typeInfo.getMDType();
				if (type instanceof MDDataType dt) {
					demangled = new DemangledType(subMangled, qual.toString(), qual.toString());
				}
				else if (type instanceof MDFunctionType ft) {
					// We currently cannot handle functions as part of a namespace, so we will just
					// treat the demangled function namespace string as a plain namespace.
					//demangled = new DemangledFunction(subMangled, qual.toString(), qual.toString());
					demangled =
						new DemangledNamespaceNode(subMangled, qual.toString(), qual.toString());
				}
			}
			if (demangled == null) {
				demangled =
					new DemangledNamespaceNode(subMangled, qual.toString(), qual.toString());
			}
		}
		else if (qual.isAnon()) {
			String orig = qual.getAnonymousName();
			demangled = new DemangledNamespaceNode(mangled, orig, qual.toString());
		}
		else if (qual.isInterface()) {
			// TODO: need to do better; setting namespace for now
			demangled = new DemangledNamespaceNode(mangled, qual.toString(), qual.toString());
		}
		else if (qual.isNameQ()) {
			// TODO: need to do better; setting namespace for now, as it looks like interface
			demangled = new DemangledNamespaceNode(mangled, qual.toString(), qual.toString());
		}
		else if (qual.isNameC()) {
			// TODO: need to do better; setting type for now, but not processed yet and not sure
			//  what it is
			demangled = new DemangledType(mangled, qual.toString(), qual.toString());
		}
		else if (qual.isLocalNamespace()) {
			String local =
				MDMangUtils.createStandardLocalNamespaceNode(qual.getLocalNamespaceNumber());
			demangled = new DemangledNamespaceNode(mangled, qual.toString(), local);
		}
		else {
			demangled = new DemangledNamespaceNode(mangled, qual.toString(), qual.toString());
		}
		return demangled;
	}
Method to convert an {@link MDDataType} into a {@link DemangledDataType}.  Demangler
needs to have already run to process the type before calling this method
@param type the type to convert
@param mangled the mangled string
@param originalDemangled the original demangled string
@return the result
Ghidra/Features/MicrosoftDemangler/src/main/java/ghidra/app/util/demangler/microsoft/MicrosoftDemanglerUtil.java