private Symbol doCreateSymbol(Address address, SymbolPath symbolPath, boolean makePrimary,
			String plateAddition) {
		Symbol symbol = null;
		try {
			Namespace namespace = program.getGlobalNamespace();
			String name = symbolPath.getName();
			String namespacePath = symbolPath.getParentPath();
			if (namespacePath != null) {
				namespace = NamespaceUtils.createNamespaceHierarchy(namespacePath, namespace,
					program, address, SourceType.IMPORTED);
			}
			symbol =
				program.getSymbolTable().createLabel(address, name, namespace, SourceType.IMPORTED);
			if (makePrimary && !symbol.isPrimary()) {
				SetLabelPrimaryCmd cmd =
					new SetLabelPrimaryCmd(address, symbol.getName(), symbol.getParentNamespace());
				cmd.applyTo(program);
			}
		}
		catch (InvalidInputException e) {
			log.appendMsg("PDB Warning: Unable to create symbol at " + address +
				" due to exception: " + e.toString() + "; symbolPathName: " + symbolPath);
		}

		addToPlateUnique(address, plateAddition);

		return symbol;
	}
Processing non-public, non-global symbols.  User should not then call
{@link #processAllSymbols()}; but has these other methods available to supplement this one:
{@link #processGlobalSymbolsNoTypedefs()} and (@link #processPublicSymbols()}
@throws CancelledException upon user cancellation
@throws PdbException upon issue processing the request
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/DefaultPdbApplicator.java