private DemangledDataType tryToParseLambdaArrayPointerOrReference(LambdaName lambdaName,
			DemangledDataType dt, String datatype) {

		// remove the lambda text to allow us to use a simpler regex when checking for arrays
		String fullText = lambdaName.getFullText();
		ReplacedString lambdaString = new CustomReplacedString(datatype, fullText);
		String noLambdaString = lambdaString.getModifiedText();

		Matcher matcher = ARRAY_POINTER_REFERENCE_PATTERN.matcher(noLambdaString);
		if (!matcher.find()) {
			return null;
		}

		int start = matcher.start(0);
		String leading = noLambdaString.substring(0, start);
		leading = removeTrailingDereferenceCharacters(leading);

		Demangled namespace = dt.getNamespace();
		String name = leading;
		DemangledDataType newDt =
			parseArrayPointerOrReference(datatype, name, lambdaString, matcher);
		newDt.setNamespace(namespace);
		return newDt;
	}
This method converts each parameter string into
actual DemangledDataType objects.
Ghidra/Features/GnuDemangler/src/main/java/ghidra/app/util/demangler/gnu/GnuDemanglerParser.java