private void addFunctionAsLabel(Address entryPoint, LongLongHashtable conflictSymbolIDMap,
			SymbolTable toSymTab, SourceType source, String fromName, Namespace toNamespace,
			long oldID) throws InvalidInputException {

		Symbol toSymbol = toSymTab.getSymbol(fromName, entryPoint, toNamespace);
		if (((toSymbol == null) || !toSymbol.getSymbolType().equals(SymbolType.LABEL)) &&
			(source != SourceType.DEFAULT)) {
			if (toSymTab.getSymbol(fromName, entryPoint, toNamespace) == null) {
				toSymbol = toSymbolTable.createLabel(entryPoint, fromName, toNamespace, source);
			}
		}
	}
Merges the function symbol at the indicated entry point from the "from" program into the
"to" program. The function is merged  as a regular "label" symbol.
@param fromEntryPoint the entry point address
This address should be derived from the "from" program.
@param replacePrimary true indicates that the primary symbol in the "to" program should be
set to the function symbol if there was one in the "from" program.
@param conflictSymbolIDMap maps the symbol IDs in the "from" program to the symbol IDs
in the "to" program for any symbols (and their associated objects) that were created
with conflict names.
(key = "from" program's symbol ID; value = "to" program's symbol ID)
@param monitor the task monitor for notifying the user of this merge's progress.

@throws InvalidInputException if the function symbol name from the second program isn't valid
@throws DuplicateNameException if a duplicate name is encountered that couldn't be handled
while copying the function symbol.
Ghidra/Features/Base/src/main/java/ghidra/program/util/SymbolMerge.java