@Override
	protected void parseInternal() throws MDException {
		// First pass can only have name fragment of special name
		char code = dmang.peek();
		switch (code) {
//			case '$': //might not be used.
//				dmang.getAndIncrement();
//				break;
			case '?':
				templateName = new MDTemplateNameAndArguments(dmang);
				templateName.parse();
				dmang.addBackrefName(templateName.toString());
				break;
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':
				dmang.increment();
				int index = code - '0';
				fragment = new MDFragmentName(dmang);
				fragment.setName(dmang.getBackreferenceName(index));
				break;
			default:
				fragment = new MDFragmentName(dmang);
				int loc = dmang.getIndex();
				fragment.parse();
				if (loc == 1) {
					processSpecialName(fragment.getName());
				}
				dmang.addBackrefName(fragment.getName()); // note that back-ref gets standard name
				break;
		}
	}
This class represents a reusable name (whether a fragment, template name, or
backreference index of a previous reusable name)--where one is allowed--within
a Microsoft mangled symbol.
Ghidra/Features/MicrosoftDmang/src/main/java/mdemangler/naming/MDReusableName.java