public LibrarySymbol createLibrarySymbol(String name, String pathname, SourceType source)
			throws DuplicateNameException, InvalidInputException {
		lock.acquire();
		try {
			DBRecord record = doCreateBasicSymbolRecord(name, null, Address.NO_ADDRESS,
				SymbolType.LIBRARY, false, source, true);
			LibrarySymbol.setRecordFields(record, pathname);
			adapter.updateSymbolRecord(record);

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

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

@param name library name
@param pathname project file path (may be null)
@param source symbol source
@return library symbol
@throws DuplicateNameException if library 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