@Override
	protected void parseInternal() throws MDException {
		if (dmang.peek() == '?') {
			if (dmang.peek(1) == '$') {
				templateNameAndArguments = new MDTemplateNameAndArguments(dmang);
				templateNameAndArguments.parse();
			}
			else if (dmang.peek(1) == '?') {
				// Seems to only hit here for second '?' of "???" sequence.
				embeddedObject = new MDObjectCPP(dmang);
				embeddedObject.parse();
				embeddedObjectQualification = new MDQualification(dmang);
				embeddedObjectQualification.parse(); //Value not used, but must be parsed.
			}
			else {
				dmang.increment();
				specialName = new MDSpecialName(dmang, 1);
				specialName.parse();
			}
		}
		else {
			reusableName = new MDReusableName(dmang);
			reusableName.parse();
		}
	}
Return the embedded object (essentially what could stand on its own as a mangled
 symbol) that is used as part of the name of mangled object
@return The embedded object that essentially represents this MDBasicName.
Ghidra/Features/MicrosoftDmang/src/main/java/mdemangler/naming/MDBasicName.java