@SuppressWarnings("unchecked")
	private boolean processFunctionDef(Map<String, Object> result) throws InvalidInputException {
		boolean processedAll = true;
		String name = (String) result.get("name");
		CategoryPath path = getCategoryPath(result);
		FunctionDefinition fd = new FunctionDefinitionDataType(path, name, dataManager);
		processSettings(result, fd.getDefaultSettings());
		fd.setVarArgs((boolean) result.get("hasVarArgs"));
		fd.setNoReturn((boolean) result.get("hasNoReturn"));
		fd.setCallingConvention((String) result.get("callingConventionName"));

		dataTypes.put(getPath(fd), fd);

		Map<String, Object> retType = (Map<String, Object>) result.get("retType");
		DataType returnType = findDataType(retType);
		if (returnType != null) {
			fd.setReturnType(returnType);
		}

		List<Map<String, Object>> params = (List<Map<String, Object>>) result.get("params");
		for (Map<String, Object> param : params) {
			processedAll &= processFunctionMembers(param, fd);
		}

		addDataType(getPath(fd), fd);
		return processedAll;
	}
Reads the datatypes encoded in SARIF from the specified SARIF parser and
recreates them in a datatype manager.

@param result  the SARIF parser
@param monitor the task monitor
@throws SAXParseException  if an SARIF parse error occurs
@throws CancelledException if the user cancels the read operation
Ghidra/Features/Sarif/src/main/java/sarif/managers/DataTypesSarifMgr.java