private void setName(Address entryPoint, Function func, String name,
			Map<String, Object> result) {
		SymbolPath path = new SymbolPath(name);
		if (name != null) {
			String nss = (String) result.get("namespace");
			boolean isThunk = (boolean) result.get("isThunk");
			if (nss != null && !isThunk) {
				SymbolPath parentPath = new SymbolPath(nss);
				if (!name.startsWith(nss)) {
					path = new SymbolPath(parentPath, name);
				}
			}
			name = path.getName();
		}

		Symbol symbol = func.getSymbol();
		try {
			Namespace ns = NamespaceUtils.getFunctionNamespaceAt(program, path, entryPoint);
			if (ns == null) {
				ns = program.getGlobalNamespace();
				SymbolPath parent = path.getParent();
				if (parent != null && !parent.getName().equals(ns.getName())) {
					Boolean isClass = (Boolean) result.get("namespaceIsClass");
					String source = (String) result.get("sourceType");
					SourceType sourceType =
						source.equals("DEFAULT") ? SourceType.IMPORTED : getSourceType(source);
					ns = walkNamespace(program.getGlobalNamespace(), parent.getPath() + "::",
						entryPoint, sourceType, isClass);
					symbol.setNameAndNamespace(name, ns, getSourceType("DEFAULT"));
					return;
				}
			}
			if (path.getName().contains(Library.UNKNOWN)) {
				ns = getExternalNamespace();
			}
			if (ns.getParentNamespace() == null) {
				symbol.setName(name, getSourceType("DEFAULT"));
			}
			else {
				symbol.setNameAndNamespace(name, ns.getParentNamespace(), getSourceType("DEFAULT")); // symbol.getSource());
			}
		}
		catch (Exception e) {
			// name may already be set if symbols were loaded...
		}
	}
Parses a list of {@link Function function} definitions from SARIF and creates
then, adding them to the current {@link Program program}.
<p>
Information from a TYPEINFO_COMMENT is used in preference to information from
RETURN_TYPE and STACK_FRAME/STACK_VARs that are tagged as parameters.
<p>
DTD for the FUNCTION element:

<pre>
<code>
&lt;!ELEMENT FUNCTION (RETURN_TYPE?, ADDRESS_RANGE*, REGULAR_CMT?, REPEATABLE_CMT?, TYPEINFO_CMT?, STACK_FRAME?, REGISTER_VAR*)&gt;
</code>
</pre>

@param result             the parser
@param options
@param monitor            the task monitor
@throws AddressFormatException if any address is not parsable
@throws CancelledException     if the operation is cancelled through the
                               monitor
Ghidra/Features/Sarif/src/main/java/sarif/managers/FunctionsSarifMgr.java