public int doParseInfoSingle(StringBuilder builder, int parseInfoMangledIndexArg,
			int infoIndex) {
		// Output multiple lines that looks like: "C |  |  |  |"
		//  This is because we are not recording each individual getAndIncrement()--we would
		//  probably 		//  need to make some additional changes to the processing routines
		//  for when peek(n) and getAndIncrement() are used... some sort of contractual
		//  agreement on when the character read is actually put into the parseInfo.
		while ((parseInfoMangledIndexArg < infoList.get(infoIndex).startIndex)) {
			if ((infoIndex == 0) || ((infoIndex != 0) &&
				(parseInfoMangledIndexArg > infoList.get(infoIndex - 1).startIndex))) {
				outputMangledCharAndInfo(builder, parseInfoMangledIndexArg,
					infoList.get(infoIndex).itemDepth, null);
			}
			parseInfoMangledIndexArg++;
		}
		if (parseInfoMangledIndexArg >= infoList.get(infoIndex).startIndex) {
			if ((infoIndex == 0) ||
				(infoList.get(infoIndex).startIndex != infoList.get(infoIndex - 1).startIndex)) {
				// Output one line that looks like: "C +--+--+--Item"
				outputMangledCharAndInfo(builder, infoList.get(infoIndex).startIndex,
					infoList.get(infoIndex).itemDepth, infoList.get(infoIndex).itemName);
			}
			else {
				// Output multiple lines that looks like: "  +--+--+--Item"
				outputMangledCharAndInfo(builder, -1, infoList.get(infoIndex).itemDepth,
					infoList.get(infoIndex).itemName);
			}
		}
		return parseInfoMangledIndexArg;
	}
An MDMang extension that outputs debugging parse information.
Ghidra/Features/MicrosoftDmang/src/main/java/mdemangler/MDMangParseInfo.java