private void processSymbol(Map<String, Object> result, boolean firstPass) {
		try {
			String kind = (String) result.get("kind");
			boolean isLocal = (kind != null) && kind.equalsIgnoreCase("local");
			String type = (String) result.get("type");

			boolean isPrimary = (boolean) result.get("primary");
			boolean isPinned = (boolean) result.get("pinned");
			String sourceTypeString = (String) result.get("sourceType");
			SourceType sourceType = getSourceType(sourceTypeString);

			String name = (String) result.get("name");
			boolean processFirstPass = true;
			if (isLocal && type == null) {
				processFirstPass = false;
			}
			if (sourceType.equals(SourceType.DEFAULT)) {
				processFirstPass = false;
			}

			if (firstPass && !processFirstPass) {
				return;
			}
			if (!firstPass && processFirstPass) {
				return;
			}

			Address addr = getLocation(result);
			String namespace = (String) result.get("location");
			Boolean isClass = (Boolean) result.get("namespaceIsClass");
			Namespace scope = program.getGlobalNamespace(); // default to global scope
			scope = isLocal ? walkNamespace(scope, namespace, addr, sourceType, isClass) : scope;
			if (scope == null) {
				return;
			}

			if (type != null) {
				if (type.equals("namespace")) {
					if (symbolTable.getNamespace(name, scope) == null) {
						symbolTable.createNameSpace(scope, name, sourceType);
					}
					return;
				}
				if (type.equals("class")) {
					if (symbolTable.getClassSymbol(name, scope) == null) {
						symbolTable.createClass(scope, name, sourceType);
					}
					return;
				}
				if (type.equals("library")) {
					if (symbolTable.getLibrarySymbol(name) == null) {
						symbolTable.createExternalLibrary(name, sourceType);
					}
					return;
				}
			}

			if (addr.isMemoryAddress() && symbolTable.getSymbol(name, addr, scope) == null) {
				Symbol s = SymbolUtilities.createPreferredLabelOrFunctionSymbol(program, addr, scope, name, sourceType);
				if (s != null && isPrimary && overwritePrimary) {
					s.setPrimary();
				}
				if (isPinned) {
					s.setPinned(true);
				}
			}
		} catch (Exception e) {
			log.appendException(e);
		}
	}
Process the symbol table section of the SARIF file.
Ghidra/Features/Sarif/src/main/java/sarif/managers/SymbolTableSarifMgr.java