private SymbolPath getReconciledSymbolPath() {

		String name = symbol.getName();
		SymbolPath symbolPath = new SymbolPath(name);
		RecordNumber typeRecordNumber = symbol.getTypeRecordNumber();
		AbstractMsType fType = applicator.getTypeRecord(typeRecordNumber);
		if (!(fType instanceof AbstractMemberFunctionMsType memberFunction)) {
			return symbolPath;
		}

		// Get containing type, and while we are at it, ensure that it is defined as a class
		//  namespace.
		// This has likely already been done, but we want to be sure that it has.
		RecordNumber rc = memberFunction.getContainingClassRecordNumber();
		SymbolPath containerSymbolPath = AbstractComplexTypeApplier.getSymbolPath(applicator, rc);
		applicator.predefineClass(containerSymbolPath);

		// Make sure that the symbol path of the underlying type of the this pointer is also
		//  defined as a class namespace.
		// Probably does not need to be done, as it likely was done for the underlying data type.
		AbstractMsType p = memberFunction.getThisPointerType();
		if (p instanceof AbstractPointerMsType ptr) {
			RecordNumber rpt = ptr.getUnderlyingRecordNumber();
			if (!rpt.equals(rc)) {
				SymbolPath underlyingSymbolPath =
					AbstractComplexTypeApplier.getSymbolPath(applicator, rc);
				applicator.predefineClass(underlyingSymbolPath);
			}
		}

		// Only trying to fix up anonymous namespaces
		if (!name.startsWith("`anonymous namespace'") && !name.startsWith("anonymous-namespace")) {
			return symbolPath;
		}

		// Reconcile path of function with path of container type.
		//  Logic is a little different from what is in MDMangUtils.
		// Want all namespace nodes to match except possibly the first one, which should be
		//  the anonymous namespace one.
		List<String> containerParts = containerSymbolPath.asList();
		List<String> parts = symbolPath.asList();
		if (containerParts.size() != parts.size() - 1) {
			Msg.info(this, "Unmatched symbol path size during fn name reconcilation");
			return symbolPath;
		}
		for (int i = 0; i < containerParts.size(); i++) {
			String containerPart = containerParts.get(i);
			String part = parts.get(i);
			if (!containerPart.equals(part)) {
				if (i == 0) {
					parts.set(i, containerPart);
				}
				else {
					Msg.info(this, "Mismatch symbol path nodes during fn name reconcilation");
					return symbolPath;
				}
			}
		}
		return new SymbolPath(parts);
	}
Constructor
@param applicator the {@link DefaultPdbApplicator} for which we are working.
@param symbol the symbol for this applier
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/FunctionSymbolApplier.java