@Override
	public void insert(StringBuilder builder) {
		super.insert(builder);
		String badChars = "*&( ";
		if (builder.length() != 0 && badChars.indexOf(builder.charAt(0)) == -1) {
			dmang.insertString(builder, " ");
		}
		// Separate conventionBuilder with insertion of MDBasedType is used here to reflect MSFT
		// output on underscore-based access-level types (from MDTypeInfoParser '_' prefix),
		// specifically based5 variants.  This could possibly be put into the MDMangVS2015
		//  demangler, but then we would probably need to describe the standard MDMang output
		//  as "invalid," as based-on-basedptr is supposed to be invalid. 
		StringBuilder conventionBuilder = new StringBuilder();
		convention.insert(conventionBuilder);
		if (based != null) {
			based.append(conventionBuilder);
		}
		// Following is to clean the Based5 "bug" if seen.  See comments in MDBasedAttribute.
		dmang.cleanOutput(conventionBuilder);
		dmang.insertString(builder, conventionBuilder.toString());
		//This logic moved to MdSpecialName, so that we can get a qualified name with the
		// appropriate cast-to type in the name.  Keeping here, commented out, for
		// a digestion period (20200506).
//		if (hasReturn && isTypeCast) {
//			StringBuilder retBuilder = new StringBuilder();
//			retType.insert(retBuilder);
//			dmang.appendString(builder, " ");
//			dmang.appendString(builder, retBuilder.toString());
//		}
		if (fromModifier) {
			dmang.insertString(builder, "(");
			dmang.appendString(builder, ")");
		}
		if (hasArgs & argsList != null) {
			dmang.appendString(builder, "(");
			argsList.insert(builder);
			dmang.appendString(builder, ")");
		}
		if (thisPointerCVMod != null) {
			StringBuilder cvBuilder = new StringBuilder();
			thisPointerCVMod.insert(cvBuilder);
			dmang.appendString(builder, cvBuilder.toString());
		}
		if (hasReturn && retType != null && !isTypeCast) {
			retType.insert(builder);
		}
		if (throwAttribute != null) {
			String ta = throwAttribute.toString();
			if (ta.length() != 0) {
				dmang.appendString(builder, " " + ta);
			}
		}
	}
This class represents a function within a Microsoft mangled symbol.
Ghidra/Features/MicrosoftDmang/src/main/java/mdemangler/functiontype/MDFunctionType.java