private static DemangledObject processItem(MDParsableItem item, String mangled,
			String demangledSource) throws DemangledException {
		DemangledObject result = null;
		if (item instanceof MDObjectReserved) {
			result = processObjectReserved((MDObjectReserved) item, mangled, demangledSource);
		}
		else if (item instanceof MDObjectCodeView codeView) {
			result = processObjectCPP(codeView, mangled, demangledSource);
			result.setSpecialPrefix(codeView.getPrefix());
		}
		else if (item instanceof MDObjectCPP objCpp) { // Base class of MDObjectBracket/MDObjectCodeView.
			result = processObjectCPP(objCpp, mangled, demangledSource);
		}
		else if (item instanceof MDObjectC objC) {
			result = processObjectC(objC, mangled, demangledSource);
		}
		else if (item instanceof MDDataType dataType) {
			// TODO: how do we fix this? DemangledDataType extends DemangledType, but not
			// DemangleObject...
			throw new DemangledException("DemangledDataType instead of DemangledObject");
			//result = processDataType(null, dataType, mangled, demangledSource);
			// object = getDemangledDataType();
		}
		else if (item instanceof MDTemplateNameAndArguments templateNameAndArgs) {
			result = processTemplate(templateNameAndArgs, mangled, demangledSource);
		}
		return result;
	}
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