private void defineNamespace(Namespace parentNamespace, String name, boolean isClass,
			MessageLog log) {

		try {
			SymbolTable symbolTable = program.getSymbolTable();
			Namespace namespace = symbolTable.getNamespace(name, parentNamespace);
			if (namespace != null) {
				if (isClass) {
					if (namespace instanceof GhidraClass) {
						return;
					}
					if (isSimpleNamespaceSymbol(namespace)) {
						NamespaceUtils.convertNamespaceToClass(namespace);
						return;
					}
				}
				else if (namespace.getSymbol().getSymbolType() == SymbolType.NAMESPACE) {
					return;
				}
				log.appendMsg("PDB",
					"Unable to create class namespace due to conflicting symbol: " +
						namespace.getName(true));
			}
			else if (isClass) {
				symbolTable.createClass(parentNamespace, name, SourceType.IMPORTED);
			}
			else {
				symbolTable.createNameSpace(parentNamespace, name, SourceType.IMPORTED);
			}
		}
		catch (Exception e) {
			log.appendMsg("PDB", "Unable to create class namespace: " +
				parentNamespace.getName(true) + Namespace.DELIMITER + name);
		}
	}
Apply PDB debug information to the current program

@param log  MessageLog used to record errors
@throws IOException  if an error occurs during parsing
@throws PdbException  if PDB file has already been loaded
@throws CancelledException  if user cancels the current action
Ghidra/Features/PDB/src/main/java/ghidra/app/util/bin/format/pdb/PdbParser.java