{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "MrDocs DOM Schema",
    "description": "Schema for the DOM objects available to Handlebars templates in the MrDocs documentation generator.",
    "oneOf": [
        {
            "$ref": "#/$defs/NamespaceSymbol"
        },
        {
            "$ref": "#/$defs/RecordSymbol"
        },
        {
            "$ref": "#/$defs/FunctionSymbol"
        },
        {
            "$ref": "#/$defs/OverloadsSymbol"
        },
        {
            "$ref": "#/$defs/EnumSymbol"
        },
        {
            "$ref": "#/$defs/EnumConstantSymbol"
        },
        {
            "$ref": "#/$defs/TypedefSymbol"
        },
        {
            "$ref": "#/$defs/VariableSymbol"
        },
        {
            "$ref": "#/$defs/GuideSymbol"
        },
        {
            "$ref": "#/$defs/NamespaceAliasSymbol"
        },
        {
            "$ref": "#/$defs/UsingSymbol"
        },
        {
            "$ref": "#/$defs/ConceptSymbol"
        }
    ],
    "$defs": {
        "NamespaceSymbol": {
            "type": "object",
            "description": "A namespace declaration. The implicit global namespace appears as a namespace symbol with an empty name and no parent.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "isInline": {
                    "type": "boolean",
                    "description": "True if the namespace is declared `inline`."
                },
                "isAnonymous": {
                    "type": "boolean",
                    "description": "True if the namespace has no name in source."
                },
                "usingDirectives": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Name"
                    },
                    "description": "List of `using namespace` directives found in this namespace's scope."
                },
                "members": {
                    "$ref": "#/$defs/NamespaceTranche",
                    "description": "All members of the namespace, grouped into tranches by kind."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "isInline",
                "isAnonymous",
                "usingDirectives",
                "members",
                "class"
            ]
        },
        "RecordSymbol": {
            "type": "object",
            "description": "A class, struct, or union declaration.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "keyKind": {
                    "type": "string",
                    "enum": [
                        "struct",
                        "class",
                        "union"
                    ],
                    "description": "The introducing keyword: `\"class\"`, `\"struct\"`, or `\"union\"`."
                },
                "template": {
                    "$ref": "#/$defs/TemplateInfo",
                    "description": "Template head if this is a class template; absent for non-templates."
                },
                "isTypeDef": {
                    "type": "boolean",
                    "description": "True when the record was introduced by an anonymous `typedef struct { ... } Name;` declaration."
                },
                "isFinal": {
                    "type": "boolean",
                    "description": "True if the class is declared `final`."
                },
                "isFinalDestructor": {
                    "type": "boolean",
                    "description": "True when the record's destructor is declared `final`."
                },
                "bases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/BaseInfo"
                    },
                    "description": "Direct base classes, in declaration order."
                },
                "derived": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "Base64-encoded symbol ID"
                    },
                    "description": "Identifiers of records that derive from this one and appear in the corpus."
                },
                "interface": {
                    "$ref": "#/$defs/RecordInterface",
                    "description": "Per-access summary of the record's members (public, protected, private, plus aggregated views)."
                },
                "friends": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/FriendInfo"
                    },
                    "description": "List of friend declarations attached to the record."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "keyKind",
                "isTypeDef",
                "isFinal",
                "isFinalDestructor",
                "bases",
                "derived",
                "interface",
                "friends",
                "class"
            ]
        },
        "FunctionSymbol": {
            "type": "object",
            "description": "A function declaration, including free functions, member functions, constructors, destructors, and user-defined operators.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "returnType": {
                    "$ref": "#/$defs/Type",
                    "description": "Return type. Absent for constructors and destructors."
                },
                "params": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Param"
                    },
                    "description": "Function parameter list, in declaration order."
                },
                "template": {
                    "$ref": "#/$defs/TemplateInfo",
                    "description": "Template head if this is a function template; absent for non-templates."
                },
                "funcClass": {
                    "type": "string",
                    "enum": [
                        "normal",
                        "constructor",
                        "conversion",
                        "destructor"
                    ],
                    "description": "Special-function classification (`\"constructor\"`, `\"destructor\"`, `\"conversion\"`, etc.) or empty for ordinary functions."
                },
                "noexcept": {
                    "type": "string",
                    "description": "Rendered `noexcept` specifier, if any."
                },
                "requires": {
                    "type": "string",
                    "description": "Trailing `requires`-clause expression as written."
                },
                "isVariadic": {
                    "type": "boolean",
                    "description": "True when the function accepts a C-style `...` argument list."
                },
                "isDefaulted": {
                    "type": "boolean",
                    "description": "True when the function is `= default`."
                },
                "isExplicitlyDefaulted": {
                    "type": "boolean",
                    "description": "True when the function carries an explicit `= default` in source (not just an implicit defaulted special member)."
                },
                "isDeleted": {
                    "type": "boolean",
                    "description": "True when the function is `= delete` (whether written explicitly or implied by language rules)."
                },
                "isDeletedAsWritten": {
                    "type": "boolean",
                    "description": "True only when the function is `= delete` as written in source; distinguishes user-deleted from implicitly deleted."
                },
                "isNoReturn": {
                    "type": "boolean",
                    "description": "True when the function is marked `[[noreturn]]`."
                },
                "hasOverrideAttr": {
                    "type": "boolean",
                    "description": "True when the function carries the `override` specifier."
                },
                "hasTrailingReturn": {
                    "type": "boolean",
                    "description": "True when the function uses trailing-return-type syntax (`auto ... -> T`)."
                },
                "isNodiscard": {
                    "type": "boolean",
                    "description": "True when the function is marked `[[nodiscard]]`."
                },
                "isExplicitObjectMemberFunction": {
                    "type": "boolean",
                    "description": "True when the function declares an explicit object parameter (deducing-this member function)."
                },
                "constexpr": {
                    "type": "string",
                    "enum": [
                        "none",
                        "constexpr",
                        "consteval"
                    ],
                    "description": "Constexpr level: `\"constexpr\"`, `\"consteval\"`, or empty."
                },
                "overloadedOperator": {
                    "type": "string",
                    "description": "Overloaded operator name (e.g. `\"operator+\"`) or empty if not an operator."
                },
                "storageClass": {
                    "type": "string",
                    "enum": [
                        "none",
                        "extern",
                        "static",
                        "auto",
                        "register"
                    ],
                    "description": "Storage class: `\"static\"`, `\"extern\"`, etc., or empty."
                },
                "isRecordMethod": {
                    "type": "boolean",
                    "description": "True when the function is a member of a class, struct, or union."
                },
                "isVirtual": {
                    "type": "boolean",
                    "description": "True when the function is virtual (whether by `virtual` keyword or by overriding a virtual function)."
                },
                "isVirtualAsWritten": {
                    "type": "boolean",
                    "description": "True only when the `virtual` keyword appears in source."
                },
                "isPure": {
                    "type": "boolean",
                    "description": "True when the function is pure virtual (`= 0`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the function is a `const` member function."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the function is a `volatile` member function."
                },
                "isFinal": {
                    "type": "boolean",
                    "description": "True when the function is declared `final`."
                },
                "refQualifier": {
                    "type": "string",
                    "description": "Reference qualifier on the implicit object parameter: `\"&\"`, `\"&&\"`, or empty."
                },
                "explicit": {
                    "type": "string",
                    "description": "Rendered `explicit` specifier (with optional condition) for constructors and conversion functions."
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Attributes attached to the declaration."
                },
                "functionObjectImpl": {
                    "type": "string",
                    "description": "Identifier of the function object this function is the call-operator implementation of, when the `auto-function-objects` feature recognized it as such; empty otherwise."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "returnType",
                "params",
                "funcClass",
                "noexcept",
                "isVariadic",
                "isDefaulted",
                "isExplicitlyDefaulted",
                "isDeleted",
                "isDeletedAsWritten",
                "isNoReturn",
                "hasOverrideAttr",
                "hasTrailingReturn",
                "isNodiscard",
                "isExplicitObjectMemberFunction",
                "overloadedOperator",
                "isRecordMethod",
                "isVirtual",
                "isVirtualAsWritten",
                "isPure",
                "isConst",
                "isVolatile",
                "isFinal",
                "explicit",
                "attributes",
                "class"
            ]
        },
        "OverloadsSymbol": {
            "type": "object",
            "description": "An aggregate of overloaded functions sharing a name. Used to group overload sets in the corpus.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "funcClass": {
                    "type": "string",
                    "enum": [
                        "normal",
                        "constructor",
                        "conversion",
                        "destructor"
                    ],
                    "description": "Shared special-function classification of the overload set, when applicable."
                },
                "overloadedOperator": {
                    "type": "string",
                    "description": "Shared overloaded-operator name when the overload set is for an operator."
                },
                "members": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "Base64-encoded symbol ID"
                    },
                    "description": "Identifiers of the function declarations belonging to this overload set."
                },
                "returnType": {
                    "$ref": "#/$defs/Type",
                    "description": "Common return type when every overload shares it; absent otherwise."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "funcClass",
                "overloadedOperator",
                "members",
                "returnType",
                "class"
            ]
        },
        "EnumSymbol": {
            "type": "object",
            "description": "An enum declaration (scoped or unscoped).",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "scoped": {
                    "type": "boolean",
                    "description": "True for `enum class` / `enum struct`; false for unscoped enums."
                },
                "underlyingType": {
                    "$ref": "#/$defs/Type",
                    "description": "Underlying integer type, when an explicit one was specified."
                },
                "constants": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "Base64-encoded symbol ID"
                    },
                    "description": "Identifiers of the enum's constants, in declaration order."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "scoped",
                "constants",
                "class"
            ]
        },
        "EnumConstantSymbol": {
            "type": "object",
            "description": "A single enumerator within an enum declaration.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "initializer": {
                    "type": "string",
                    "description": "Initializer expression as written, or empty when the enumerator takes its implicit value."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "class"
            ]
        },
        "TypedefSymbol": {
            "type": "object",
            "description": "A type alias declaration (`typedef` or `using`).",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "type": {
                    "$ref": "#/$defs/Type",
                    "description": "Aliased type."
                },
                "isUsing": {
                    "type": "boolean",
                    "description": "True for `using`-style aliases; false for the `typedef` keyword."
                },
                "template": {
                    "$ref": "#/$defs/TemplateInfo",
                    "description": "Template head if this is an alias template; absent for non-templates."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "type",
                "isUsing",
                "class"
            ]
        },
        "VariableSymbol": {
            "type": "object",
            "description": "A variable declaration: namespace-scope variable, static data member, or non-static data member.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "type": {
                    "$ref": "#/$defs/Type",
                    "description": "Declared type of the variable."
                },
                "template": {
                    "$ref": "#/$defs/TemplateInfo",
                    "description": "Template head if this is a variable template."
                },
                "initializer": {
                    "type": "string",
                    "description": "Initializer expression as written, or empty when the variable has no initializer."
                },
                "storageClass": {
                    "type": "string",
                    "enum": [
                        "none",
                        "extern",
                        "static",
                        "auto",
                        "register"
                    ],
                    "description": "Storage class: `\"static\"`, `\"extern\"`, `\"thread_local\"`, etc., or empty."
                },
                "isInline": {
                    "type": "boolean",
                    "description": "True when the variable is declared `inline`."
                },
                "isConstexpr": {
                    "type": "boolean",
                    "description": "True when the variable is declared `constexpr`."
                },
                "isConstinit": {
                    "type": "boolean",
                    "description": "True when the variable is declared `constinit`."
                },
                "isThreadLocal": {
                    "type": "boolean",
                    "description": "True when the variable has thread-storage duration."
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Attributes attached to the declaration."
                },
                "isMaybeUnused": {
                    "type": "boolean",
                    "description": "True when the variable carries `[[maybe_unused]]`."
                },
                "isDeprecated": {
                    "type": "boolean",
                    "description": "True when the variable carries `[[deprecated]]`."
                },
                "hasNoUniqueAddress": {
                    "type": "boolean",
                    "description": "True when the data member carries `[[no_unique_address]]`."
                },
                "isRecordField": {
                    "type": "boolean",
                    "description": "True when the variable is a non-static data member of a class, struct, or union."
                },
                "isMutable": {
                    "type": "boolean",
                    "description": "True when the data member is declared `mutable`."
                },
                "isVariant": {
                    "type": "boolean",
                    "description": "True when the data member is part of an anonymous union."
                },
                "isBitfield": {
                    "type": "boolean",
                    "description": "True when the data member is a bit-field."
                },
                "bitfieldWidth": {
                    "type": "string",
                    "description": "Bit-field width expression, when the member is a bit-field."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "type",
                "isInline",
                "isConstexpr",
                "isConstinit",
                "isThreadLocal",
                "attributes",
                "isMaybeUnused",
                "isDeprecated",
                "hasNoUniqueAddress",
                "isRecordField",
                "isMutable",
                "isVariant",
                "isBitfield",
                "class"
            ]
        },
        "GuideSymbol": {
            "type": "object",
            "description": "A user-provided class-template deduction guide.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "deduced": {
                    "$ref": "#/$defs/Type",
                    "description": "Deduced class-template specialization the guide produces."
                },
                "template": {
                    "$ref": "#/$defs/TemplateInfo",
                    "description": "Template parameters of the deduction guide."
                },
                "params": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Param"
                    },
                    "description": "Parameter list used for argument deduction."
                },
                "explicit": {
                    "type": "string",
                    "description": "Rendered `explicit` specifier, if any."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "deduced",
                "params",
                "explicit",
                "class"
            ]
        },
        "NamespaceAliasSymbol": {
            "type": "object",
            "description": "A namespace-alias declaration (`namespace alias = target;`).",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "aliasedSymbol": {
                    "$ref": "#/$defs/IdentifierName",
                    "description": "Reference to the namespace this alias refers to."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "aliasedSymbol",
                "class"
            ]
        },
        "UsingSymbol": {
            "type": "object",
            "description": "A `using`-declaration (introduces names from another scope, including using-enum).",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "introducedName": {
                    "$ref": "#/$defs/Name",
                    "description": "Name introduced into the current scope, qualified by the source scope."
                },
                "shadowDeclarations": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "Base64-encoded symbol ID"
                    },
                    "description": "Symbols brought into scope by the using-declaration."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "class",
                "introducedName",
                "shadowDeclarations",
                "class"
            ]
        },
        "ConceptSymbol": {
            "type": "object",
            "description": "A concept declaration.",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unqualified name of the symbol, as written in the source."
                },
                "loc": {
                    "type": "string",
                    "description": "Source location information for the symbol's declaration and definition."
                },
                "kind": {
                    "type": "string",
                    "enum": [
                        "namespace",
                        "record",
                        "function",
                        "overloads",
                        "enum",
                        "enum-constant",
                        "typedef",
                        "variable",
                        "guide",
                        "namespace-alias",
                        "using",
                        "concept"
                    ],
                    "description": "Discriminator selecting the symbol kind (e.g. `\"function\"`, `\"record\"`). Each concrete symbol type constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Stable, base64-encoded identifier used for cross-references between DOM objects."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier (`\"public\"`, `\"protected\"`, `\"private\"`); empty for namespace-scope members."
                },
                "extraction": {
                    "type": "string",
                    "enum": [
                        "regular",
                        "see-below",
                        "implementation-defined",
                        "dependency"
                    ],
                    "description": "Why the symbol was extracted: `\"regular\"`, `\"see-below\"`, `\"implementation-defined\"`, or `\"dependency\"`."
                },
                "isCopyFromInherited": {
                    "type": "boolean",
                    "description": "True when the symbol is a synthesized copy of an inherited member (see the `inherit-base-members` configuration option)."
                },
                "parent": {
                    "type": "string",
                    "description": "Identifier of the enclosing scope, or empty when the symbol lives in the global namespace."
                },
                "doc": {
                    "$ref": "#/$defs/DocComment",
                    "description": "Parsed documentation comment attached to the symbol, or absent when the symbol is undocumented."
                },
                "template": {
                    "$ref": "#/$defs/TemplateInfo",
                    "description": "Concept's template parameter list."
                },
                "constraint": {
                    "type": "string",
                    "description": "Constraint expression that defines the concept."
                },
                "class": {
                    "type": "string",
                    "const": "symbol",
                    "description": "Tag set to the literal `\"symbol\"`. Lets templates discriminate symbol DOM objects from auxiliary types (`type`, `name`, etc.) without inspecting `kind`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc",
                "kind",
                "id",
                "access",
                "extraction",
                "isCopyFromInherited",
                "parent",
                "class"
            ]
        },
        "NamedType": {
            "type": "object",
            "description": "A type referred to by name (a class, an enum, a typedef, or a fundamental type like `int`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "name": {
                    "$ref": "#/$defs/Name",
                    "description": "The name as written, including any qualifications and template arguments."
                },
                "fundamentalType": {
                    "type": "string",
                    "description": "Fundamental-type tag (`\"int\"`, `\"double\"`, ...) when the named type is a built-in type; empty otherwise."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "name"
            ]
        },
        "DecltypeType": {
            "type": "object",
            "description": "A type expressed as `decltype(expr)`.",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "operand": {
                    "type": "string",
                    "description": "The expression inside `decltype(...)`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints"
            ]
        },
        "AutoType": {
            "type": "object",
            "description": "A placeholder type introduced by `auto` or `decltype(auto)`.",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "keyword": {
                    "type": "string",
                    "description": "Which placeholder was used: `\"auto\"` or `\"decltype(auto)\"`."
                },
                "constraint": {
                    "$ref": "#/$defs/Name",
                    "description": "Concept constraint applied to the placeholder, if any."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "keyword"
            ]
        },
        "LValueReferenceType": {
            "type": "object",
            "description": "An lvalue-reference type (`T&`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "pointeeType": {
                    "$ref": "#/$defs/Type",
                    "description": "The referenced type."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "pointeeType"
            ]
        },
        "RValueReferenceType": {
            "type": "object",
            "description": "An rvalue-reference type (`T&&`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "pointeeType": {
                    "$ref": "#/$defs/Type",
                    "description": "The referenced type."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "pointeeType"
            ]
        },
        "PointerType": {
            "type": "object",
            "description": "A pointer type (`T*`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "pointeeType": {
                    "$ref": "#/$defs/Type",
                    "description": "The pointed-to type."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "pointeeType"
            ]
        },
        "MemberPointerType": {
            "type": "object",
            "description": "A pointer-to-member type (`T C::*`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "parentType": {
                    "$ref": "#/$defs/Type",
                    "description": "The class type the pointer is a member of."
                },
                "pointeeType": {
                    "$ref": "#/$defs/Type",
                    "description": "The type of the member being pointed to."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "parentType",
                "pointeeType"
            ]
        },
        "ArrayType": {
            "type": "object",
            "description": "An array type (`T[N]`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "elementType": {
                    "$ref": "#/$defs/Type",
                    "description": "The element type."
                },
                "bounds": {
                    "type": "string",
                    "description": "Array bound expression as written, or empty for unknown-bound arrays."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "elementType"
            ]
        },
        "FunctionType": {
            "type": "object",
            "description": "A function type (used for function pointers, pointers-to-members, etc.).",
            "properties": {
                "kind": {
                    "type": "string",
                    "description": "Discriminator selecting the type kind. Each concrete type constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the type appears as the pattern of a pack expansion (`T...`)."
                },
                "isConst": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `const` qualifier."
                },
                "isVolatile": {
                    "type": "boolean",
                    "description": "True when the type carries a top-level `volatile` qualifier."
                },
                "constraints": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "C++ expression as written"
                    },
                    "description": "Constraint expressions associated with the type, such as those discovered by SFINAE detection around `std::enable_if_t<..., T>`."
                },
                "returnType": {
                    "$ref": "#/$defs/Type",
                    "description": "The return type."
                },
                "paramTypes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Type"
                    },
                    "description": "Parameter types, in declaration order."
                },
                "refQualifier": {
                    "type": "string",
                    "description": "Reference qualifier on the implicit object parameter (for member-function types): `\"&\"`, `\"&&\"`, or empty."
                },
                "exceptionSpec": {
                    "type": "string",
                    "description": "Rendered exception specification, if any."
                },
                "isVariadic": {
                    "type": "boolean",
                    "description": "True when the function type accepts a C-style `...` argument list."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "isConst",
                "isVolatile",
                "constraints",
                "returnType",
                "paramTypes",
                "exceptionSpec",
                "isVariadic"
            ]
        },
        "IdentifierName": {
            "type": "object",
            "description": "A plain (possibly qualified) name without template arguments, e.g. `std::vector` or `MyClass::nested`.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "identifier",
                        "specialization"
                    ],
                    "description": "Discriminator selecting the name kind. Each concrete name constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Identifier of the named symbol when it lives in the corpus; empty when the name refers to something outside it."
                },
                "identifier": {
                    "type": "string",
                    "description": "Unqualified spelling of the name, as written in the source."
                },
                "prefix": {
                    "$ref": "#/$defs/Name",
                    "description": "Qualifying prefix (the `A::B::` part of `A::B::Name`); absent when the name is unqualified."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "id"
            ]
        },
        "SpecializationName": {
            "type": "object",
            "description": "A template-id: a name applied to template arguments, e.g. `std::vector<int>` or `Outer<T>::Inner`.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "identifier",
                        "specialization"
                    ],
                    "description": "Discriminator selecting the name kind. Each concrete name constrains this field to a single literal value."
                },
                "id": {
                    "type": "string",
                    "description": "Identifier of the named symbol when it lives in the corpus; empty when the name refers to something outside it."
                },
                "identifier": {
                    "type": "string",
                    "description": "Unqualified spelling of the name, as written in the source."
                },
                "prefix": {
                    "$ref": "#/$defs/Name",
                    "description": "Qualifying prefix (the `A::B::` part of `A::B::Name`); absent when the name is unqualified."
                },
                "templateArgs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/TArg"
                    },
                    "description": "Template arguments applied to the name, in declaration order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "id",
                "templateArgs"
            ]
        },
        "TypeTParam": {
            "type": "object",
            "description": "A type template parameter (`template <typename T>` or `template <class T>`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "type",
                        "constant",
                        "template"
                    ],
                    "description": "Discriminator selecting the template-parameter kind. Each concrete TParam constrains this field to a single literal value."
                },
                "name": {
                    "type": "string",
                    "description": "Parameter name as written; empty for unnamed template parameters."
                },
                "isParameterPack": {
                    "type": "boolean",
                    "description": "True when the template parameter is a parameter pack (`typename... Ts`, `int... Ns`, etc.)."
                },
                "default": {
                    "$ref": "#/$defs/TArg",
                    "description": "Default argument expression as written; absent when the parameter has no default."
                },
                "keyKind": {
                    "type": "string",
                    "enum": [
                        "class",
                        "typename"
                    ],
                    "description": "Introducing keyword: `\"typename\"` or `\"class\"`."
                },
                "constraint": {
                    "$ref": "#/$defs/Name",
                    "description": "Concept constraint applied to the parameter, if any."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isParameterPack",
                "keyKind"
            ]
        },
        "ConstantTParam": {
            "type": "object",
            "description": "A non-type template parameter (`template <int N>`, `template <auto V>`, ...).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "type",
                        "constant",
                        "template"
                    ],
                    "description": "Discriminator selecting the template-parameter kind. Each concrete TParam constrains this field to a single literal value."
                },
                "name": {
                    "type": "string",
                    "description": "Parameter name as written; empty for unnamed template parameters."
                },
                "isParameterPack": {
                    "type": "boolean",
                    "description": "True when the template parameter is a parameter pack (`typename... Ts`, `int... Ns`, etc.)."
                },
                "default": {
                    "$ref": "#/$defs/TArg",
                    "description": "Default argument expression as written; absent when the parameter has no default."
                },
                "type": {
                    "$ref": "#/$defs/Type",
                    "description": "Declared type of the parameter."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isParameterPack",
                "type"
            ]
        },
        "TemplateTParam": {
            "type": "object",
            "description": "A template template parameter (`template <template <typename> class C>`).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "type",
                        "constant",
                        "template"
                    ],
                    "description": "Discriminator selecting the template-parameter kind. Each concrete TParam constrains this field to a single literal value."
                },
                "name": {
                    "type": "string",
                    "description": "Parameter name as written; empty for unnamed template parameters."
                },
                "isParameterPack": {
                    "type": "boolean",
                    "description": "True when the template parameter is a parameter pack (`typename... Ts`, `int... Ns`, etc.)."
                },
                "default": {
                    "$ref": "#/$defs/TArg",
                    "description": "Default argument expression as written; absent when the parameter has no default."
                },
                "params": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/TParam"
                    },
                    "description": "Inner template parameter list of the parameter."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isParameterPack",
                "params"
            ]
        },
        "TypeTArg": {
            "type": "object",
            "description": "A template argument that is a type, e.g. `int` in `std::vector<int>`.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "type",
                        "constant",
                        "template"
                    ],
                    "description": "Discriminator selecting the template-argument kind. Each concrete TArg constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the argument is a pack expansion (`Args...`)."
                },
                "type": {
                    "$ref": "#/$defs/Type",
                    "description": "The argument type."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "type"
            ]
        },
        "ConstantTArg": {
            "type": "object",
            "description": "A template argument that is a non-type value, e.g. `42` in `std::array<int, 42>`.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "type",
                        "constant",
                        "template"
                    ],
                    "description": "Discriminator selecting the template-argument kind. Each concrete TArg constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the argument is a pack expansion (`Args...`)."
                },
                "value": {
                    "type": "string",
                    "description": "The argument expression as written."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion"
            ]
        },
        "TemplateTArg": {
            "type": "object",
            "description": "A template argument that is itself a template, used for template-template parameters.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "type",
                        "constant",
                        "template"
                    ],
                    "description": "Discriminator selecting the template-argument kind. Each concrete TArg constrains this field to a single literal value."
                },
                "isPackExpansion": {
                    "type": "boolean",
                    "description": "True when the argument is a pack expansion (`Args...`)."
                },
                "template": {
                    "type": "string",
                    "description": "Identifier of the referenced template."
                },
                "name": {
                    "type": "string",
                    "description": "Name of the template as written."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "isPackExpansion",
                "template"
            ]
        },
        "AdmonitionBlock": {
            "type": "object",
            "description": "An admonition (note, warning, etc.) container introduced by `@note`, `@warning`, and similar commands.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "blocks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Block"
                    },
                    "description": "Block-level children in document order."
                },
                "admonish": {
                    "type": "string",
                    "enum": [
                        "none",
                        "note",
                        "tip",
                        "important",
                        "caution",
                        "warning"
                    ],
                    "description": "Admonition kind: `\"note\"`, `\"tip\"`, `\"important\"`, `\"caution\"`, or `\"warning\"`."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "blocks",
                "admonish"
            ]
        },
        "BriefBlock": {
            "type": "object",
            "description": "The brief description of a symbol, sourced from a `@brief` command, `@copybrief` reference, or the first sentence of the doc comment.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "copiedFrom": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Identifier of the symbol the brief was copied from via `@copybrief`, or empty."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children",
                "copiedFrom"
            ]
        },
        "CodeBlock": {
            "type": "object",
            "description": "A fenced code block in the doc comment.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "literal": {
                    "type": "string",
                    "description": "Verbatim contents of the code block."
                },
                "info": {
                    "type": "string",
                    "description": "Info string after the opening fence (typically the language identifier, e.g. `\"cpp\"`)."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "HeadingBlock": {
            "type": "object",
            "description": "A heading within the doc comment.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "level": {
                    "type": "integer",
                    "description": "Heading depth (1 for top-level, 2 for second-level, and so on)."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children",
                "level"
            ]
        },
        "ParagraphBlock": {
            "type": "object",
            "description": "A paragraph: a sequence of inline elements terminated by a blank line.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "ListBlock": {
            "type": "object",
            "description": "An ordered or unordered list.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/ListItem"
                    },
                    "description": "List items, each holding a sequence of blocks."
                },
                "listKind": {
                    "type": "string",
                    "enum": [
                        "unordered",
                        "ordered"
                    ],
                    "description": "Whether the list is ordered or unordered."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "items",
                "listKind"
            ]
        },
        "DefinitionListBlock": {
            "type": "object",
            "description": "A definition list (terms with descriptions).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/DefinitionListItem"
                    },
                    "description": "Definition-list items, each pairing a term with its description."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "items"
            ]
        },
        "QuoteBlock": {
            "type": "object",
            "description": "A block-level quotation, holding nested blocks.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "blocks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Block"
                    },
                    "description": "Block-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "blocks"
            ]
        },
        "ThematicBreakBlock": {
            "type": "object",
            "description": "A horizontal rule (`---`) separating sections.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "FootnoteDefinitionBlock": {
            "type": "object",
            "description": "A footnote definition referenced by a `FootnoteReferenceInline` elsewhere in the comment.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "blocks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Block"
                    },
                    "description": "Block-level children in document order."
                },
                "label": {
                    "type": "string",
                    "description": "Label that footnote references use to point at this definition."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "blocks"
            ]
        },
        "TableBlock": {
            "type": "object",
            "description": "A table with header and body rows.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "alignments": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "none",
                            "left",
                            "center",
                            "right"
                        ]
                    },
                    "description": "Per-column alignment for the table."
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/TableRow"
                    },
                    "description": "Rows of the table, each a sequence of cells."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "alignments",
                "items"
            ]
        },
        "MathBlock": {
            "type": "object",
            "description": "A display-math block.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "literal": {
                    "type": "string",
                    "description": "Verbatim TeX/LaTeX source for the formula."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "ParamBlock": {
            "type": "object",
            "description": "Documentation of a function parameter, sourced from a `@param` command.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "name": {
                    "type": "string",
                    "description": "Name of the documented parameter (matches a parameter of the enclosing function)."
                },
                "direction": {
                    "type": "string",
                    "enum": [
                        "none",
                        "in",
                        "out",
                        "inout"
                    ],
                    "description": "Parameter direction (`\"in\"`, `\"out\"`, `\"inout\"`), or empty when unspecified."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children",
                "direction"
            ]
        },
        "PostconditionBlock": {
            "type": "object",
            "description": "A `@post` clause describing a function postcondition.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "PreconditionBlock": {
            "type": "object",
            "description": "A `@pre` clause describing a function precondition.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "ReturnsBlock": {
            "type": "object",
            "description": "Documentation of the function's return value, sourced from a `@returns` / `@return` command.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "SeeBlock": {
            "type": "object",
            "description": "A `@see` cross-reference clause.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "ThrowsBlock": {
            "type": "object",
            "description": "Documentation of an exception thrown by the function, sourced from a `@throws` / `@throw` / `@exception` command.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "exception": {
                    "$ref": "#/$defs/ReferenceInline",
                    "description": "Name of the exception type the function may throw."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children",
                "exception"
            ]
        },
        "TParamBlock": {
            "type": "object",
            "description": "Documentation of a template parameter, sourced from a `@tparam` command.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "admonition",
                        "brief",
                        "code",
                        "heading",
                        "paragraph",
                        "list",
                        "definition-list",
                        "quote",
                        "thematic-break",
                        "footnote-definition",
                        "table",
                        "math",
                        "param",
                        "postcondition",
                        "precondition",
                        "returns",
                        "see",
                        "throws",
                        "t-param"
                    ],
                    "description": "Discriminator selecting the doc-block kind. Each concrete block constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "name": {
                    "type": "string",
                    "description": "Name of the documented template parameter."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "ReferenceInline": {
            "type": "object",
            "description": "A cross-reference to a symbol in the corpus, produced by `@ref`, `@p`, or implicit name lookup.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "literal": {
                    "type": "string",
                    "description": "The reference text as written in the doc comment."
                },
                "id": {
                    "type": "string",
                    "description": "Identifier of the resolved target, or empty when the reference could not be resolved."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "id"
            ]
        },
        "CopyDetailsInline": {
            "type": "object",
            "description": "A pending `@copydetails` reference. Resolved during doc-comment finalization; surviving instances indicate an unresolved reference.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "string": {
                    "type": "string",
                    "description": "The reference string as written after `@copydetails`."
                },
                "id": {
                    "type": "string",
                    "description": "Identifier of the referenced symbol once resolved, or empty if the reference could not be resolved."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "id"
            ]
        },
        "LinkInline": {
            "type": "object",
            "description": "A hyperlink whose visible text is the contained inlines.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "href": {
                    "type": "string",
                    "description": "Target URL of the link."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "TextInline": {
            "type": "object",
            "description": "A run of plain text within a paragraph or other inline container.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "literal": {
                    "type": "string",
                    "description": "Verbatim text content."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "SoftBreakInline": {
            "type": "object",
            "description": "A soft line break within a paragraph (rendered as whitespace by most generators).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "LineBreakInline": {
            "type": "object",
            "description": "A hard line break within a paragraph (`<br>`-equivalent).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "CodeInline": {
            "type": "object",
            "description": "An inline code span (`` `like this` ``).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "EmphInline": {
            "type": "object",
            "description": "Emphasized inline text (typically rendered italic).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "StrongInline": {
            "type": "object",
            "description": "Strongly emphasized inline text (typically rendered bold).",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "ImageInline": {
            "type": "object",
            "description": "An inline image.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "src": {
                    "type": "string",
                    "description": "Image source URL or path."
                },
                "alt": {
                    "type": "string",
                    "description": "Alternative text for the image."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "FootnoteReferenceInline": {
            "type": "object",
            "description": "An inline reference pointing at a `FootnoteDefinitionBlock` with the matching label.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "label": {
                    "type": "string",
                    "description": "Label of the footnote being referenced."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "StrikethroughInline": {
            "type": "object",
            "description": "Inline text with strikethrough styling.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "MathInline": {
            "type": "object",
            "description": "An inline math span.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "literal": {
                    "type": "string",
                    "description": "Verbatim TeX/LaTeX source for the formula."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind"
            ]
        },
        "SuperscriptInline": {
            "type": "object",
            "description": "Inline text rendered as superscript.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "SubscriptInline": {
            "type": "object",
            "description": "Inline text rendered as subscript.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "HighlightInline": {
            "type": "object",
            "description": "Inline text rendered with highlight (e.g. `<mark>`) styling.",
            "properties": {
                "kind": {
                    "type": "string",
                    "enum": [
                        "reference",
                        "copy-details",
                        "link",
                        "text",
                        "soft-break",
                        "line-break",
                        "code",
                        "emph",
                        "strong",
                        "image",
                        "footnote-reference",
                        "strikethrough",
                        "math",
                        "superscript",
                        "subscript",
                        "highlight"
                    ],
                    "description": "Discriminator selecting the doc-inline kind. Each concrete inline constrains this field to a single literal value."
                },
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Inline"
                    },
                    "description": "Inline-level children in document order."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "kind",
                "children"
            ]
        },
        "Type": {
            "oneOf": [
                {
                    "$ref": "#/$defs/NamedType"
                },
                {
                    "$ref": "#/$defs/DecltypeType"
                },
                {
                    "$ref": "#/$defs/AutoType"
                },
                {
                    "$ref": "#/$defs/LValueReferenceType"
                },
                {
                    "$ref": "#/$defs/RValueReferenceType"
                },
                {
                    "$ref": "#/$defs/PointerType"
                },
                {
                    "$ref": "#/$defs/MemberPointerType"
                },
                {
                    "$ref": "#/$defs/ArrayType"
                },
                {
                    "$ref": "#/$defs/FunctionType"
                }
            ],
            "description": "A C++ type. The DOM serializes the most-derived kind (named, pointer, reference, array, function, etc.); see the `oneOf` entries for the per-kind shape."
        },
        "Name": {
            "oneOf": [
                {
                    "$ref": "#/$defs/IdentifierName"
                },
                {
                    "$ref": "#/$defs/SpecializationName"
                }
            ],
            "description": "A (possibly qualified) name occurring in source, such as the name of a base class or the type referenced by a `NamedType`."
        },
        "TParam": {
            "oneOf": [
                {
                    "$ref": "#/$defs/TypeTParam"
                },
                {
                    "$ref": "#/$defs/ConstantTParam"
                },
                {
                    "$ref": "#/$defs/TemplateTParam"
                }
            ],
            "description": "A template parameter of a templated symbol. The DOM serializes the most-derived kind (type, non-type, template); see the `oneOf` entries for the per-kind shape."
        },
        "TArg": {
            "oneOf": [
                {
                    "$ref": "#/$defs/TypeTArg"
                },
                {
                    "$ref": "#/$defs/ConstantTArg"
                },
                {
                    "$ref": "#/$defs/TemplateTArg"
                }
            ],
            "description": "A template argument supplied to a template specialization. The DOM serializes the most-derived kind (type, non-type, template); see the `oneOf` entries for the per-kind shape."
        },
        "Block": {
            "oneOf": [
                {
                    "$ref": "#/$defs/AdmonitionBlock"
                },
                {
                    "$ref": "#/$defs/BriefBlock"
                },
                {
                    "$ref": "#/$defs/CodeBlock"
                },
                {
                    "$ref": "#/$defs/HeadingBlock"
                },
                {
                    "$ref": "#/$defs/ParagraphBlock"
                },
                {
                    "$ref": "#/$defs/ListBlock"
                },
                {
                    "$ref": "#/$defs/DefinitionListBlock"
                },
                {
                    "$ref": "#/$defs/QuoteBlock"
                },
                {
                    "$ref": "#/$defs/ThematicBreakBlock"
                },
                {
                    "$ref": "#/$defs/FootnoteDefinitionBlock"
                },
                {
                    "$ref": "#/$defs/TableBlock"
                },
                {
                    "$ref": "#/$defs/MathBlock"
                },
                {
                    "$ref": "#/$defs/ParamBlock"
                },
                {
                    "$ref": "#/$defs/PostconditionBlock"
                },
                {
                    "$ref": "#/$defs/PreconditionBlock"
                },
                {
                    "$ref": "#/$defs/ReturnsBlock"
                },
                {
                    "$ref": "#/$defs/SeeBlock"
                },
                {
                    "$ref": "#/$defs/ThrowsBlock"
                },
                {
                    "$ref": "#/$defs/TParamBlock"
                }
            ],
            "description": "A block-level node in a parsed documentation comment (paragraphs, lists, headings, and command blocks like `@brief` / `@param` / `@returns`)."
        },
        "Inline": {
            "oneOf": [
                {
                    "$ref": "#/$defs/ReferenceInline"
                },
                {
                    "$ref": "#/$defs/CopyDetailsInline"
                },
                {
                    "$ref": "#/$defs/LinkInline"
                },
                {
                    "$ref": "#/$defs/TextInline"
                },
                {
                    "$ref": "#/$defs/SoftBreakInline"
                },
                {
                    "$ref": "#/$defs/LineBreakInline"
                },
                {
                    "$ref": "#/$defs/CodeInline"
                },
                {
                    "$ref": "#/$defs/EmphInline"
                },
                {
                    "$ref": "#/$defs/StrongInline"
                },
                {
                    "$ref": "#/$defs/ImageInline"
                },
                {
                    "$ref": "#/$defs/FootnoteReferenceInline"
                },
                {
                    "$ref": "#/$defs/StrikethroughInline"
                },
                {
                    "$ref": "#/$defs/MathInline"
                },
                {
                    "$ref": "#/$defs/SuperscriptInline"
                },
                {
                    "$ref": "#/$defs/SubscriptInline"
                },
                {
                    "$ref": "#/$defs/HighlightInline"
                }
            ],
            "description": "An inline-level node in a parsed documentation comment (text, emphasis, code spans, references, etc.)."
        },
        "Location": {
            "type": "object",
            "description": "A source location (file path plus line/column).",
            "properties": {
                "shortPath": {
                    "type": "string",
                    "description": "Path relative to the configured source root, suitable for display."
                },
                "sourcePath": {
                    "type": "string",
                    "description": "Path relative to the source-root setting, used for documentation cross-references."
                },
                "lineNumber": {
                    "type": "integer",
                    "description": "1-based line number of the location."
                },
                "columnNumber": {
                    "type": "integer",
                    "description": "1-based column number of the location."
                },
                "documented": {
                    "type": "boolean",
                    "description": "True when a doc comment was attached at this location."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "lineNumber",
                "columnNumber",
                "documented"
            ]
        },
        "Param": {
            "type": "object",
            "description": "A function parameter.",
            "properties": {
                "type": {
                    "$ref": "#/$defs/Type",
                    "description": "Declared parameter type."
                },
                "name": {
                    "type": "string",
                    "description": "Parameter name as written in the declaration. Empty for unnamed parameters."
                },
                "default": {
                    "type": "string",
                    "description": "Default argument expression as written, or absent if the parameter has no default."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "type"
            ]
        },
        "TemplateInfo": {
            "type": "object",
            "description": "Template metadata attached to a templated symbol: parameters, arguments (for specializations), and a reference to the primary template.",
            "properties": {
                "params": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/TParam"
                    },
                    "description": "Template parameter list, in declaration order."
                },
                "args": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/TArg"
                    },
                    "description": "Template arguments applied to the primary template, in declaration order. Present on (partial) specializations and instantiations; empty for the primary template itself."
                },
                "requires": {
                    "type": "string",
                    "description": "Trailing `requires`-clause expression as written; empty when the template has no constraints."
                },
                "primary": {
                    "type": "string",
                    "description": "Identifier of the primary template this entry specializes; empty when this is itself the primary."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "params",
                "args",
                "primary"
            ]
        },
        "SourceInfo": {
            "type": "object",
            "description": "Source-location metadata for a symbol: every declaration site plus the definition site, when one exists.",
            "properties": {
                "defLoc": {
                    "$ref": "#/$defs/Location",
                    "description": "Location of the symbol's definition; absent when no definition was extracted."
                },
                "loc": {
                    "type": "array",
                    "items": {
                        "$ref": "#/$defs/Location"
                    },
                    "description": "Locations of the symbol's declarations (one entry per source declaration)."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "loc"
            ]
        },
        "BaseInfo": {
            "type": "object",
            "description": "A base-class clause of a class or struct declaration.",
            "properties": {
                "type": {
                    "$ref": "#/$defs/Type",
                    "description": "Base type as written in the inheritance clause (a class or template specialization)."
                },
                "access": {
                    "type": "string",
                    "enum": [
                        "none",
                        "public",
                        "protected",
                        "private"
                    ],
                    "description": "Access specifier of the base (`\"public\"`, `\"protected\"`, or `\"private\"`)."
                },
                "isVirtual": {
                    "type": "boolean",
                    "description": "True when the base is inherited virtually."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "type",
                "access",
                "isVirtual"
            ]
        },
        "FriendInfo": {
            "type": "object",
            "description": "A `friend` declaration appearing inside a class or struct.",
            "properties": {
                "type": {
                    "$ref": "#/$defs/Type",
                    "description": "Type befriended, used when the friend declaration names a type rather than a corpus symbol."
                },
                "id": {
                    "type": "string",
                    "description": "Identifier of the symbol befriended when it lives in the corpus; empty when the friend points outside it."
                },
                "$meta": {
                    "type": "object",
                    "properties": {
                        "type": {
                            "type": "string"
                        },
                        "bases": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "required": [
                "id"
            ]
        }
    }
}