private static SymbolKind schemaSymbolTypeToLSPSymbolKind(SymbolType type) {
        // A somewhat arbitrary conversion
        switch (type) {
            case FIELD:
            case STRUCT_FIELD:
            case SUBFIELD:
                return SymbolKind.Field;
            case STRUCT:
                return SymbolKind.Struct;
            case SCHEMA:
                return SymbolKind.Namespace;
            case DOCUMENT:
                return SymbolKind.Class;
            case FUNCTION:
            case LAMBDA_FUNCTION:
                return SymbolKind.Function;
            case PARAMETER:
                return SymbolKind.Variable;
            case RANK_PROFILE:
                return SymbolKind.Method;
            default:
                return SymbolKind.Property;
        }
    }
Responsible for LSP textDocument/documentSymbol requests.

Yields a hierarchical list of symbols for a given file. A symbol is a "child" of another symbol if it is enclosed in its definition (child in AST).
In our index structure, we only store the parent of a symbol, which we refer to as "scope".

The document symbols request is used to display UI elements like 
    grandparent > parent > child based on the current cursor position,
as well as handling explicit "list symbols in file" command.
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/lsp/schema/documentsymbols/SchemaDocumentSymbols.java