ClassSymbol createClassSymbol(String name, Namespace parent, SourceType source,
			boolean checkForDuplicates) throws DuplicateNameException, InvalidInputException {
		lock.acquire();
		try {
			DBRecord record = doCreateBasicSymbolRecord(name, parent, Address.NO_ADDRESS,
				SymbolType.CLASS, false, source, checkForDuplicates);
			adapter.updateSymbolRecord(record);

			ClassSymbol newSymbol = new ClassSymbol(this, cache, record);

			symbolAdded(newSymbol);
			return newSymbol;
		}
		catch (IOException e) {
			program.dbError(e); // will not return
			return null;
		}
		finally {
			lock.release();
		}
	}
Create a Class symbol with the specified name and parent

@param name class name
@param parent parent namespace (may be null for global namespace)
@param source symbol source
@param checkForDuplicates true if check for duplicate name conflict should be performed
@return class symbol
@throws DuplicateNameException if class name conflicts with another symbol
@throws InvalidInputException if name contains white space, is zero length, or is null for
            non-default source. Also thrown if invalid parent namespace is specified.
@throws IllegalArgumentException if {@link SourceType#DEFAULT} is improperly specified, or 
            or if the given parent namespace is from a different program than that of this 
            symbol table.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/symbol/SymbolManager.java