public String getParseInfo_orig() {
		StringBuilder builder = new StringBuilder();
		int mangledIndex = 0;
		int infoIndex = 0;
		while (infoIndex < infoList.size()) {
			// Output one line that looks like: "C +--+--+--Item"
			if (mangledIndex == infoList.get(infoIndex).startIndex) {
				outputMangledCharAndInfo(builder, mangledIndex, infoList.get(infoIndex).itemDepth,
					infoList.get(infoIndex).itemName);
				// Output multiple lines that looks like: "  +--+--+--Item"
				while ((++infoIndex < infoList.size()) &&
					(mangledIndex == infoList.get(infoIndex).startIndex)) {
					outputMangledCharAndInfo(builder, -1, infoList.get(infoIndex).itemDepth,
						infoList.get(infoIndex).itemName);
				}
			}
			// Doing ">= mangled.length(), allowing for one additional character for optional
			//  parsable items after the last mangled character
			else if ((mangledIndex >= mangled.length()) ||
				(mangledIndex == infoList.get(infoIndex).startIndex)) {
				// Problem
				Msg.warn(this, "Problem with Parse Info Stack");
				break;
			}
			else {
				// Output multiple lines that looks like: "C |  |  |  |"
				while ((mangledIndex < infoList.get(infoIndex).startIndex)) {
					if ((infoIndex == 0) || ((infoIndex != 0) &&
						(mangledIndex > infoList.get(infoIndex - 1).startIndex))) {
						outputMangledCharAndInfo(builder, mangledIndex,
							infoList.get(infoIndex).itemDepth, null);
					}
					mangledIndex++;
				}
			}
		}
		return builder.toString();
	}
An MDMang extension that outputs debugging parse information.
Ghidra/Features/MicrosoftDmang/src/main/java/mdemangler/MDMangParseInfo.java