private DemangledDataType parseParameter(String parameter) {

		Matcher castMatcher = CAST_PATTERN.matcher(parameter);
		if (castMatcher.matches()) {
			// special case: template parameter with a cast (just make the datatype
			// be the name of the template parameter, since it will just be a display
			// attribute for the templated type)
			return new DemangledDataType(mangledSource, demangledSource, parameter);
		}

		Matcher matcher = VARARGS_IN_PARENS.matcher(parameter);
		if (matcher.matches()) {
			String inside = matcher.group(1);
			DemangledDataType dt = parseDataType(inside);
			dt.setVarArgs();
			return dt;

		}

		// this handles the case where the demangled template has an empty argument
		if ("".equals(parameter.trim())) {
			return new DemangledDataType(mangledSource, demangledSource, "missing_argument");
		}

		return parseDataType(parameter);
	}
This method converts each parameter string into
actual DemangledDataType objects.
Ghidra/Features/GnuDemangler/src/main/java/ghidra/app/util/demangler/gnu/GnuDemanglerParser.java