diff --git a/.gitattributes b/.gitattributes index a187d025..eaad0f91 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,5 +2,7 @@ bindings/typescript/scip.ts linguist-generated=true bindings/go/scip/scip.pb.go linguist-generated=true bindings/rust/src/generated/scip.rs linguist-generated=true bindings/haskell/src/Proto/**.hs linguist-generated=true +bindings/java/src/main/java/org/scip_code/scip/**.java linguist-generated=true +bindings/kotlin/src/main/kotlin/org/scip_code/scip/**.kt linguist-generated=true docs/scip.md linguist-generated=true yarn.lock linguist-generated=true diff --git a/.github/workflows/update-vendor-hash.yaml b/.github/workflows/update-vendor-hash.yaml index 0266b85a..2593cffd 100644 --- a/.github/workflows/update-vendor-hash.yaml +++ b/.github/workflows/update-vendor-hash.yaml @@ -20,6 +20,8 @@ on: - reprolang/go.sum - bindings/typescript/package.json - bindings/typescript/package-lock.json + - bindings/java/pom.xml + - bindings/kotlin/pom.xml permissions: contents: read @@ -60,6 +62,8 @@ jobs: for attr in \ packages.x86_64-linux.scip \ checks.x86_64-linux.go-bindings \ + checks.x86_64-linux.java-bindings \ + checks.x86_64-linux.kotlin-bindings \ checks.x86_64-linux.reprolang \ checks.x86_64-linux.typescript-bindings; do nix run github:Mic92/nix-update -- \ diff --git a/bindings/go/scip/scip.pb.go b/bindings/go/scip/scip.pb.go index fd9b87b6..4562272d 100644 --- a/bindings/go/scip/scip.pb.go +++ b/bindings/go/scip/scip.pb.go @@ -2976,7 +2976,8 @@ const file_scip_proto_rawDesc = "" + "\x03XML\x10\x1f\x12\a\n" + "\x03XSL\x10 \x12\b\n" + "\x04YAML\x10J\x12\a\n" + - "\x03Zig\x10&B-Z+github.com/scip-code/scip/bindings/go/scip/b\x06proto3" + "\x03Zig\x10&BN\n" + + "\x12org.scip_code.scipB\tScipProtoP\x01Z+github.com/scip-code/scip/bindings/go/scip/b\x06proto3" var ( file_scip_proto_rawDescOnce sync.Once diff --git a/bindings/haskell/src/Proto/Scip.hs b/bindings/haskell/src/Proto/Scip.hs index f478e2b7..5b938a9d 100644 --- a/bindings/haskell/src/Proto/Scip.hs +++ b/bindings/haskell/src/Proto/Scip.hs @@ -6654,9 +6654,10 @@ packedFileDescriptor \\ETXXML\DLE\US\DC2\a\n\ \\ETXXSL\DLE \DC2\b\n\ \\EOTYAML\DLEJ\DC2\a\n\ - \\ETXZig\DLE&B-Z+github.com/scip-code/scip/bindings/go/scip/J\227\190\STX\n\ + \\ETXZig\DLE&BN\n\ + \\DC2org.scip_code.scipB\tScipProtoP\SOHZ+github.com/scip-code/scip/bindings/go/scip/J\129\193\STX\n\ \\a\DC2\ENQ\n\ - \\NUL\128\a\SOH\n\ + \\NUL\134\a\SOH\n\ \\130\EOT\n\ \\SOH\f\DC2\ETX\n\ \\NUL\DC22\247\ETX An index contains one or more pieces of information about a given piece of\n\ @@ -6675,8 +6676,24 @@ packedFileDescriptor \\SOH\b\DC2\ETX\SO\NULB\n\ \\t\n\ \\STX\b\v\DC2\ETX\SO\NULB\n\ + \\b\n\ + \\SOH\b\DC2\ETX\SI\NUL\"\n\ + \\t\n\ + \\STX\b\n\ + \\DC2\ETX\SI\NUL\"\n\ + \\b\n\ + \\SOH\b\DC2\ETX\DC3\NUL*\n\ + \\231\SOH\n\ + \\STX\b\b\DC2\ETX\DC3\NUL*\SUB\219\SOH Avoid collision between the file-level outer class (which holds the file\n\ + \ descriptor and registerAllExtensions) and messages also called \"Scip*\"\n\ + \ once java_multiple_files emits each message as its own top-level class.\n\ + \\n\ + \\b\n\ + \\SOH\b\DC2\ETX\DC4\NUL+\n\ + \\t\n\ + \\STX\b\SOH\DC2\ETX\DC4\NUL+\n\ \\208\ETX\n\ - \\STX\EOT\NUL\DC2\EOT\SYN\NUL#\SOH\SUB\195\ETX Index represents a complete SCIP index for a workspace this is rooted at a\n\ + \\STX\EOT\NUL\DC2\EOT\FS\NUL)\SOH\SUB\195\ETX Index represents a complete SCIP index for a workspace this is rooted at a\n\ \ single directory. An Index message payload can have a large memory footprint\n\ \ and it's therefore recommended to emit and consume an Index payload one field\n\ \ value at a time. To permit streaming consumption of an Index payload, the\n\ @@ -6685,31 +6702,31 @@ packedFileDescriptor \\n\ \\n\ \\n\ - \\ETX\EOT\NUL\SOH\DC2\ETX\SYN\b\r\n\ + \\ETX\EOT\NUL\SOH\DC2\ETX\FS\b\r\n\ \)\n\ - \\EOT\EOT\NUL\STX\NUL\DC2\ETX\CAN\STX\CAN\SUB\FS Metadata about this index.\n\ + \\EOT\EOT\NUL\STX\NUL\DC2\ETX\RS\STX\CAN\SUB\FS Metadata about this index.\n\ \\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\NUL\ACK\DC2\ETX\CAN\STX\n\ + \\ENQ\EOT\NUL\STX\NUL\ACK\DC2\ETX\RS\STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\NUL\SOH\DC2\ETX\CAN\v\DC3\n\ + \\ENQ\EOT\NUL\STX\NUL\SOH\DC2\ETX\RS\v\DC3\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\NUL\ETX\DC2\ETX\CAN\SYN\ETB\n\ + \\ENQ\EOT\NUL\STX\NUL\ETX\DC2\ETX\RS\SYN\ETB\n\ \3\n\ - \\EOT\EOT\NUL\STX\SOH\DC2\ETX\SUB\STX\"\SUB& Documents that belong to this index.\n\ + \\EOT\EOT\NUL\STX\SOH\DC2\ETX \STX\"\SUB& Documents that belong to this index.\n\ \\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\SOH\EOT\DC2\ETX\SUB\STX\n\ + \\ENQ\EOT\NUL\STX\SOH\EOT\DC2\ETX \STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\SOH\ACK\DC2\ETX\SUB\v\DC3\n\ + \\ENQ\EOT\NUL\STX\SOH\ACK\DC2\ETX \v\DC3\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\SOH\SOH\DC2\ETX\SUB\DC4\GS\n\ + \\ENQ\EOT\NUL\STX\SOH\SOH\DC2\ETX \DC4\GS\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\SOH\ETX\DC2\ETX\SUB !\n\ + \\ENQ\EOT\NUL\STX\SOH\ETX\DC2\ETX !\n\ \\246\ETX\n\ - \\EOT\EOT\NUL\STX\STX\DC2\ETX \STX2\SUB\233\STX (optional) Symbols that are referenced from this index but are defined in\n\ + \\EOT\EOT\NUL\STX\STX\DC2\ETX&\STX2\SUB\233\STX (optional) Symbols that are referenced from this index but are defined in\n\ \ an external package (a separate `Index` message). Leave this field empty\n\ \ if you assume the external package will get indexed separately. If the\n\ \ external package won't get indexed for some reason then you can use this\n\ @@ -6718,155 +6735,155 @@ packedFileDescriptor \ function in `IndexVisitor` and update `ParseStreaming`.\n\ \\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\STX\EOT\DC2\ETX \STX\n\ + \\ENQ\EOT\NUL\STX\STX\EOT\DC2\ETX&\STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\STX\ACK\DC2\ETX \v\FS\n\ + \\ENQ\EOT\NUL\STX\STX\ACK\DC2\ETX&\v\FS\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\STX\SOH\DC2\ETX \GS-\n\ + \\ENQ\EOT\NUL\STX\STX\SOH\DC2\ETX&\GS-\n\ \\f\n\ - \\ENQ\EOT\NUL\STX\STX\ETX\DC2\ETX 01\n\ + \\ENQ\EOT\NUL\STX\STX\ETX\DC2\ETX&01\n\ \\n\ \\n\ - \\STX\EOT\SOH\DC2\EOT%\NUL2\SOH\n\ + \\STX\EOT\SOH\DC2\EOT+\NUL8\SOH\n\ \\n\ \\n\ - \\ETX\EOT\SOH\SOH\DC2\ETX%\b\DLE\n\ + \\ETX\EOT\SOH\SOH\DC2\ETX+\b\DLE\n\ \N\n\ - \\EOT\EOT\SOH\STX\NUL\DC2\ETX'\STX\RS\SUBA Which version of this protocol was used to generate this index?\n\ + \\EOT\EOT\SOH\STX\NUL\DC2\ETX-\STX\RS\SUBA Which version of this protocol was used to generate this index?\n\ \\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\NUL\ACK\DC2\ETX'\STX\DC1\n\ + \\ENQ\EOT\SOH\STX\NUL\ACK\DC2\ETX-\STX\DC1\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\NUL\SOH\DC2\ETX'\DC2\EM\n\ + \\ENQ\EOT\SOH\STX\NUL\SOH\DC2\ETX-\DC2\EM\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\NUL\ETX\DC2\ETX'\FS\GS\n\ + \\ENQ\EOT\SOH\STX\NUL\ETX\DC2\ETX-\FS\GS\n\ \C\n\ - \\EOT\EOT\SOH\STX\SOH\DC2\ETX)\STX\EM\SUB6 Information about the tool that produced this index.\n\ + \\EOT\EOT\SOH\STX\SOH\DC2\ETX/\STX\EM\SUB6 Information about the tool that produced this index.\n\ \\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\SOH\ACK\DC2\ETX)\STX\n\ + \\ENQ\EOT\SOH\STX\SOH\ACK\DC2\ETX/\STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\SOH\SOH\DC2\ETX)\v\DC4\n\ + \\ENQ\EOT\SOH\STX\SOH\SOH\DC2\ETX/\v\DC4\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\SOH\ETX\DC2\ETX)\ETB\CAN\n\ + \\ENQ\EOT\SOH\STX\SOH\ETX\DC2\ETX/\ETB\CAN\n\ \\162\SOH\n\ - \\EOT\EOT\SOH\STX\STX\DC2\ETX-\STX\SUB\SUB\148\SOH URI-encoded absolute path to the root directory of this index. All\n\ + \\EOT\EOT\SOH\STX\STX\DC2\ETX3\STX\SUB\SUB\148\SOH URI-encoded absolute path to the root directory of this index. All\n\ \ documents in this index must appear in a subdirectory of this root\n\ \ directory.\n\ \\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\STX\ENQ\DC2\ETX-\STX\b\n\ + \\ENQ\EOT\SOH\STX\STX\ENQ\DC2\ETX3\STX\b\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\STX\SOH\DC2\ETX-\t\NAK\n\ + \\ENQ\EOT\SOH\STX\STX\SOH\DC2\ETX3\t\NAK\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\STX\ETX\DC2\ETX-\CAN\EM\n\ + \\ENQ\EOT\SOH\STX\STX\ETX\DC2\ETX3\CAN\EM\n\ \\224\SOH\n\ - \\EOT\EOT\SOH\STX\ETX\DC2\ETX1\STX*\SUB\210\SOH Text encoding of the source files on disk that are referenced from\n\ + \\EOT\EOT\SOH\STX\ETX\DC2\ETX7\STX*\SUB\210\SOH Text encoding of the source files on disk that are referenced from\n\ \ `Document.relative_path`. This value is unrelated to the `Document.text`\n\ \ field, which is a Protobuf string and hence must be UTF-8 encoded.\n\ \\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\ETX\ACK\DC2\ETX1\STX\SO\n\ + \\ENQ\EOT\SOH\STX\ETX\ACK\DC2\ETX7\STX\SO\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\ETX\SOH\DC2\ETX1\SI%\n\ + \\ENQ\EOT\SOH\STX\ETX\SOH\DC2\ETX7\SI%\n\ \\f\n\ - \\ENQ\EOT\SOH\STX\ETX\ETX\DC2\ETX1()\n\ + \\ENQ\EOT\SOH\STX\ETX\ETX\DC2\ETX7()\n\ \\n\ \\n\ - \\STX\ENQ\NUL\DC2\EOT4\NUL6\SOH\n\ + \\STX\ENQ\NUL\DC2\EOT:\NUL<\SOH\n\ \\n\ \\n\ - \\ETX\ENQ\NUL\SOH\DC2\ETX4\ENQ\DC4\n\ + \\ETX\ENQ\NUL\SOH\DC2\ETX:\ENQ\DC4\n\ \\v\n\ - \\EOT\ENQ\NUL\STX\NUL\DC2\ETX5\STX!\n\ + \\EOT\ENQ\NUL\STX\NUL\DC2\ETX;\STX!\n\ \\f\n\ - \\ENQ\ENQ\NUL\STX\NUL\SOH\DC2\ETX5\STX\FS\n\ + \\ENQ\ENQ\NUL\STX\NUL\SOH\DC2\ETX;\STX\FS\n\ \\f\n\ - \\ENQ\ENQ\NUL\STX\NUL\STX\DC2\ETX5\US \n\ + \\ENQ\ENQ\NUL\STX\NUL\STX\DC2\ETX;\US \n\ \\n\ \\n\ - \\STX\ENQ\SOH\DC2\EOT8\NUL<\SOH\n\ + \\STX\ENQ\SOH\DC2\EOT>\NULB\SOH\n\ \\n\ \\n\ - \\ETX\ENQ\SOH\SOH\DC2\ETX8\ENQ\DC1\n\ + \\ETX\ENQ\SOH\SOH\DC2\ETX>\ENQ\DC1\n\ \\v\n\ - \\EOT\ENQ\SOH\STX\NUL\DC2\ETX9\STX\RS\n\ + \\EOT\ENQ\SOH\STX\NUL\DC2\ETX?\STX\RS\n\ \\f\n\ - \\ENQ\ENQ\SOH\STX\NUL\SOH\DC2\ETX9\STX\EM\n\ + \\ENQ\ENQ\SOH\STX\NUL\SOH\DC2\ETX?\STX\EM\n\ \\f\n\ - \\ENQ\ENQ\SOH\STX\NUL\STX\DC2\ETX9\FS\GS\n\ + \\ENQ\ENQ\SOH\STX\NUL\STX\DC2\ETX?\FS\GS\n\ \\v\n\ - \\EOT\ENQ\SOH\STX\SOH\DC2\ETX:\STX\v\n\ + \\EOT\ENQ\SOH\STX\SOH\DC2\ETX@\STX\v\n\ \\f\n\ - \\ENQ\ENQ\SOH\STX\SOH\SOH\DC2\ETX:\STX\ACK\n\ + \\ENQ\ENQ\SOH\STX\SOH\SOH\DC2\ETX@\STX\ACK\n\ \\f\n\ - \\ENQ\ENQ\SOH\STX\SOH\STX\DC2\ETX:\t\n\ + \\ENQ\ENQ\SOH\STX\SOH\STX\DC2\ETX@\t\n\ \\n\ \\v\n\ - \\EOT\ENQ\SOH\STX\STX\DC2\ETX;\STX\f\n\ + \\EOT\ENQ\SOH\STX\STX\DC2\ETXA\STX\f\n\ \\f\n\ - \\ENQ\ENQ\SOH\STX\STX\SOH\DC2\ETX;\STX\a\n\ + \\ENQ\ENQ\SOH\STX\STX\SOH\DC2\ETXA\STX\a\n\ \\f\n\ - \\ENQ\ENQ\SOH\STX\STX\STX\DC2\ETX;\n\ + \\ENQ\ENQ\SOH\STX\STX\STX\DC2\ETXA\n\ \\v\n\ \\n\ \\n\ - \\STX\EOT\STX\DC2\EOT>\NULE\SOH\n\ + \\STX\EOT\STX\DC2\EOTD\NULK\SOH\n\ \\n\ \\n\ - \\ETX\EOT\STX\SOH\DC2\ETX>\b\DLE\n\ + \\ETX\EOT\STX\SOH\DC2\ETXD\b\DLE\n\ \<\n\ - \\EOT\EOT\STX\STX\NUL\DC2\ETX@\STX\DC2\SUB/ Name of the indexer that produced this index.\n\ + \\EOT\EOT\STX\STX\NUL\DC2\ETXF\STX\DC2\SUB/ Name of the indexer that produced this index.\n\ \\n\ \\f\n\ - \\ENQ\EOT\STX\STX\NUL\ENQ\DC2\ETX@\STX\b\n\ + \\ENQ\EOT\STX\STX\NUL\ENQ\DC2\ETXF\STX\b\n\ \\f\n\ - \\ENQ\EOT\STX\STX\NUL\SOH\DC2\ETX@\t\r\n\ + \\ENQ\EOT\STX\STX\NUL\SOH\DC2\ETXF\t\r\n\ \\f\n\ - \\ENQ\EOT\STX\STX\NUL\ETX\DC2\ETX@\DLE\DC1\n\ + \\ENQ\EOT\STX\STX\NUL\ETX\DC2\ETXF\DLE\DC1\n\ \?\n\ - \\EOT\EOT\STX\STX\SOH\DC2\ETXB\STX\NAK\SUB2 Version of the indexer that produced this index.\n\ + \\EOT\EOT\STX\STX\SOH\DC2\ETXH\STX\NAK\SUB2 Version of the indexer that produced this index.\n\ \\n\ \\f\n\ - \\ENQ\EOT\STX\STX\SOH\ENQ\DC2\ETXB\STX\b\n\ + \\ENQ\EOT\STX\STX\SOH\ENQ\DC2\ETXH\STX\b\n\ \\f\n\ - \\ENQ\EOT\STX\STX\SOH\SOH\DC2\ETXB\t\DLE\n\ + \\ENQ\EOT\STX\STX\SOH\SOH\DC2\ETXH\t\DLE\n\ \\f\n\ - \\ENQ\EOT\STX\STX\SOH\ETX\DC2\ETXB\DC3\DC4\n\ + \\ENQ\EOT\STX\STX\SOH\ETX\DC2\ETXH\DC3\DC4\n\ \L\n\ - \\EOT\EOT\STX\STX\STX\DC2\ETXD\STX \SUB? Command-line arguments that were used to invoke this indexer.\n\ + \\EOT\EOT\STX\STX\STX\DC2\ETXJ\STX \SUB? Command-line arguments that were used to invoke this indexer.\n\ \\n\ \\f\n\ - \\ENQ\EOT\STX\STX\STX\EOT\DC2\ETXD\STX\n\ + \\ENQ\EOT\STX\STX\STX\EOT\DC2\ETXJ\STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\STX\STX\STX\ENQ\DC2\ETXD\v\DC1\n\ + \\ENQ\EOT\STX\STX\STX\ENQ\DC2\ETXJ\v\DC1\n\ \\f\n\ - \\ENQ\EOT\STX\STX\STX\SOH\DC2\ETXD\DC2\ESC\n\ + \\ENQ\EOT\STX\STX\STX\SOH\DC2\ETXJ\DC2\ESC\n\ \\f\n\ - \\ENQ\EOT\STX\STX\STX\ETX\DC2\ETXD\RS\US\n\ + \\ENQ\EOT\STX\STX\STX\ETX\DC2\ETXJ\RS\US\n\ \H\n\ - \\STX\EOT\ETX\DC2\EOTH\NULs\SOH\SUB< Document defines the metadata about a source file on disk.\n\ + \\STX\EOT\ETX\DC2\EOTN\NULy\SOH\SUB< Document defines the metadata about a source file on disk.\n\ \\n\ \\n\ \\n\ - \\ETX\EOT\ETX\SOH\DC2\ETXH\b\DLE\n\ + \\ETX\EOT\ETX\SOH\DC2\ETXN\b\DLE\n\ \\165\STX\n\ - \\EOT\EOT\ETX\STX\NUL\DC2\ETXM\STX\SYN\SUB\151\STX The string ID for the programming language this file is written in.\n\ + \\EOT\EOT\ETX\STX\NUL\DC2\ETXS\STX\SYN\SUB\151\STX The string ID for the programming language this file is written in.\n\ \ The `Language` enum contains the names of most common programming languages.\n\ \ This field is typed as a string to permit any programming language, including\n\ \ ones that are not specified by the `Language` enum.\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\NUL\ENQ\DC2\ETXM\STX\b\n\ + \\ENQ\EOT\ETX\STX\NUL\ENQ\DC2\ETXS\STX\b\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\NUL\SOH\DC2\ETXM\t\DC1\n\ + \\ENQ\EOT\ETX\STX\NUL\SOH\DC2\ETXS\t\DC1\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\NUL\ETX\DC2\ETXM\DC4\NAK\n\ + \\ENQ\EOT\ETX\STX\NUL\ETX\DC2\ETXS\DC4\NAK\n\ \\181\ETX\n\ - \\EOT\EOT\ETX\STX\SOH\DC2\ETXW\STX\ESC\SUB\167\ETX (Required) Unique path to the text document.\n\ + \\EOT\EOT\ETX\STX\SOH\DC2\ETX]\STX\ESC\SUB\167\ETX (Required) Unique path to the text document.\n\ \\n\ \ 1. The path must be relative to the directory supplied in the associated\n\ \ `Metadata.project_root`.\n\ @@ -6877,54 +6894,54 @@ packedFileDescriptor \ or '.' or '..'.\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\SOH\ENQ\DC2\ETXW\STX\b\n\ + \\ENQ\EOT\ETX\STX\SOH\ENQ\DC2\ETX]\STX\b\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\SOH\SOH\DC2\ETXW\t\SYN\n\ + \\ENQ\EOT\ETX\STX\SOH\SOH\DC2\ETX]\t\SYN\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\SOH\ETX\DC2\ETXW\EM\SUB\n\ + \\ENQ\EOT\ETX\STX\SOH\ETX\DC2\ETX]\EM\SUB\n\ \4\n\ - \\EOT\EOT\ETX\STX\STX\DC2\ETXY\STX&\SUB' Occurrences that appear in this file.\n\ + \\EOT\EOT\ETX\STX\STX\DC2\ETX_\STX&\SUB' Occurrences that appear in this file.\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\STX\EOT\DC2\ETXY\STX\n\ + \\ENQ\EOT\ETX\STX\STX\EOT\DC2\ETX_\STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\STX\ACK\DC2\ETXY\v\NAK\n\ + \\ENQ\EOT\ETX\STX\STX\ACK\DC2\ETX_\v\NAK\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\STX\SOH\DC2\ETXY\SYN!\n\ + \\ENQ\EOT\ETX\STX\STX\SOH\DC2\ETX_\SYN!\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\STX\ETX\DC2\ETXY$%\n\ + \\ENQ\EOT\ETX\STX\STX\ETX\DC2\ETX_$%\n\ \\234\SOH\n\ - \\EOT\EOT\ETX\STX\ETX\DC2\ETX_\STX)\SUB\220\SOH Symbols that are \"defined\" within this document.\n\ + \\EOT\EOT\ETX\STX\ETX\DC2\ETXe\STX)\SUB\220\SOH Symbols that are \"defined\" within this document.\n\ \\n\ \ This should include symbols which technically do not have any definition,\n\ \ but have a reference and are defined by some other symbol (see\n\ \ Relationship.is_definition).\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\EOT\DC2\ETX_\STX\n\ + \\ENQ\EOT\ETX\STX\ETX\EOT\DC2\ETXe\STX\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\ACK\DC2\ETX_\v\FS\n\ + \\ENQ\EOT\ETX\STX\ETX\ACK\DC2\ETXe\v\FS\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\SOH\DC2\ETX_\GS$\n\ + \\ENQ\EOT\ETX\STX\ETX\SOH\DC2\ETXe\GS$\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ETX\ETX\DC2\ETX_'(\n\ + \\ENQ\EOT\ETX\STX\ETX\ETX\DC2\ETXe'(\n\ \\128\ETX\n\ - \\EOT\EOT\ETX\STX\EOT\DC2\ETXf\STX\DC2\SUB\242\STX (optional) Text contents of this document. Indexers are not expected to\n\ + \\EOT\EOT\ETX\STX\EOT\DC2\ETXl\STX\DC2\SUB\242\STX (optional) Text contents of this document. Indexers are not expected to\n\ \ include the text by default. It's preferable that clients read the text\n\ \ contents from the file system by resolving the absolute path from joining\n\ \ `Index.metadata.project_root` and `Document.relative_path`. This field\n\ \ can be useful for testing or when working with virtual/in-memory documents.\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\EOT\ENQ\DC2\ETXf\STX\b\n\ + \\ENQ\EOT\ETX\STX\EOT\ENQ\DC2\ETXl\STX\b\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\EOT\SOH\DC2\ETXf\t\r\n\ + \\ENQ\EOT\ETX\STX\EOT\SOH\DC2\ETXl\t\r\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\EOT\ETX\DC2\ETXf\DLE\DC1\n\ + \\ENQ\EOT\ETX\STX\EOT\ETX\DC2\ETXl\DLE\DC1\n\ \\231\ETX\n\ - \\EOT\EOT\ETX\STX\ENQ\DC2\ETXr\STX)\SUB\217\ETX Specifies the encoding used for source ranges in this Document.\n\ + \\EOT\EOT\ETX\STX\ENQ\DC2\ETXx\STX)\SUB\217\ETX Specifies the encoding used for source ranges in this Document.\n\ \\n\ \ Usually, this will match the type used to index the string type\n\ \ in the indexer's implementation language in O(1) time.\n\ @@ -6936,27 +6953,27 @@ packedFileDescriptor \ use UTF8ByteOffsetFromLineStart.\n\ \\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ENQ\ACK\DC2\ETXr\STX\DC2\n\ + \\ENQ\EOT\ETX\STX\ENQ\ACK\DC2\ETXx\STX\DC2\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ENQ\SOH\DC2\ETXr\DC3$\n\ + \\ENQ\EOT\ETX\STX\ENQ\SOH\DC2\ETXx\DC3$\n\ \\f\n\ - \\ENQ\EOT\ETX\STX\ENQ\ETX\DC2\ETXr'(\n\ + \\ENQ\EOT\ETX\STX\ENQ\ETX\DC2\ETXx'(\n\ \Q\n\ - \\STX\ENQ\STX\DC2\ENQv\NUL\142\SOH\SOH\SUBD Encoding used to interpret the 'character' value in source ranges.\n\ + \\STX\ENQ\STX\DC2\ENQ|\NUL\148\SOH\SOH\SUBD Encoding used to interpret the 'character' value in source ranges.\n\ \\n\ \\n\ \\n\ - \\ETX\ENQ\STX\SOH\DC2\ETXv\ENQ\NAK\n\ + \\ETX\ENQ\STX\SOH\DC2\ETX|\ENQ\NAK\n\ \\147\SOH\n\ - \\EOT\ENQ\STX\STX\NUL\DC2\ETXy\STX\"\SUB\133\SOH Default value. This value should not be used by new SCIP indexers\n\ + \\EOT\ENQ\STX\STX\NUL\DC2\ETX\DEL\STX\"\SUB\133\SOH Default value. This value should not be used by new SCIP indexers\n\ \ so that a consumer can process the SCIP index without ambiguity.\n\ \\n\ \\f\n\ - \\ENQ\ENQ\STX\STX\NUL\SOH\DC2\ETXy\STX\GS\n\ + \\ENQ\ENQ\STX\STX\NUL\SOH\DC2\ETX\DEL\STX\GS\n\ \\f\n\ - \\ENQ\ENQ\STX\STX\NUL\STX\DC2\ETXy !\n\ + \\ENQ\ENQ\STX\STX\NUL\STX\DC2\ETX\DEL !\n\ \\247\SOH\n\ - \\EOT\ENQ\STX\STX\SOH\DC2\EOT\128\SOH\STX&\SUB\232\SOH The 'character' value is interpreted as an offset in terms\n\ + \\EOT\ENQ\STX\STX\SOH\DC2\EOT\134\SOH\STX&\SUB\232\SOH The 'character' value is interpreted as an offset in terms\n\ \ of UTF-8 code units (i.e. bytes).\n\ \\n\ \ Example: For the string \"\240\159\154\128 Woo\" in UTF-8, the bytes are\n\ @@ -6964,11 +6981,11 @@ packedFileDescriptor \ would be 5.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\SOH\SOH\DC2\EOT\128\SOH\STX!\n\ + \\ENQ\ENQ\STX\STX\SOH\SOH\DC2\EOT\134\SOH\STX!\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\SOH\STX\DC2\EOT\128\SOH$%\n\ + \\ENQ\ENQ\STX\STX\SOH\STX\DC2\EOT\134\SOH$%\n\ \\130\STX\n\ - \\EOT\ENQ\STX\STX\STX\DC2\EOT\135\SOH\STX'\SUB\243\SOH The 'character' value is interpreted as an offset in terms\n\ + \\EOT\ENQ\STX\STX\STX\DC2\EOT\141\SOH\STX'\SUB\243\SOH The 'character' value is interpreted as an offset in terms\n\ \ of UTF-16 code units (each is 2 bytes).\n\ \\n\ \ Example: For the string \"\240\159\154\128 Woo\", the UTF-16 code units are\n\ @@ -6976,22 +6993,22 @@ packedFileDescriptor \ would be 3.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\STX\SOH\DC2\EOT\135\SOH\STX\"\n\ + \\ENQ\ENQ\STX\STX\STX\SOH\DC2\EOT\141\SOH\STX\"\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\STX\STX\DC2\EOT\135\SOH%&\n\ + \\ENQ\ENQ\STX\STX\STX\STX\DC2\EOT\141\SOH%&\n\ \\245\SOH\n\ - \\EOT\ENQ\STX\STX\ETX\DC2\EOT\141\SOH\STX'\SUB\230\SOH The 'character' value is interpreted as an offset in terms\n\ + \\EOT\ENQ\STX\STX\ETX\DC2\EOT\147\SOH\STX'\SUB\230\SOH The 'character' value is interpreted as an offset in terms\n\ \ of UTF-32 code units (each is 4 bytes).\n\ \\n\ \ Example: For the string \"\240\159\154\128 Woo\", the UTF-32 code units are\n\ \ ['\240\159\154\128', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ETX\SOH\DC2\EOT\141\SOH\STX\"\n\ + \\ENQ\ENQ\STX\STX\ETX\SOH\DC2\EOT\147\SOH\STX\"\n\ \\r\n\ - \\ENQ\ENQ\STX\STX\ETX\STX\DC2\EOT\141\SOH%&\n\ + \\ENQ\ENQ\STX\STX\ETX\STX\DC2\EOT\147\SOH%&\n\ \\204\DC2\n\ - \\STX\EOT\EOT\DC2\ACK\186\SOH\NUL\190\SOH\SOH\SUB\189\DC2 Symbol is similar to a URI, it identifies a class, method, or a local\n\ + \\STX\EOT\EOT\DC2\ACK\192\SOH\NUL\196\SOH\SOH\SUB\189\DC2 Symbol is similar to a URI, it identifies a class, method, or a local\n\ \ variable. `SymbolInformation` contains rich metadata about symbols such as\n\ \ the docstring.\n\ \\n\ @@ -7035,263 +7052,263 @@ packedFileDescriptor \ and cannot be accessed from outside the Document.\n\ \\n\ \\v\n\ - \\ETX\EOT\EOT\SOH\DC2\EOT\186\SOH\b\SO\n\ + \\ETX\EOT\EOT\SOH\DC2\EOT\192\SOH\b\SO\n\ \\f\n\ - \\EOT\EOT\EOT\STX\NUL\DC2\EOT\187\SOH\STX\DC4\n\ + \\EOT\EOT\EOT\STX\NUL\DC2\EOT\193\SOH\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\NUL\ENQ\DC2\EOT\187\SOH\STX\b\n\ + \\ENQ\EOT\EOT\STX\NUL\ENQ\DC2\EOT\193\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\NUL\SOH\DC2\EOT\187\SOH\t\SI\n\ + \\ENQ\EOT\EOT\STX\NUL\SOH\DC2\EOT\193\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\NUL\ETX\DC2\EOT\187\SOH\DC2\DC3\n\ + \\ENQ\EOT\EOT\STX\NUL\ETX\DC2\EOT\193\SOH\DC2\DC3\n\ \\f\n\ - \\EOT\EOT\EOT\STX\SOH\DC2\EOT\188\SOH\STX\SYN\n\ + \\EOT\EOT\EOT\STX\SOH\DC2\EOT\194\SOH\STX\SYN\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\SOH\ACK\DC2\EOT\188\SOH\STX\t\n\ + \\ENQ\EOT\EOT\STX\SOH\ACK\DC2\EOT\194\SOH\STX\t\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\SOH\SOH\DC2\EOT\188\SOH\n\ + \\ENQ\EOT\EOT\STX\SOH\SOH\DC2\EOT\194\SOH\n\ \\DC1\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\SOH\ETX\DC2\EOT\188\SOH\DC4\NAK\n\ + \\ENQ\EOT\EOT\STX\SOH\ETX\DC2\EOT\194\SOH\DC4\NAK\n\ \\f\n\ - \\EOT\EOT\EOT\STX\STX\DC2\EOT\189\SOH\STX&\n\ + \\EOT\EOT\EOT\STX\STX\DC2\EOT\195\SOH\STX&\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\EOT\DC2\EOT\189\SOH\STX\n\ + \\ENQ\EOT\EOT\STX\STX\EOT\DC2\EOT\195\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\ACK\DC2\EOT\189\SOH\v\NAK\n\ + \\ENQ\EOT\EOT\STX\STX\ACK\DC2\EOT\195\SOH\v\NAK\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\SOH\DC2\EOT\189\SOH\SYN!\n\ + \\ENQ\EOT\EOT\STX\STX\SOH\DC2\EOT\195\SOH\SYN!\n\ \\r\n\ - \\ENQ\EOT\EOT\STX\STX\ETX\DC2\EOT\189\SOH$%\n\ + \\ENQ\EOT\EOT\STX\STX\ETX\DC2\EOT\195\SOH$%\n\ \q\n\ - \\STX\EOT\ENQ\DC2\ACK\195\SOH\NUL\199\SOH\SOH\SUBc Unit of packaging and distribution.\n\ + \\STX\EOT\ENQ\DC2\ACK\201\SOH\NUL\205\SOH\SOH\SUBc Unit of packaging and distribution.\n\ \\n\ \ NOTE: This corresponds to a module in Go and JVM languages.\n\ \\n\ \\v\n\ - \\ETX\EOT\ENQ\SOH\DC2\EOT\195\SOH\b\SI\n\ + \\ETX\EOT\ENQ\SOH\DC2\EOT\201\SOH\b\SI\n\ \\f\n\ - \\EOT\EOT\ENQ\STX\NUL\DC2\EOT\196\SOH\STX\NAK\n\ + \\EOT\EOT\ENQ\STX\NUL\DC2\EOT\202\SOH\STX\NAK\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\NUL\ENQ\DC2\EOT\196\SOH\STX\b\n\ + \\ENQ\EOT\ENQ\STX\NUL\ENQ\DC2\EOT\202\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\NUL\SOH\DC2\EOT\196\SOH\t\DLE\n\ + \\ENQ\EOT\ENQ\STX\NUL\SOH\DC2\EOT\202\SOH\t\DLE\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\NUL\ETX\DC2\EOT\196\SOH\DC3\DC4\n\ + \\ENQ\EOT\ENQ\STX\NUL\ETX\DC2\EOT\202\SOH\DC3\DC4\n\ \\f\n\ - \\EOT\EOT\ENQ\STX\SOH\DC2\EOT\197\SOH\STX\DC2\n\ + \\EOT\EOT\ENQ\STX\SOH\DC2\EOT\203\SOH\STX\DC2\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\SOH\ENQ\DC2\EOT\197\SOH\STX\b\n\ + \\ENQ\EOT\ENQ\STX\SOH\ENQ\DC2\EOT\203\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\SOH\SOH\DC2\EOT\197\SOH\t\r\n\ + \\ENQ\EOT\ENQ\STX\SOH\SOH\DC2\EOT\203\SOH\t\r\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\SOH\ETX\DC2\EOT\197\SOH\DLE\DC1\n\ + \\ENQ\EOT\ENQ\STX\SOH\ETX\DC2\EOT\203\SOH\DLE\DC1\n\ \\f\n\ - \\EOT\EOT\ENQ\STX\STX\DC2\EOT\198\SOH\STX\NAK\n\ + \\EOT\EOT\ENQ\STX\STX\DC2\EOT\204\SOH\STX\NAK\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\STX\ENQ\DC2\EOT\198\SOH\STX\b\n\ + \\ENQ\EOT\ENQ\STX\STX\ENQ\DC2\EOT\204\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\STX\SOH\DC2\EOT\198\SOH\t\DLE\n\ + \\ENQ\EOT\ENQ\STX\STX\SOH\DC2\EOT\204\SOH\t\DLE\n\ \\r\n\ - \\ENQ\EOT\ENQ\STX\STX\ETX\DC2\EOT\198\SOH\DC3\DC4\n\ + \\ENQ\EOT\ENQ\STX\STX\ETX\DC2\EOT\204\SOH\DC3\DC4\n\ \\f\n\ - \\STX\EOT\ACK\DC2\ACK\201\SOH\NUL\226\SOH\SOH\n\ + \\STX\EOT\ACK\DC2\ACK\207\SOH\NUL\232\SOH\SOH\n\ \\v\n\ - \\ETX\EOT\ACK\SOH\DC2\EOT\201\SOH\b\DC2\n\ + \\ETX\EOT\ACK\SOH\DC2\EOT\207\SOH\b\DC2\n\ \\SO\n\ - \\EOT\EOT\ACK\EOT\NUL\DC2\ACK\202\SOH\STX\220\SOH\ETX\n\ + \\EOT\EOT\ACK\EOT\NUL\DC2\ACK\208\SOH\STX\226\SOH\ETX\n\ \\r\n\ - \\ENQ\EOT\ACK\EOT\NUL\SOH\DC2\EOT\202\SOH\a\r\n\ + \\ENQ\EOT\ACK\EOT\NUL\SOH\DC2\EOT\208\SOH\a\r\n\ \\r\n\ - \\ENQ\EOT\ACK\EOT\NUL\ETX\DC2\EOT\203\SOH\EOT\RS\n\ + \\ENQ\EOT\ACK\EOT\NUL\ETX\DC2\EOT\209\SOH\EOT\RS\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\ETX\STX\DC2\EOT\203\SOH\EOT\RS\n\ + \\ACK\EOT\ACK\EOT\NUL\ETX\STX\DC2\EOT\209\SOH\EOT\RS\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\NUL\DC2\EOT\204\SOH\EOT\SUB\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\NUL\DC2\EOT\210\SOH\EOT\SUB\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\NUL\SOH\DC2\EOT\204\SOH\EOT\NAK\n\ + \\a\EOT\ACK\EOT\NUL\STX\NUL\SOH\DC2\EOT\210\SOH\EOT\NAK\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\NUL\STX\DC2\EOT\204\SOH\CAN\EM\n\ + \\a\EOT\ACK\EOT\NUL\STX\NUL\STX\DC2\EOT\210\SOH\CAN\EM\n\ \}\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\SOH\DC2\EOT\208\SOH\EOT\DC2\SUBm Unit of code abstraction and/or namespacing.\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\SOH\DC2\EOT\214\SOH\EOT\DC2\SUBm Unit of code abstraction and/or namespacing.\n\ \\n\ \ NOTE: This corresponds to a package in Go and JVM languages.\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\SOH\SOH\DC2\EOT\208\SOH\EOT\r\n\ + \\a\EOT\ACK\EOT\NUL\STX\SOH\SOH\DC2\EOT\214\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\SOH\STX\DC2\EOT\208\SOH\DLE\DC1\n\ + \\a\EOT\ACK\EOT\NUL\STX\SOH\STX\DC2\EOT\214\SOH\DLE\DC1\n\ \(\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\STX\DC2\EOT\210\SOH\EOT$\SUB\CAN Use Namespace instead.\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\STX\DC2\EOT\216\SOH\EOT$\SUB\CAN Use Namespace instead.\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\STX\SOH\DC2\EOT\210\SOH\EOT\v\n\ + \\a\EOT\ACK\EOT\NUL\STX\STX\SOH\DC2\EOT\216\SOH\EOT\v\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\STX\STX\DC2\EOT\210\SOH\SO\SI\n\ + \\a\EOT\ACK\EOT\NUL\STX\STX\STX\DC2\EOT\216\SOH\SO\SI\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\STX\ETX\DC2\EOT\210\SOH\DLE#\n\ + \\a\EOT\ACK\EOT\NUL\STX\STX\ETX\DC2\EOT\216\SOH\DLE#\n\ \\DLE\n\ - \\b\EOT\ACK\EOT\NUL\STX\STX\ETX\SOH\DC2\EOT\210\SOH\DC1\"\n\ + \\b\EOT\ACK\EOT\NUL\STX\STX\ETX\SOH\DC2\EOT\216\SOH\DC1\"\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\ETX\DC2\EOT\211\SOH\EOT\r\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\ETX\DC2\EOT\217\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ETX\SOH\DC2\EOT\211\SOH\EOT\b\n\ + \\a\EOT\ACK\EOT\NUL\STX\ETX\SOH\DC2\EOT\217\SOH\EOT\b\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ETX\STX\DC2\EOT\211\SOH\v\f\n\ + \\a\EOT\ACK\EOT\NUL\STX\ETX\STX\DC2\EOT\217\SOH\v\f\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\EOT\DC2\EOT\212\SOH\EOT\r\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\EOT\DC2\EOT\218\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\EOT\SOH\DC2\EOT\212\SOH\EOT\b\n\ + \\a\EOT\ACK\EOT\NUL\STX\EOT\SOH\DC2\EOT\218\SOH\EOT\b\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\EOT\STX\DC2\EOT\212\SOH\v\f\n\ + \\a\EOT\ACK\EOT\NUL\STX\EOT\STX\DC2\EOT\218\SOH\v\f\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\ENQ\DC2\EOT\213\SOH\EOT\SI\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\ENQ\DC2\EOT\219\SOH\EOT\SI\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ENQ\SOH\DC2\EOT\213\SOH\EOT\n\ + \\a\EOT\ACK\EOT\NUL\STX\ENQ\SOH\DC2\EOT\219\SOH\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ENQ\STX\DC2\EOT\213\SOH\r\SO\n\ + \\a\EOT\ACK\EOT\NUL\STX\ENQ\STX\DC2\EOT\219\SOH\r\SO\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\ACK\DC2\EOT\214\SOH\EOT\SYN\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\ACK\DC2\EOT\220\SOH\EOT\SYN\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ACK\SOH\DC2\EOT\214\SOH\EOT\DC1\n\ + \\a\EOT\ACK\EOT\NUL\STX\ACK\SOH\DC2\EOT\220\SOH\EOT\DC1\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\ACK\STX\DC2\EOT\214\SOH\DC4\NAK\n\ + \\a\EOT\ACK\EOT\NUL\STX\ACK\STX\DC2\EOT\220\SOH\DC4\NAK\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\a\DC2\EOT\215\SOH\EOT\DC2\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\a\DC2\EOT\221\SOH\EOT\DC2\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\a\SOH\DC2\EOT\215\SOH\EOT\r\n\ + \\a\EOT\ACK\EOT\NUL\STX\a\SOH\DC2\EOT\221\SOH\EOT\r\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\a\STX\DC2\EOT\215\SOH\DLE\DC1\n\ + \\a\EOT\ACK\EOT\NUL\STX\a\STX\DC2\EOT\221\SOH\DLE\DC1\n\ \.\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\b\DC2\EOT\217\SOH\EOT\r\SUB\RS Can be used for any purpose.\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\b\DC2\EOT\223\SOH\EOT\r\SUB\RS Can be used for any purpose.\n\ \\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\b\SOH\DC2\EOT\217\SOH\EOT\b\n\ + \\a\EOT\ACK\EOT\NUL\STX\b\SOH\DC2\EOT\223\SOH\EOT\b\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\b\STX\DC2\EOT\217\SOH\v\f\n\ + \\a\EOT\ACK\EOT\NUL\STX\b\STX\DC2\EOT\223\SOH\v\f\n\ \\SO\n\ - \\ACK\EOT\ACK\EOT\NUL\STX\t\DC2\EOT\218\SOH\EOT\SO\n\ + \\ACK\EOT\ACK\EOT\NUL\STX\t\DC2\EOT\224\SOH\EOT\SO\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\t\SOH\DC2\EOT\218\SOH\EOT\t\n\ + \\a\EOT\ACK\EOT\NUL\STX\t\SOH\DC2\EOT\224\SOH\EOT\t\n\ \\SI\n\ - \\a\EOT\ACK\EOT\NUL\STX\t\STX\DC2\EOT\218\SOH\f\r\n\ + \\a\EOT\ACK\EOT\NUL\STX\t\STX\DC2\EOT\224\SOH\f\r\n\ \\SO\n\ \\ACK\EOT\ACK\EOT\NUL\STX\n\ - \\DC2\EOT\219\SOH\EOT\SO\n\ + \\DC2\EOT\225\SOH\EOT\SO\n\ \\SI\n\ \\a\EOT\ACK\EOT\NUL\STX\n\ - \\SOH\DC2\EOT\219\SOH\EOT\t\n\ + \\SOH\DC2\EOT\225\SOH\EOT\t\n\ \\SI\n\ \\a\EOT\ACK\EOT\NUL\STX\n\ - \\STX\DC2\EOT\219\SOH\f\r\n\ + \\STX\DC2\EOT\225\SOH\f\r\n\ \\f\n\ - \\EOT\EOT\ACK\STX\NUL\DC2\EOT\221\SOH\STX\DC2\n\ + \\EOT\EOT\ACK\STX\NUL\DC2\EOT\227\SOH\STX\DC2\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\NUL\ENQ\DC2\EOT\221\SOH\STX\b\n\ + \\ENQ\EOT\ACK\STX\NUL\ENQ\DC2\EOT\227\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\NUL\SOH\DC2\EOT\221\SOH\t\r\n\ + \\ENQ\EOT\ACK\STX\NUL\SOH\DC2\EOT\227\SOH\t\r\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\NUL\ETX\DC2\EOT\221\SOH\DLE\DC1\n\ + \\ENQ\EOT\ACK\STX\NUL\ETX\DC2\EOT\227\SOH\DLE\DC1\n\ \\f\n\ - \\EOT\EOT\ACK\STX\SOH\DC2\EOT\222\SOH\STX\ESC\n\ + \\EOT\EOT\ACK\STX\SOH\DC2\EOT\228\SOH\STX\ESC\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\SOH\ENQ\DC2\EOT\222\SOH\STX\b\n\ + \\ENQ\EOT\ACK\STX\SOH\ENQ\DC2\EOT\228\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\SOH\SOH\DC2\EOT\222\SOH\t\SYN\n\ + \\ENQ\EOT\ACK\STX\SOH\SOH\DC2\EOT\228\SOH\t\SYN\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\SOH\ETX\DC2\EOT\222\SOH\EM\SUB\n\ + \\ENQ\EOT\ACK\STX\SOH\ETX\DC2\EOT\228\SOH\EM\SUB\n\ \\130\SOH\n\ - \\EOT\EOT\ACK\STX\STX\DC2\EOT\223\SOH\STX\DC4\"t NOTE: If you add new fields here, make sure to update the prepareSlot()\n\ + \\EOT\EOT\ACK\STX\STX\DC2\EOT\229\SOH\STX\DC4\"t NOTE: If you add new fields here, make sure to update the prepareSlot()\n\ \ function responsible for parsing symbols.\n\ \\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\STX\ACK\DC2\EOT\223\SOH\STX\b\n\ + \\ENQ\EOT\ACK\STX\STX\ACK\DC2\EOT\229\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\STX\SOH\DC2\EOT\223\SOH\t\SI\n\ + \\ENQ\EOT\ACK\STX\STX\SOH\DC2\EOT\229\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\ACK\STX\STX\ETX\DC2\EOT\223\SOH\DC2\DC3\n\ + \\ENQ\EOT\ACK\STX\STX\ETX\DC2\EOT\229\SOH\DC2\DC3\n\ \\161\STX\n\ - \\STX\EOT\a\DC2\ACK\232\SOH\NUL\245\SOH\SOH\SUB\146\STX Signature represents the signature of a symbol as it's displayed in API\n\ + \\STX\EOT\a\DC2\ACK\238\SOH\NUL\251\SOH\SOH\SUB\146\STX Signature represents the signature of a symbol as it's displayed in API\n\ \ documentation or hover tooltips. It uses a subset of Document's fields with\n\ \ the same field numbers for wire compatibility with older indexes that encoded\n\ \ signatures using the Document message type.\n\ \\n\ \\v\n\ - \\ETX\EOT\a\SOH\DC2\EOT\232\SOH\b\DC1\n\ + \\ETX\EOT\a\SOH\DC2\EOT\238\SOH\b\DC1\n\ \K\n\ - \\EOT\EOT\a\STX\NUL\DC2\EOT\234\SOH\STX\SYN\SUB= The language of the signature, e.g. \"java\", \"go\", \"python\".\n\ + \\EOT\EOT\a\STX\NUL\DC2\EOT\240\SOH\STX\SYN\SUB= The language of the signature, e.g. \"java\", \"go\", \"python\".\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\ENQ\DC2\EOT\234\SOH\STX\b\n\ + \\ENQ\EOT\a\STX\NUL\ENQ\DC2\EOT\240\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\234\SOH\t\DC1\n\ + \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\240\SOH\t\DC1\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\234\SOH\DC4\NAK\n\ + \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\240\SOH\DC4\NAK\n\ \Q\n\ - \\EOT\EOT\a\STX\SOH\DC2\EOT\236\SOH\STX\DC2\SUBC The text content of the signature, e.g. \"void add(int a, int b)\".\n\ + \\EOT\EOT\a\STX\SOH\DC2\EOT\242\SOH\STX\DC2\SUBC The text content of the signature, e.g. \"void add(int a, int b)\".\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\236\SOH\STX\b\n\ + \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\242\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\236\SOH\t\r\n\ + \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\242\SOH\t\r\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\236\SOH\DLE\DC1\n\ + \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\242\SOH\DLE\DC1\n\ \\187\SOH\n\ - \\EOT\EOT\a\STX\STX\DC2\EOT\240\SOH\STX&\SUB\172\SOH (optional) Occurrences within the signature text that reference other\n\ + \\EOT\EOT\a\STX\STX\DC2\EOT\246\SOH\STX&\SUB\172\SOH (optional) Occurrences within the signature text that reference other\n\ \ symbols, enabling hyperlinking of types in the signature. Ranges are\n\ \ relative to the `text` field.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\EOT\DC2\EOT\240\SOH\STX\n\ + \\ENQ\EOT\a\STX\STX\EOT\DC2\EOT\246\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\240\SOH\v\NAK\n\ + \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\246\SOH\v\NAK\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\240\SOH\SYN!\n\ + \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\246\SOH\SYN!\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\240\SOH$%\n\ + \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\246\SOH$%\n\ \\151\SOH\n\ - \\ETX\EOT\a\t\DC2\EOT\244\SOH\STX\DC3\SUB\137\SOH Reserved field numbers from the Document message to prevent accidental\n\ + \\ETX\EOT\a\t\DC2\EOT\250\SOH\STX\DC3\SUB\137\SOH Reserved field numbers from the Document message to prevent accidental\n\ \ reuse, which would break wire compatibility with older indexes.\n\ \\n\ \\f\n\ - \\EOT\EOT\a\t\NUL\DC2\EOT\244\SOH\v\f\n\ + \\EOT\EOT\a\t\NUL\DC2\EOT\250\SOH\v\f\n\ \\r\n\ - \\ENQ\EOT\a\t\NUL\SOH\DC2\EOT\244\SOH\v\f\n\ + \\ENQ\EOT\a\t\NUL\SOH\DC2\EOT\250\SOH\v\f\n\ \\r\n\ - \\ENQ\EOT\a\t\NUL\STX\DC2\EOT\244\SOH\v\f\n\ + \\ENQ\EOT\a\t\NUL\STX\DC2\EOT\250\SOH\v\f\n\ \\f\n\ - \\EOT\EOT\a\t\SOH\DC2\EOT\244\SOH\SO\SI\n\ + \\EOT\EOT\a\t\SOH\DC2\EOT\250\SOH\SO\SI\n\ \\r\n\ - \\ENQ\EOT\a\t\SOH\SOH\DC2\EOT\244\SOH\SO\SI\n\ + \\ENQ\EOT\a\t\SOH\SOH\DC2\EOT\250\SOH\SO\SI\n\ \\r\n\ - \\ENQ\EOT\a\t\SOH\STX\DC2\EOT\244\SOH\SO\SI\n\ + \\ENQ\EOT\a\t\SOH\STX\DC2\EOT\250\SOH\SO\SI\n\ \\f\n\ - \\EOT\EOT\a\t\STX\DC2\EOT\244\SOH\DC1\DC2\n\ + \\EOT\EOT\a\t\STX\DC2\EOT\250\SOH\DC1\DC2\n\ \\r\n\ - \\ENQ\EOT\a\t\STX\SOH\DC2\EOT\244\SOH\DC1\DC2\n\ + \\ENQ\EOT\a\t\STX\SOH\DC2\EOT\250\SOH\DC1\DC2\n\ \\r\n\ - \\ENQ\EOT\a\t\STX\STX\DC2\EOT\244\SOH\DC1\DC2\n\ + \\ENQ\EOT\a\t\STX\STX\DC2\EOT\250\SOH\DC1\DC2\n\ \\131\SOH\n\ - \\STX\EOT\b\DC2\ACK\249\SOH\NUL\203\ETX\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ + \\STX\EOT\b\DC2\ACK\255\SOH\NUL\209\ETX\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ \ docstring or what package it's defined it.\n\ \\n\ \\v\n\ - \\ETX\EOT\b\SOH\DC2\EOT\249\SOH\b\EM\n\ + \\ETX\EOT\b\SOH\DC2\EOT\255\SOH\b\EM\n\ \\160\SOH\n\ - \\EOT\EOT\b\STX\NUL\DC2\EOT\252\SOH\STX\DC4\SUB\145\SOH Identifier of this symbol, which can be referenced from `Occurence.symbol`.\n\ + \\EOT\EOT\b\STX\NUL\DC2\EOT\130\STX\STX\DC4\SUB\145\SOH Identifier of this symbol, which can be referenced from `Occurence.symbol`.\n\ \ The string must be formatted according to the grammar in `Symbol`.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\252\SOH\STX\b\n\ + \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\130\STX\STX\b\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\252\SOH\t\SI\n\ + \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\130\STX\t\SI\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\252\SOH\DC2\DC3\n\ + \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\130\STX\DC2\DC3\n\ \\180\ETX\n\ - \\EOT\EOT\b\STX\SOH\DC2\EOT\131\STX\STX$\SUB\165\ETX (optional, but strongly recommended) The markdown-formatted documentation\n\ + \\EOT\EOT\b\STX\SOH\DC2\EOT\137\STX\STX$\SUB\165\ETX (optional, but strongly recommended) The markdown-formatted documentation\n\ \ for this symbol. Use `SymbolInformation.signature_documentation` to\n\ \ document the method/class/type signature of this symbol.\n\ \ Due to historical reasons, indexers may include signature documentation in\n\ @@ -7299,39 +7316,39 @@ packedFileDescriptor \ include non-code documentation in this field, for example docstrings.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\EOT\DC2\EOT\131\STX\STX\n\ + \\ENQ\EOT\b\STX\SOH\EOT\DC2\EOT\137\STX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\131\STX\v\DC1\n\ + \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\137\STX\v\DC1\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\131\STX\DC2\US\n\ + \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\137\STX\DC2\US\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\131\STX\"#\n\ + \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\137\STX\"#\n\ \^\n\ - \\EOT\EOT\b\STX\STX\DC2\EOT\133\STX\STX*\SUBP (optional) Relationships to other symbols (e.g., implements, type definition).\n\ + \\EOT\EOT\b\STX\STX\DC2\EOT\139\STX\STX*\SUBP (optional) Relationships to other symbols (e.g., implements, type definition).\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\EOT\DC2\EOT\133\STX\STX\n\ + \\ENQ\EOT\b\STX\STX\EOT\DC2\EOT\139\STX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ACK\DC2\EOT\133\STX\v\ETB\n\ + \\ENQ\EOT\b\STX\STX\ACK\DC2\EOT\139\STX\v\ETB\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\133\STX\CAN%\n\ + \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\139\STX\CAN%\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\133\STX()\n\ + \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\139\STX()\n\ \\164\SOH\n\ - \\EOT\EOT\b\STX\ETX\DC2\EOT\137\STX\STX\DLE\SUB\149\SOH The kind of this symbol. Use this field instead of\n\ + \\EOT\EOT\b\STX\ETX\DC2\EOT\143\STX\STX\DLE\SUB\149\SOH The kind of this symbol. Use this field instead of\n\ \ `SymbolDescriptor.Suffix` to determine whether something is, for example, a\n\ \ class or a method.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ACK\DC2\EOT\137\STX\STX\ACK\n\ + \\ENQ\EOT\b\STX\ETX\ACK\DC2\EOT\143\STX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\137\STX\a\v\n\ + \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\143\STX\a\v\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\137\STX\SO\SI\n\ + \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\143\STX\SO\SI\n\ \\245\ENQ\n\ - \\EOT\EOT\b\EOT\NUL\DC2\ACK\152\STX\STX\167\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ + \\EOT\EOT\b\EOT\NUL\DC2\ACK\158\STX\STX\173\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ \ information about the symbol's meaning in the language.\n\ \\n\ \ For example:\n\ @@ -7347,603 +7364,603 @@ packedFileDescriptor \ - If two symbols have different Suffixes, they should have different Kinds.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\EOT\NUL\SOH\DC2\EOT\152\STX\a\v\n\ + \\ENQ\EOT\b\EOT\NUL\SOH\DC2\EOT\158\STX\a\v\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\NUL\DC2\EOT\153\STX\EOT\CAN\n\ + \\ACK\EOT\b\EOT\NUL\STX\NUL\DC2\EOT\159\STX\EOT\CAN\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\NUL\SOH\DC2\EOT\153\STX\EOT\DC3\n\ + \\a\EOT\b\EOT\NUL\STX\NUL\SOH\DC2\EOT\159\STX\EOT\DC3\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\NUL\STX\DC2\EOT\153\STX\SYN\ETB\n\ + \\a\EOT\b\EOT\NUL\STX\NUL\STX\DC2\EOT\159\STX\SYN\ETB\n\ \R\n\ - \\ACK\EOT\b\EOT\NUL\STX\SOH\DC2\EOT\155\STX\EOT\CAN\SUBB A method which may or may not have a body. For Java, Kotlin etc.\n\ + \\ACK\EOT\b\EOT\NUL\STX\SOH\DC2\EOT\161\STX\EOT\CAN\SUBB A method which may or may not have a body. For Java, Kotlin etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SOH\SOH\DC2\EOT\155\STX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STX\SOH\SOH\DC2\EOT\161\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SOH\STX\DC2\EOT\155\STX\NAK\ETB\n\ + \\a\EOT\b\EOT\NUL\STX\SOH\STX\DC2\EOT\161\STX\NAK\ETB\n\ \*\n\ - \\ACK\EOT\b\EOT\NUL\STX\STX\DC2\EOT\157\STX\EOT\DC2\SUB\SUB For Ruby's attr_accessor\n\ + \\ACK\EOT\b\EOT\NUL\STX\STX\DC2\EOT\163\STX\EOT\DC2\SUB\SUB For Ruby's attr_accessor\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\STX\SOH\DC2\EOT\157\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX\STX\SOH\DC2\EOT\163\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\STX\STX\DC2\EOT\157\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX\STX\STX\DC2\EOT\163\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\ETX\DC2\EOT\158\STX\EOT\SO\n\ + \\ACK\EOT\b\EOT\NUL\STX\ETX\DC2\EOT\164\STX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ETX\SOH\DC2\EOT\158\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX\ETX\SOH\DC2\EOT\164\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ETX\STX\DC2\EOT\158\STX\f\r\n\ + \\a\EOT\b\EOT\NUL\STX\ETX\STX\DC2\EOT\164\STX\f\r\n\ \\ESC\n\ - \\ACK\EOT\b\EOT\NUL\STX\EOT\DC2\EOT\160\STX\EOT\DC2\SUB\v For Alloy\n\ + \\ACK\EOT\b\EOT\NUL\STX\EOT\DC2\EOT\166\STX\EOT\DC2\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\EOT\SOH\DC2\EOT\160\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX\EOT\SOH\DC2\EOT\166\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\EOT\STX\DC2\EOT\160\STX\DLE\DC1\n\ + \\a\EOT\b\EOT\NUL\STX\EOT\STX\DC2\EOT\166\STX\DLE\DC1\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\ENQ\DC2\EOT\161\STX\EOT\ETB\n\ + \\ACK\EOT\b\EOT\NUL\STX\ENQ\DC2\EOT\167\STX\EOT\ETB\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ENQ\SOH\DC2\EOT\161\STX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STX\ENQ\SOH\DC2\EOT\167\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ENQ\STX\DC2\EOT\161\STX\NAK\SYN\n\ + \\a\EOT\b\EOT\NUL\STX\ENQ\STX\DC2\EOT\167\STX\NAK\SYN\n\ \\EM\n\ - \\ACK\EOT\b\EOT\NUL\STX\ACK\DC2\EOT\163\STX\EOT\DC2\SUB\t For C++\n\ + \\ACK\EOT\b\EOT\NUL\STX\ACK\DC2\EOT\169\STX\EOT\DC2\SUB\t For C++\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ACK\SOH\DC2\EOT\163\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX\ACK\SOH\DC2\EOT\169\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ACK\STX\DC2\EOT\163\STX\DLE\DC1\n\ + \\a\EOT\b\EOT\NUL\STX\ACK\STX\DC2\EOT\169\STX\DLE\DC1\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STX\a\DC2\EOT\165\STX\EOT\SO\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STX\a\DC2\EOT\171\STX\EOT\SO\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\a\SOH\DC2\EOT\165\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX\a\SOH\DC2\EOT\171\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\a\STX\DC2\EOT\165\STX\f\r\n\ + \\a\EOT\b\EOT\NUL\STX\a\STX\DC2\EOT\171\STX\f\r\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\b\DC2\EOT\166\STX\EOT\DLE\n\ + \\ACK\EOT\b\EOT\NUL\STX\b\DC2\EOT\172\STX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\b\SOH\DC2\EOT\166\STX\EOT\v\n\ + \\a\EOT\b\EOT\NUL\STX\b\SOH\DC2\EOT\172\STX\EOT\v\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\b\STX\DC2\EOT\166\STX\SO\SI\n\ + \\a\EOT\b\EOT\NUL\STX\b\STX\DC2\EOT\172\STX\SO\SI\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\t\DC2\EOT\167\STX\EOT\SO\n\ + \\ACK\EOT\b\EOT\NUL\STX\t\DC2\EOT\173\STX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\t\SOH\DC2\EOT\167\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX\t\SOH\DC2\EOT\173\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\t\STX\DC2\EOT\167\STX\f\r\n\ + \\a\EOT\b\EOT\NUL\STX\t\STX\DC2\EOT\173\STX\f\r\n\ \\EM\n\ \\ACK\EOT\b\EOT\NUL\STX\n\ - \\DC2\EOT\169\STX\EOT\DC1\SUB\t For C++\n\ + \\DC2\EOT\175\STX\EOT\DC1\SUB\t For C++\n\ \\n\ \\SI\n\ \\a\EOT\b\EOT\NUL\STX\n\ - \\SOH\DC2\EOT\169\STX\EOT\v\n\ + \\SOH\DC2\EOT\175\STX\EOT\v\n\ \\SI\n\ \\a\EOT\b\EOT\NUL\STX\n\ - \\STX\DC2\EOT\169\STX\SO\DLE\n\ + \\STX\DC2\EOT\175\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\v\DC2\EOT\170\STX\EOT\DC1\n\ + \\ACK\EOT\b\EOT\NUL\STX\v\DC2\EOT\176\STX\EOT\DC1\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\v\SOH\DC2\EOT\170\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX\v\SOH\DC2\EOT\176\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\v\STX\DC2\EOT\170\STX\SI\DLE\n\ + \\a\EOT\b\EOT\NUL\STX\v\STX\DC2\EOT\176\STX\SI\DLE\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\f\DC2\EOT\171\STX\EOT\DC4\n\ + \\ACK\EOT\b\EOT\NUL\STX\f\DC2\EOT\177\STX\EOT\DC4\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\f\SOH\DC2\EOT\171\STX\EOT\SI\n\ + \\a\EOT\b\EOT\NUL\STX\f\SOH\DC2\EOT\177\STX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\f\STX\DC2\EOT\171\STX\DC2\DC3\n\ + \\a\EOT\b\EOT\NUL\STX\f\STX\DC2\EOT\177\STX\DC2\DC3\n\ \\RS\n\ - \\ACK\EOT\b\EOT\NUL\STX\r\DC2\EOT\173\STX\EOT\DC2\SUB\SO For Solidity\n\ + \\ACK\EOT\b\EOT\NUL\STX\r\DC2\EOT\179\STX\EOT\DC2\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\r\SOH\DC2\EOT\173\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX\r\SOH\DC2\EOT\179\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\r\STX\DC2\EOT\173\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX\r\STX\DC2\EOT\179\STX\SI\DC1\n\ \\GS\n\ - \\ACK\EOT\b\EOT\NUL\STX\SO\DC2\EOT\175\STX\EOT\DC4\SUB\r For Haskell\n\ + \\ACK\EOT\b\EOT\NUL\STX\SO\DC2\EOT\181\STX\EOT\DC4\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SO\SOH\DC2\EOT\175\STX\EOT\SO\n\ + \\a\EOT\b\EOT\NUL\STX\SO\SOH\DC2\EOT\181\STX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SO\STX\DC2\EOT\175\STX\DC1\DC3\n\ + \\a\EOT\b\EOT\NUL\STX\SO\STX\DC2\EOT\181\STX\DC1\DC3\n\ \\US\n\ - \\ACK\EOT\b\EOT\NUL\STX\SI\DC2\EOT\177\STX\EOT\DC2\SUB\SI For C# and F#\n\ + \\ACK\EOT\b\EOT\NUL\STX\SI\DC2\EOT\183\STX\EOT\DC2\SUB\SI For C# and F#\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SI\SOH\DC2\EOT\177\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX\SI\SOH\DC2\EOT\183\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SI\STX\DC2\EOT\177\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX\SI\STX\DC2\EOT\183\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\DLE\DC2\EOT\178\STX\EOT\SO\n\ + \\ACK\EOT\b\EOT\NUL\STX\DLE\DC2\EOT\184\STX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DLE\SOH\DC2\EOT\178\STX\EOT\b\n\ + \\a\EOT\b\EOT\NUL\STX\DLE\SOH\DC2\EOT\184\STX\EOT\b\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DLE\STX\DC2\EOT\178\STX\v\r\n\ + \\a\EOT\b\EOT\NUL\STX\DLE\STX\DC2\EOT\184\STX\v\r\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\DC1\DC2\EOT\179\STX\EOT\DC4\n\ + \\ACK\EOT\b\EOT\NUL\STX\DC1\DC2\EOT\185\STX\EOT\DC4\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC1\SOH\DC2\EOT\179\STX\EOT\SO\n\ + \\a\EOT\b\EOT\NUL\STX\DC1\SOH\DC2\EOT\185\STX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC1\STX\DC2\EOT\179\STX\DC1\DC3\n\ + \\a\EOT\b\EOT\NUL\STX\DC1\STX\DC2\EOT\185\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\DC2\DC2\EOT\180\STX\EOT\SI\n\ + \\ACK\EOT\b\EOT\NUL\STX\DC2\DC2\EOT\186\STX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC2\SOH\DC2\EOT\180\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX\DC2\SOH\DC2\EOT\186\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC2\STX\DC2\EOT\180\STX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STX\DC2\STX\DC2\EOT\186\STX\f\SO\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\DC3\DC2\EOT\181\STX\EOT\SI\n\ + \\ACK\EOT\b\EOT\NUL\STX\DC3\DC2\EOT\187\STX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC3\SOH\DC2\EOT\181\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX\DC3\SOH\DC2\EOT\187\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC3\STX\DC2\EOT\181\STX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STX\DC3\STX\DC2\EOT\187\STX\f\SO\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STX\DC4\DC2\EOT\183\STX\EOT\DC3\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STX\DC4\DC2\EOT\189\STX\EOT\DC3\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC4\SOH\DC2\EOT\183\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX\DC4\SOH\DC2\EOT\189\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\DC4\STX\DC2\EOT\183\STX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STX\DC4\STX\DC2\EOT\189\STX\DLE\DC2\n\ \\ESC\n\ - \\ACK\EOT\b\EOT\NUL\STX\NAK\DC2\EOT\185\STX\EOT\SO\SUB\v For Alloy\n\ + \\ACK\EOT\b\EOT\NUL\STX\NAK\DC2\EOT\191\STX\EOT\SO\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\NAK\SOH\DC2\EOT\185\STX\EOT\b\n\ + \\a\EOT\b\EOT\NUL\STX\NAK\SOH\DC2\EOT\191\STX\EOT\b\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\NAK\STX\DC2\EOT\185\STX\v\r\n\ + \\a\EOT\b\EOT\NUL\STX\NAK\STX\DC2\EOT\191\STX\v\r\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\SYN\DC2\EOT\186\STX\EOT\SI\n\ + \\ACK\EOT\b\EOT\NUL\STX\SYN\DC2\EOT\192\STX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SYN\SOH\DC2\EOT\186\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX\SYN\SOH\DC2\EOT\192\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SYN\STX\DC2\EOT\186\STX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STX\SYN\STX\DC2\EOT\192\STX\f\SO\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\ETB\DC2\EOT\187\STX\EOT\SO\n\ + \\ACK\EOT\b\EOT\NUL\STX\ETB\DC2\EOT\193\STX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ETB\SOH\DC2\EOT\187\STX\EOT\b\n\ + \\a\EOT\b\EOT\NUL\STX\ETB\SOH\DC2\EOT\193\STX\EOT\b\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ETB\STX\DC2\EOT\187\STX\v\r\n\ + \\a\EOT\b\EOT\NUL\STX\ETB\STX\DC2\EOT\193\STX\v\r\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\CAN\DC2\EOT\188\STX\EOT\DC2\n\ + \\ACK\EOT\b\EOT\NUL\STX\CAN\DC2\EOT\194\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\CAN\SOH\DC2\EOT\188\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX\CAN\SOH\DC2\EOT\194\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\CAN\STX\DC2\EOT\188\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX\CAN\STX\DC2\EOT\194\STX\SI\DC1\n\ \;\n\ - \\ACK\EOT\b\EOT\NUL\STX\EM\DC2\EOT\190\STX\EOT\DLE\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ + \\ACK\EOT\b\EOT\NUL\STX\EM\DC2\EOT\196\STX\EOT\DLE\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\EM\SOH\DC2\EOT\190\STX\EOT\n\ + \\a\EOT\b\EOT\NUL\STX\EM\SOH\DC2\EOT\196\STX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\EM\STX\DC2\EOT\190\STX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STX\EM\STX\DC2\EOT\196\STX\r\SI\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STX\SUB\DC2\EOT\192\STX\EOT\DC1\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STX\SUB\DC2\EOT\198\STX\EOT\DC1\SUB\n\ \ For Raku\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SUB\SOH\DC2\EOT\192\STX\EOT\v\n\ + \\a\EOT\b\EOT\NUL\STX\SUB\SOH\DC2\EOT\198\STX\EOT\v\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\SUB\STX\DC2\EOT\192\STX\SO\DLE\n\ + \\a\EOT\b\EOT\NUL\STX\SUB\STX\DC2\EOT\198\STX\SO\DLE\n\ \)\n\ - \\ACK\EOT\b\EOT\NUL\STX\ESC\DC2\EOT\194\STX\EOT\DC2\SUB\EM For Purescript and Lean\n\ + \\ACK\EOT\b\EOT\NUL\STX\ESC\DC2\EOT\200\STX\EOT\DC2\SUB\EM For Purescript and Lean\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ESC\SOH\DC2\EOT\194\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX\ESC\SOH\DC2\EOT\200\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\ESC\STX\DC2\EOT\194\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX\ESC\STX\DC2\EOT\200\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\FS\DC2\EOT\195\STX\EOT\DC3\n\ + \\ACK\EOT\b\EOT\NUL\STX\FS\DC2\EOT\201\STX\EOT\DC3\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\FS\SOH\DC2\EOT\195\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX\FS\SOH\DC2\EOT\201\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\FS\STX\DC2\EOT\195\STX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STX\FS\STX\DC2\EOT\201\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\GS\DC2\EOT\196\STX\EOT\r\n\ + \\ACK\EOT\b\EOT\NUL\STX\GS\DC2\EOT\202\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\GS\SOH\DC2\EOT\196\STX\EOT\a\n\ + \\a\EOT\b\EOT\NUL\STX\GS\SOH\DC2\EOT\202\STX\EOT\a\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\GS\STX\DC2\EOT\196\STX\n\ + \\a\EOT\b\EOT\NUL\STX\GS\STX\DC2\EOT\202\STX\n\ \\f\n\ \\FS\n\ - \\ACK\EOT\b\EOT\NUL\STX\RS\DC2\EOT\198\STX\EOT\SO\SUB\f For Racket\n\ + \\ACK\EOT\b\EOT\NUL\STX\RS\DC2\EOT\204\STX\EOT\SO\SUB\f For Racket\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\RS\SOH\DC2\EOT\198\STX\EOT\b\n\ + \\a\EOT\b\EOT\NUL\STX\RS\SOH\DC2\EOT\204\STX\EOT\b\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\RS\STX\DC2\EOT\198\STX\v\r\n\ + \\a\EOT\b\EOT\NUL\STX\RS\STX\DC2\EOT\204\STX\v\r\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STX\US\DC2\EOT\200\STX\EOT\SI\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STX\US\DC2\EOT\206\STX\EOT\SI\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\US\SOH\DC2\EOT\200\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX\US\SOH\DC2\EOT\206\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\US\STX\DC2\EOT\200\STX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STX\US\STX\DC2\EOT\206\STX\f\SO\n\ \\RS\n\ - \\ACK\EOT\b\EOT\NUL\STX \DC2\EOT\202\STX\EOT\DC1\SUB\SO For solidity\n\ + \\ACK\EOT\b\EOT\NUL\STX \DC2\EOT\208\STX\EOT\DC1\SUB\SO For solidity\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX \SOH\DC2\EOT\202\STX\EOT\v\n\ + \\a\EOT\b\EOT\NUL\STX \SOH\DC2\EOT\208\STX\EOT\v\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX \STX\DC2\EOT\202\STX\SO\DLE\n\ + \\a\EOT\b\EOT\NUL\STX \STX\DC2\EOT\208\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX!\DC2\EOT\203\STX\EOT\SI\n\ + \\ACK\EOT\b\EOT\NUL\STX!\DC2\EOT\209\STX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX!\SOH\DC2\EOT\203\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX!\SOH\DC2\EOT\209\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX!\STX\DC2\EOT\203\STX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STX!\STX\DC2\EOT\209\STX\f\SO\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX\"\DC2\EOT\204\STX\EOT\DLE\n\ + \\ACK\EOT\b\EOT\NUL\STX\"\DC2\EOT\210\STX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\"\SOH\DC2\EOT\204\STX\EOT\n\ + \\a\EOT\b\EOT\NUL\STX\"\SOH\DC2\EOT\210\STX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX\"\STX\DC2\EOT\204\STX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STX\"\STX\DC2\EOT\210\STX\r\SI\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STX#\DC2\EOT\206\STX\EOT\NAK\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STX#\DC2\EOT\212\STX\EOT\NAK\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX#\SOH\DC2\EOT\206\STX\EOT\SI\n\ + \\a\EOT\b\EOT\NUL\STX#\SOH\DC2\EOT\212\STX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX#\STX\DC2\EOT\206\STX\DC2\DC4\n\ + \\a\EOT\b\EOT\NUL\STX#\STX\DC2\EOT\212\STX\DC2\DC4\n\ \\148\SOH\n\ - \\ACK\EOT\b\EOT\NUL\STX$\DC2\EOT\209\STX\EOT\CAN\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ + \\ACK\EOT\b\EOT\NUL\STX$\DC2\EOT\215\STX\EOT\CAN\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ \ like Go where the receiver doesn't have a conventional name.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX$\SOH\DC2\EOT\209\STX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STX$\SOH\DC2\EOT\215\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX$\STX\DC2\EOT\209\STX\NAK\ETB\n\ + \\a\EOT\b\EOT\NUL\STX$\STX\DC2\EOT\215\STX\NAK\ETB\n\ \8\n\ - \\ACK\EOT\b\EOT\NUL\STX%\DC2\EOT\211\STX\EOT\GS\SUB( Analogous to 'AbstractMethod', for Go.\n\ + \\ACK\EOT\b\EOT\NUL\STX%\DC2\EOT\217\STX\EOT\GS\SUB( Analogous to 'AbstractMethod', for Go.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX%\SOH\DC2\EOT\211\STX\EOT\ETB\n\ + \\a\EOT\b\EOT\NUL\STX%\SOH\DC2\EOT\217\STX\EOT\ETB\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX%\STX\DC2\EOT\211\STX\SUB\FS\n\ + \\a\EOT\b\EOT\NUL\STX%\STX\DC2\EOT\217\STX\SUB\FS\n\ \\RS\n\ - \\ACK\EOT\b\EOT\NUL\STX&\DC2\EOT\213\STX\EOT\DC1\SUB\SO For Protobuf\n\ + \\ACK\EOT\b\EOT\NUL\STX&\DC2\EOT\219\STX\EOT\DC1\SUB\SO For Protobuf\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX&\SOH\DC2\EOT\213\STX\EOT\v\n\ + \\a\EOT\b\EOT\NUL\STX&\SOH\DC2\EOT\219\STX\EOT\v\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX&\STX\DC2\EOT\213\STX\SO\DLE\n\ + \\a\EOT\b\EOT\NUL\STX&\STX\DC2\EOT\219\STX\SO\DLE\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STX'\DC2\EOT\215\STX\EOT\SI\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STX'\DC2\EOT\221\STX\EOT\SI\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX'\SOH\DC2\EOT\215\STX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STX'\SOH\DC2\EOT\221\STX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX'\STX\DC2\EOT\215\STX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STX'\STX\DC2\EOT\221\STX\f\SO\n\ \\RS\n\ - \\ACK\EOT\b\EOT\NUL\STX(\DC2\EOT\217\STX\EOT\DC2\SUB\SO For Solidity\n\ + \\ACK\EOT\b\EOT\NUL\STX(\DC2\EOT\223\STX\EOT\DC2\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX(\SOH\DC2\EOT\217\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX(\SOH\DC2\EOT\223\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX(\STX\DC2\EOT\217\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX(\STX\DC2\EOT\223\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX)\DC2\EOT\218\STX\EOT\DLE\n\ + \\ACK\EOT\b\EOT\NUL\STX)\DC2\EOT\224\STX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX)\SOH\DC2\EOT\218\STX\EOT\n\ + \\a\EOT\b\EOT\NUL\STX)\SOH\DC2\EOT\224\STX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX)\STX\DC2\EOT\218\STX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STX)\STX\DC2\EOT\224\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX*\DC2\EOT\219\STX\EOT\DC3\n\ + \\ACK\EOT\b\EOT\NUL\STX*\DC2\EOT\225\STX\EOT\DC3\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX*\SOH\DC2\EOT\219\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX*\SOH\DC2\EOT\225\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX*\STX\DC2\EOT\219\STX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STX*\STX\DC2\EOT\225\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX+\DC2\EOT\220\STX\EOT\SO\n\ + \\ACK\EOT\b\EOT\NUL\STX+\DC2\EOT\226\STX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX+\SOH\DC2\EOT\220\STX\EOT\b\n\ + \\a\EOT\b\EOT\NUL\STX+\SOH\DC2\EOT\226\STX\EOT\b\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX+\STX\DC2\EOT\220\STX\v\r\n\ + \\a\EOT\b\EOT\NUL\STX+\STX\DC2\EOT\226\STX\v\r\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX,\DC2\EOT\221\STX\EOT\DLE\n\ + \\ACK\EOT\b\EOT\NUL\STX,\DC2\EOT\227\STX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX,\SOH\DC2\EOT\221\STX\EOT\n\ + \\a\EOT\b\EOT\NUL\STX,\SOH\DC2\EOT\227\STX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX,\STX\DC2\EOT\221\STX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STX,\STX\DC2\EOT\227\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX-\DC2\EOT\222\STX\EOT\DLE\n\ + \\ACK\EOT\b\EOT\NUL\STX-\DC2\EOT\228\STX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX-\SOH\DC2\EOT\222\STX\EOT\n\ + \\a\EOT\b\EOT\NUL\STX-\SOH\DC2\EOT\228\STX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX-\STX\DC2\EOT\222\STX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STX-\STX\DC2\EOT\228\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX.\DC2\EOT\223\STX\EOT\DC2\n\ + \\ACK\EOT\b\EOT\NUL\STX.\DC2\EOT\229\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX.\SOH\DC2\EOT\223\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX.\SOH\DC2\EOT\229\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX.\STX\DC2\EOT\223\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX.\STX\DC2\EOT\229\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX/\DC2\EOT\224\STX\EOT\DC1\n\ + \\ACK\EOT\b\EOT\NUL\STX/\DC2\EOT\230\STX\EOT\DC1\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX/\SOH\DC2\EOT\224\STX\EOT\v\n\ + \\a\EOT\b\EOT\NUL\STX/\SOH\DC2\EOT\230\STX\EOT\v\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX/\STX\DC2\EOT\224\STX\SO\DLE\n\ + \\a\EOT\b\EOT\NUL\STX/\STX\DC2\EOT\230\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX0\DC2\EOT\225\STX\EOT\ETB\n\ + \\ACK\EOT\b\EOT\NUL\STX0\DC2\EOT\231\STX\EOT\ETB\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX0\SOH\DC2\EOT\225\STX\EOT\DC1\n\ + \\a\EOT\b\EOT\NUL\STX0\SOH\DC2\EOT\231\STX\EOT\DC1\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX0\STX\DC2\EOT\225\STX\DC4\SYN\n\ + \\a\EOT\b\EOT\NUL\STX0\STX\DC2\EOT\231\STX\DC4\SYN\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX1\DC2\EOT\226\STX\EOT\DC3\n\ + \\ACK\EOT\b\EOT\NUL\STX1\DC2\EOT\232\STX\EOT\DC3\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX1\SOH\DC2\EOT\226\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX1\SOH\DC2\EOT\232\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX1\STX\DC2\EOT\226\STX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STX1\STX\DC2\EOT\232\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX2\DC2\EOT\227\STX\EOT\CAN\n\ + \\ACK\EOT\b\EOT\NUL\STX2\DC2\EOT\233\STX\EOT\CAN\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX2\SOH\DC2\EOT\227\STX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STX2\SOH\DC2\EOT\233\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX2\STX\DC2\EOT\227\STX\NAK\ETB\n\ + \\a\EOT\b\EOT\NUL\STX2\STX\DC2\EOT\233\STX\NAK\ETB\n\ \/\n\ - \\ACK\EOT\b\EOT\NUL\STX3\DC2\EOT\229\STX\EOT\DC1\SUB\US For Haskell's PatternSynonyms\n\ + \\ACK\EOT\b\EOT\NUL\STX3\DC2\EOT\235\STX\EOT\DC1\SUB\US For Haskell's PatternSynonyms\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX3\SOH\DC2\EOT\229\STX\EOT\v\n\ + \\a\EOT\b\EOT\NUL\STX3\SOH\DC2\EOT\235\STX\EOT\v\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX3\STX\DC2\EOT\229\STX\SO\DLE\n\ + \\a\EOT\b\EOT\NUL\STX3\STX\DC2\EOT\235\STX\SO\DLE\n\ \\ESC\n\ - \\ACK\EOT\b\EOT\NUL\STX4\DC2\EOT\231\STX\EOT\DC3\SUB\v For Alloy\n\ + \\ACK\EOT\b\EOT\NUL\STX4\DC2\EOT\237\STX\EOT\DC3\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX4\SOH\DC2\EOT\231\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX4\SOH\DC2\EOT\237\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX4\STX\DC2\EOT\231\STX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STX4\STX\DC2\EOT\237\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STX5\DC2\EOT\232\STX\EOT\DC2\n\ + \\ACK\EOT\b\EOT\NUL\STX5\DC2\EOT\238\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX5\SOH\DC2\EOT\232\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX5\SOH\DC2\EOT\238\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX5\STX\DC2\EOT\232\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX5\STX\DC2\EOT\238\STX\SI\DC1\n\ \Q\n\ - \\ACK\EOT\b\EOT\NUL\STX6\DC2\EOT\234\STX\EOT\DC2\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ + \\ACK\EOT\b\EOT\NUL\STX6\DC2\EOT\240\STX\EOT\DC2\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX6\SOH\DC2\EOT\234\STX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STX6\SOH\DC2\EOT\240\STX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX6\STX\DC2\EOT\234\STX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STX6\STX\DC2\EOT\240\STX\SI\DC1\n\ \K\n\ - \\ACK\EOT\b\EOT\NUL\STX7\DC2\EOT\236\STX\EOT\CAN\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ + \\ACK\EOT\b\EOT\NUL\STX7\DC2\EOT\242\STX\EOT\CAN\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX7\SOH\DC2\EOT\236\STX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STX7\SOH\DC2\EOT\242\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX7\STX\DC2\EOT\236\STX\NAK\ETB\n\ + \\a\EOT\b\EOT\NUL\STX7\STX\DC2\EOT\242\STX\NAK\ETB\n\ \9\n\ - \\ACK\EOT\b\EOT\NUL\STX8\DC2\EOT\238\STX\EOT\ESC\SUB) Analogous to 'AbstractMethod', for C++.\n\ + \\ACK\EOT\b\EOT\NUL\STX8\DC2\EOT\244\STX\EOT\ESC\SUB) Analogous to 'AbstractMethod', for C++.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX8\SOH\DC2\EOT\238\STX\EOT\NAK\n\ + \\a\EOT\b\EOT\NUL\STX8\SOH\DC2\EOT\244\STX\EOT\NAK\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX8\STX\DC2\EOT\238\STX\CAN\SUB\n\ + \\a\EOT\b\EOT\NUL\STX8\STX\DC2\EOT\244\STX\CAN\SUB\n\ \\GS\n\ - \\ACK\EOT\b\EOT\NUL\STX9\DC2\EOT\240\STX\EOT\NAK\SUB\r For Haskell\n\ + \\ACK\EOT\b\EOT\NUL\STX9\DC2\EOT\246\STX\EOT\NAK\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX9\SOH\DC2\EOT\240\STX\EOT\SI\n\ + \\a\EOT\b\EOT\NUL\STX9\SOH\DC2\EOT\246\STX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX9\STX\DC2\EOT\240\STX\DC2\DC4\n\ + \\a\EOT\b\EOT\NUL\STX9\STX\DC2\EOT\246\STX\DC2\DC4\n\ \4\n\ - \\ACK\EOT\b\EOT\NUL\STX:\DC2\EOT\242\STX\EOT\ETB\SUB$ 'self' in Python, Rust, Swift etc.\n\ + \\ACK\EOT\b\EOT\NUL\STX:\DC2\EOT\248\STX\EOT\ETB\SUB$ 'self' in Python, Rust, Swift etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX:\SOH\DC2\EOT\242\STX\EOT\DC1\n\ + \\a\EOT\b\EOT\NUL\STX:\SOH\DC2\EOT\248\STX\EOT\DC1\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX:\STX\DC2\EOT\242\STX\DC4\SYN\n\ + \\a\EOT\b\EOT\NUL\STX:\STX\DC2\EOT\248\STX\DC4\SYN\n\ \;\n\ - \\ACK\EOT\b\EOT\NUL\STX;\DC2\EOT\244\STX\EOT\DLE\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ + \\ACK\EOT\b\EOT\NUL\STX;\DC2\EOT\250\STX\EOT\DLE\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX;\SOH\DC2\EOT\244\STX\EOT\n\ + \\a\EOT\b\EOT\NUL\STX;\SOH\DC2\EOT\250\STX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX;\STX\DC2\EOT\244\STX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STX;\STX\DC2\EOT\250\STX\r\SI\n\ \3\n\ - \\ACK\EOT\b\EOT\NUL\STX<\DC2\EOT\246\STX\EOT\DC3\SUB# For Alloy, analogous to 'Struct'.\n\ + \\ACK\EOT\b\EOT\NUL\STX<\DC2\EOT\252\STX\EOT\DC3\SUB# For Alloy, analogous to 'Struct'.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX<\SOH\DC2\EOT\246\STX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STX<\SOH\DC2\EOT\252\STX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX<\STX\DC2\EOT\246\STX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STX<\STX\DC2\EOT\252\STX\DLE\DC2\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STX=\DC2\EOT\248\STX\EOT\CAN\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STX=\DC2\EOT\254\STX\EOT\CAN\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX=\SOH\DC2\EOT\248\STX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STX=\SOH\DC2\EOT\254\STX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX=\STX\DC2\EOT\248\STX\NAK\ETB\n\ + \\a\EOT\b\EOT\NUL\STX=\STX\DC2\EOT\254\STX\NAK\ETB\n\ \8\n\ - \\ACK\EOT\b\EOT\NUL\STX>\DC2\EOT\250\STX\EOT\EM\SUB( Analogous to 'StaticMethod', for Ruby.\n\ + \\ACK\EOT\b\EOT\NUL\STX>\DC2\EOT\128\ETX\EOT\EM\SUB( Analogous to 'StaticMethod', for Ruby.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX>\SOH\DC2\EOT\250\STX\EOT\DC3\n\ + \\a\EOT\b\EOT\NUL\STX>\SOH\DC2\EOT\128\ETX\EOT\DC3\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX>\STX\DC2\EOT\250\STX\SYN\CAN\n\ + \\a\EOT\b\EOT\NUL\STX>\STX\DC2\EOT\128\ETX\SYN\CAN\n\ \5\n\ - \\ACK\EOT\b\EOT\NUL\STX?\DC2\EOT\252\STX\EOT\SUB\SUB% Analogous to 'StaticField', for C++\n\ + \\ACK\EOT\b\EOT\NUL\STX?\DC2\EOT\130\ETX\EOT\SUB\SUB% Analogous to 'StaticField', for C++\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX?\SOH\DC2\EOT\252\STX\EOT\DC4\n\ + \\a\EOT\b\EOT\NUL\STX?\SOH\DC2\EOT\130\ETX\EOT\DC4\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX?\STX\DC2\EOT\252\STX\ETB\EM\n\ + \\a\EOT\b\EOT\NUL\STX?\STX\DC2\EOT\130\ETX\ETB\EM\n\ \\CAN\n\ - \\ACK\EOT\b\EOT\NUL\STX@\DC2\EOT\254\STX\EOT\NAK\SUB\b For C#\n\ + \\ACK\EOT\b\EOT\NUL\STX@\DC2\EOT\132\ETX\EOT\NAK\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX@\SOH\DC2\EOT\254\STX\EOT\SI\n\ + \\a\EOT\b\EOT\NUL\STX@\SOH\DC2\EOT\132\ETX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STX@\STX\DC2\EOT\254\STX\DC2\DC4\n\ + \\a\EOT\b\EOT\NUL\STX@\STX\DC2\EOT\132\ETX\DC2\DC4\n\ \\CAN\n\ - \\ACK\EOT\b\EOT\NUL\STXA\DC2\EOT\128\ETX\EOT\NAK\SUB\b For C#\n\ + \\ACK\EOT\b\EOT\NUL\STXA\DC2\EOT\134\ETX\EOT\NAK\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXA\SOH\DC2\EOT\128\ETX\EOT\SI\n\ + \\a\EOT\b\EOT\NUL\STXA\SOH\DC2\EOT\134\ETX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXA\STX\DC2\EOT\128\ETX\DC2\DC4\n\ + \\a\EOT\b\EOT\NUL\STXA\STX\DC2\EOT\134\ETX\DC2\DC4\n\ \(\n\ - \\ACK\EOT\b\EOT\NUL\STXB\DC2\EOT\130\ETX\EOT\SYN\SUB\CAN For Java, C#, C++ etc.\n\ + \\ACK\EOT\b\EOT\NUL\STXB\DC2\EOT\136\ETX\EOT\SYN\SUB\CAN For Java, C#, C++ etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXB\SOH\DC2\EOT\130\ETX\EOT\DLE\n\ + \\a\EOT\b\EOT\NUL\STXB\SOH\DC2\EOT\136\ETX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXB\STX\DC2\EOT\130\ETX\DC3\NAK\n\ + \\a\EOT\b\EOT\NUL\STXB\STX\DC2\EOT\136\ETX\DC3\NAK\n\ \)\n\ - \\ACK\EOT\b\EOT\NUL\STXC\DC2\EOT\132\ETX\EOT\CAN\SUB\EM For C#, TypeScript etc.\n\ + \\ACK\EOT\b\EOT\NUL\STXC\DC2\EOT\138\ETX\EOT\CAN\SUB\EM For C#, TypeScript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXC\SOH\DC2\EOT\132\ETX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STXC\SOH\DC2\EOT\138\ETX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXC\STX\DC2\EOT\132\ETX\NAK\ETB\n\ + \\a\EOT\b\EOT\NUL\STXC\STX\DC2\EOT\138\ETX\NAK\ETB\n\ \\FS\n\ - \\ACK\EOT\b\EOT\NUL\STXD\DC2\EOT\134\ETX\EOT\CAN\SUB\f For C, C++\n\ + \\ACK\EOT\b\EOT\NUL\STXD\DC2\EOT\140\ETX\EOT\CAN\SUB\f For C, C++\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXD\SOH\DC2\EOT\134\ETX\EOT\DC2\n\ + \\a\EOT\b\EOT\NUL\STXD\SOH\DC2\EOT\140\ETX\EOT\DC2\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXD\STX\DC2\EOT\134\ETX\NAK\ETB\n\ + \\a\EOT\b\EOT\NUL\STXD\STX\DC2\EOT\140\ETX\NAK\ETB\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STXE\DC2\EOT\135\ETX\EOT\DLE\n\ + \\ACK\EOT\b\EOT\NUL\STXE\DC2\EOT\141\ETX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXE\SOH\DC2\EOT\135\ETX\EOT\n\ + \\a\EOT\b\EOT\NUL\STXE\SOH\DC2\EOT\141\ETX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXE\STX\DC2\EOT\135\ETX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STXE\STX\DC2\EOT\141\ETX\r\SI\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STXF\DC2\EOT\136\ETX\EOT\DLE\n\ + \\ACK\EOT\b\EOT\NUL\STXF\DC2\EOT\142\ETX\EOT\DLE\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXF\SOH\DC2\EOT\136\ETX\EOT\n\ + \\a\EOT\b\EOT\NUL\STXF\SOH\DC2\EOT\142\ETX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXF\STX\DC2\EOT\136\ETX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STXF\STX\DC2\EOT\142\ETX\r\SI\n\ \\ESC\n\ - \\ACK\EOT\b\EOT\NUL\STXG\DC2\EOT\138\ETX\EOT\DC3\SUB\v For Swift\n\ + \\ACK\EOT\b\EOT\NUL\STXG\DC2\EOT\144\ETX\EOT\DC3\SUB\v For Swift\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXG\SOH\DC2\EOT\138\ETX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STXG\SOH\DC2\EOT\144\ETX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXG\STX\DC2\EOT\138\ETX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STXG\STX\DC2\EOT\144\ETX\DLE\DC2\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STXH\DC2\EOT\140\ETX\EOT\DLE\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STXH\DC2\EOT\146\ETX\EOT\DLE\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXH\SOH\DC2\EOT\140\ETX\EOT\n\ + \\a\EOT\b\EOT\NUL\STXH\SOH\DC2\EOT\146\ETX\EOT\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXH\STX\DC2\EOT\140\ETX\r\SI\n\ + \\a\EOT\b\EOT\NUL\STXH\STX\DC2\EOT\146\ETX\r\SI\n\ \\SUB\n\ - \\ACK\EOT\b\EOT\NUL\STXI\DC2\EOT\142\ETX\EOT\DC1\SUB\n\ + \\ACK\EOT\b\EOT\NUL\STXI\DC2\EOT\148\ETX\EOT\DC1\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXI\SOH\DC2\EOT\142\ETX\EOT\v\n\ + \\a\EOT\b\EOT\NUL\STXI\SOH\DC2\EOT\148\ETX\EOT\v\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXI\STX\DC2\EOT\142\ETX\SO\DLE\n\ + \\a\EOT\b\EOT\NUL\STXI\STX\DC2\EOT\148\ETX\SO\DLE\n\ \U\n\ - \\ACK\EOT\b\EOT\NUL\STXJ\DC2\EOT\145\ETX\EOT\ETB\SUBE Method receiver for languages\n\ + \\ACK\EOT\b\EOT\NUL\STXJ\DC2\EOT\151\ETX\EOT\ETB\SUBE Method receiver for languages\n\ \ 'this' in JavaScript, C++, Java etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXJ\SOH\DC2\EOT\145\ETX\EOT\DC1\n\ + \\a\EOT\b\EOT\NUL\STXJ\SOH\DC2\EOT\151\ETX\EOT\DC1\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXJ\STX\DC2\EOT\145\ETX\DC4\SYN\n\ + \\a\EOT\b\EOT\NUL\STXJ\STX\DC2\EOT\151\ETX\DC4\SYN\n\ \O\n\ - \\ACK\EOT\b\EOT\NUL\STXK\DC2\EOT\147\ETX\EOT\SI\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ + \\ACK\EOT\b\EOT\NUL\STXK\DC2\EOT\153\ETX\EOT\SI\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXK\SOH\DC2\EOT\147\ETX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STXK\SOH\DC2\EOT\153\ETX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXK\STX\DC2\EOT\147\ETX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STXK\STX\DC2\EOT\153\ETX\f\SO\n\ \E\n\ - \\ACK\EOT\b\EOT\NUL\STXL\DC2\EOT\149\ETX\EOT\NAK\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ + \\ACK\EOT\b\EOT\NUL\STXL\DC2\EOT\155\ETX\EOT\NAK\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXL\SOH\DC2\EOT\149\ETX\EOT\SI\n\ + \\a\EOT\b\EOT\NUL\STXL\SOH\DC2\EOT\155\ETX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXL\STX\DC2\EOT\149\ETX\DC2\DC4\n\ + \\a\EOT\b\EOT\NUL\STXL\STX\DC2\EOT\155\ETX\DC2\DC4\n\ \\137\SOH\n\ - \\ACK\EOT\b\EOT\NUL\STXM\DC2\EOT\152\ETX\EOT\SO\SUBy Data type definition for languages like OCaml which use `type`\n\ + \\ACK\EOT\b\EOT\NUL\STXM\DC2\EOT\158\ETX\EOT\SO\SUBy Data type definition for languages like OCaml which use `type`\n\ \ rather than separate keywords like `struct` and `enum`.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXM\SOH\DC2\EOT\152\ETX\EOT\b\n\ + \\a\EOT\b\EOT\NUL\STXM\SOH\DC2\EOT\158\ETX\EOT\b\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXM\STX\DC2\EOT\152\ETX\v\r\n\ + \\a\EOT\b\EOT\NUL\STXM\STX\DC2\EOT\158\ETX\v\r\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STXN\DC2\EOT\153\ETX\EOT\DC3\n\ + \\ACK\EOT\b\EOT\NUL\STXN\DC2\EOT\159\ETX\EOT\DC3\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXN\SOH\DC2\EOT\153\ETX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STXN\SOH\DC2\EOT\159\ETX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXN\STX\DC2\EOT\153\ETX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STXN\STX\DC2\EOT\159\ETX\DLE\DC2\n\ \S\n\ - \\ACK\EOT\b\EOT\NUL\STXO\DC2\EOT\155\ETX\EOT\DC3\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ + \\ACK\EOT\b\EOT\NUL\STXO\DC2\EOT\161\ETX\EOT\DC3\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXO\SOH\DC2\EOT\155\ETX\EOT\r\n\ + \\a\EOT\b\EOT\NUL\STXO\SOH\DC2\EOT\161\ETX\EOT\r\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXO\STX\DC2\EOT\155\ETX\DLE\DC2\n\ + \\a\EOT\b\EOT\NUL\STXO\STX\DC2\EOT\161\ETX\DLE\DC2\n\ \M\n\ - \\ACK\EOT\b\EOT\NUL\STXP\DC2\EOT\157\ETX\EOT\EM\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ + \\ACK\EOT\b\EOT\NUL\STXP\DC2\EOT\163\ETX\EOT\EM\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXP\SOH\DC2\EOT\157\ETX\EOT\DC3\n\ + \\a\EOT\b\EOT\NUL\STXP\SOH\DC2\EOT\163\ETX\EOT\DC3\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXP\STX\DC2\EOT\157\ETX\SYN\CAN\n\ + \\a\EOT\b\EOT\NUL\STXP\STX\DC2\EOT\163\ETX\SYN\CAN\n\ \\GS\n\ - \\ACK\EOT\b\EOT\NUL\STXQ\DC2\EOT\159\ETX\EOT\DC4\SUB\r For Haskell\n\ + \\ACK\EOT\b\EOT\NUL\STXQ\DC2\EOT\165\ETX\EOT\DC4\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXQ\SOH\DC2\EOT\159\ETX\EOT\SO\n\ + \\a\EOT\b\EOT\NUL\STXQ\SOH\DC2\EOT\165\ETX\EOT\SO\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXQ\STX\DC2\EOT\159\ETX\DC1\DC3\n\ + \\a\EOT\b\EOT\NUL\STXQ\STX\DC2\EOT\165\ETX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STXR\DC2\EOT\160\ETX\EOT\ETB\n\ + \\ACK\EOT\b\EOT\NUL\STXR\DC2\EOT\166\ETX\EOT\ETB\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXR\SOH\DC2\EOT\160\ETX\EOT\DC1\n\ + \\a\EOT\b\EOT\NUL\STXR\SOH\DC2\EOT\166\ETX\EOT\DC1\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXR\STX\DC2\EOT\160\ETX\DC4\SYN\n\ + \\a\EOT\b\EOT\NUL\STXR\STX\DC2\EOT\166\ETX\DC4\SYN\n\ \(\n\ - \\ACK\EOT\b\EOT\NUL\STXS\DC2\EOT\162\ETX\EOT\SI\SUB\CAN For C, C++, Capn Proto\n\ + \\ACK\EOT\b\EOT\NUL\STXS\DC2\EOT\168\ETX\EOT\SI\SUB\CAN For C, C++, Capn Proto\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXS\SOH\DC2\EOT\162\ETX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STXS\SOH\DC2\EOT\168\ETX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXS\STX\DC2\EOT\162\ETX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STXS\STX\DC2\EOT\168\ETX\f\SO\n\ \\SO\n\ - \\ACK\EOT\b\EOT\NUL\STXT\DC2\EOT\163\ETX\EOT\SI\n\ + \\ACK\EOT\b\EOT\NUL\STXT\DC2\EOT\169\ETX\EOT\SI\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXT\SOH\DC2\EOT\163\ETX\EOT\t\n\ + \\a\EOT\b\EOT\NUL\STXT\SOH\DC2\EOT\169\ETX\EOT\t\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXT\STX\DC2\EOT\163\ETX\f\SO\n\ + \\a\EOT\b\EOT\NUL\STXT\STX\DC2\EOT\169\ETX\f\SO\n\ \[\n\ - \\ACK\EOT\b\EOT\NUL\STXU\DC2\EOT\164\ETX\EOT\DC2\"K Next = 87;\n\ + \\ACK\EOT\b\EOT\NUL\STXU\DC2\EOT\170\ETX\EOT\DC2\"K Next = 87;\n\ \ Feel free to open a PR proposing new language-specific kinds.\n\ \\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXU\SOH\DC2\EOT\164\ETX\EOT\f\n\ + \\a\EOT\b\EOT\NUL\STXU\SOH\DC2\EOT\170\ETX\EOT\f\n\ \\SI\n\ - \\a\EOT\b\EOT\NUL\STXU\STX\DC2\EOT\164\ETX\SI\DC1\n\ + \\a\EOT\b\EOT\NUL\STXU\STX\DC2\EOT\170\ETX\SI\DC1\n\ \\243\ETX\n\ - \\EOT\EOT\b\STX\EOT\DC2\EOT\177\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ + \\EOT\EOT\b\STX\EOT\DC2\EOT\183\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ \ For example, the symbol \"com/example/MyClass#myMethod(+1).\" should have the\n\ \ display name \"myMethod\". The `symbol` field is not a reliable source of\n\ \ the display name for several reasons:\n\ @@ -7954,13 +7971,13 @@ packedFileDescriptor \ displayed to the user.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\177\ETX\STX\b\n\ + \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\183\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\177\ETX\t\NAK\n\ + \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\183\ETX\t\NAK\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\177\ETX\CAN\EM\n\ + \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\183\ETX\CAN\EM\n\ \\159\ETX\n\ - \\EOT\EOT\b\STX\ENQ\DC2\EOT\184\ETX\STX(\SUB\144\ETX (optional) The signature of this symbol as it's displayed in API\n\ + \\EOT\EOT\b\STX\ENQ\DC2\EOT\190\ETX\STX(\SUB\144\ETX (optional) The signature of this symbol as it's displayed in API\n\ \ documentation or in hover tooltips. For example, a Java method that adds\n\ \ two numbers would have `Signature.language = \"java\"` and\n\ \ `Signature.text = \"void add(int a, int b)\"`. The `language` and `text`\n\ @@ -7968,13 +7985,13 @@ packedFileDescriptor \ support hyperlinking referenced symbols in the signature.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\ENQ\ACK\DC2\EOT\184\ETX\STX\v\n\ + \\ENQ\EOT\b\STX\ENQ\ACK\DC2\EOT\190\ETX\STX\v\n\ \\r\n\ - \\ENQ\EOT\b\STX\ENQ\SOH\DC2\EOT\184\ETX\f#\n\ + \\ENQ\EOT\b\STX\ENQ\SOH\DC2\EOT\190\ETX\f#\n\ \\r\n\ - \\ENQ\EOT\b\STX\ENQ\ETX\DC2\EOT\184\ETX&'\n\ + \\ENQ\EOT\b\STX\ENQ\ETX\DC2\EOT\190\ETX&'\n\ \\201\b\n\ - \\EOT\EOT\b\STX\ACK\DC2\EOT\202\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ + \\EOT\EOT\b\STX\ACK\DC2\EOT\208\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ \ symbols, the enclosing symbol should be parsed from the `symbol` field\n\ \ using the `Descriptor` grammar.\n\ \\n\ @@ -7993,25 +8010,25 @@ packedFileDescriptor \ symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\ACK\ENQ\DC2\EOT\202\ETX\STX\b\n\ + \\ENQ\EOT\b\STX\ACK\ENQ\DC2\EOT\208\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\b\STX\ACK\SOH\DC2\EOT\202\ETX\t\EM\n\ + \\ENQ\EOT\b\STX\ACK\SOH\DC2\EOT\208\ETX\t\EM\n\ \\r\n\ - \\ENQ\EOT\b\STX\ACK\ETX\DC2\EOT\202\ETX\FS\GS\n\ + \\ENQ\EOT\b\STX\ACK\ETX\DC2\EOT\208\ETX\FS\GS\n\ \\f\n\ - \\STX\EOT\t\DC2\ACK\205\ETX\NUL\129\EOT\SOH\n\ + \\STX\EOT\t\DC2\ACK\211\ETX\NUL\135\EOT\SOH\n\ \\v\n\ - \\ETX\EOT\t\SOH\DC2\EOT\205\ETX\b\DC4\n\ + \\ETX\EOT\t\SOH\DC2\EOT\211\ETX\b\DC4\n\ \\f\n\ - \\EOT\EOT\t\STX\NUL\DC2\EOT\206\ETX\STX\DC4\n\ + \\EOT\EOT\t\STX\NUL\DC2\EOT\212\ETX\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\206\ETX\STX\b\n\ + \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\212\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\206\ETX\t\SI\n\ + \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\212\ETX\t\SI\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\206\ETX\DC2\DC3\n\ + \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\212\ETX\DC2\DC3\n\ \\222\b\n\ - \\EOT\EOT\t\STX\SOH\DC2\EOT\231\ETX\STX\CAN\SUB\207\b When resolving \"Find references\", this field documents what other symbols\n\ + \\EOT\EOT\t\STX\SOH\DC2\EOT\237\ETX\STX\CAN\SUB\207\b When resolving \"Find references\", this field documents what other symbols\n\ \ should be included together with this symbol. For example, consider the\n\ \ following TypeScript code that defines two symbols `Animal#sound()` and\n\ \ `Dog#sound()`:\n\ @@ -8037,13 +8054,13 @@ packedFileDescriptor \ `Animal#sound()` method as well.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\231\ETX\STX\ACK\n\ + \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\237\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\231\ETX\a\DC3\n\ + \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\237\ETX\a\DC3\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\231\ETX\SYN\ETB\n\ + \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\237\ETX\SYN\ETB\n\ \\238\ETX\n\ - \\EOT\EOT\t\STX\STX\DC2\EOT\240\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ + \\EOT\EOT\t\STX\STX\DC2\EOT\246\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ \ It's common for `is_implementation` and `is_reference` to both be true but\n\ \ it's not always the case.\n\ \ In the TypeScript example above, observe that `Dog#` has an\n\ @@ -8053,22 +8070,22 @@ packedFileDescriptor \ implementations\" on the \"Animal#\" symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\240\ETX\STX\ACK\n\ + \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\246\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\240\ETX\a\CAN\n\ + \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\246\ETX\a\CAN\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\240\ETX\ESC\FS\n\ + \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\246\ETX\ESC\FS\n\ \P\n\ - \\EOT\EOT\t\STX\ETX\DC2\EOT\242\ETX\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ + \\EOT\EOT\t\STX\ETX\DC2\EOT\248\ETX\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\242\ETX\STX\ACK\n\ + \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\248\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\242\ETX\a\EM\n\ + \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\248\ETX\a\EM\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\242\ETX\FS\GS\n\ + \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\248\ETX\FS\GS\n\ \\216\ENQ\n\ - \\EOT\EOT\t\STX\EOT\DC2\EOT\255\ETX\STX\EM\SUB\134\ENQ Allows overriding the behavior of \"Go to definition\" and \"Find references\"\n\ + \\EOT\EOT\t\STX\EOT\DC2\EOT\133\EOT\STX\EM\SUB\134\ENQ Allows overriding the behavior of \"Go to definition\" and \"Find references\"\n\ \ for symbols which do not have a definition of their own or could\n\ \ potentially have multiple definitions.\n\ \\n\ @@ -8083,379 +8100,379 @@ packedFileDescriptor \\"A Update registerInverseRelationships on adding a new field here.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ENQ\DC2\EOT\255\ETX\STX\ACK\n\ + \\ENQ\EOT\t\STX\EOT\ENQ\DC2\EOT\133\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\255\ETX\a\DC4\n\ + \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\133\EOT\a\DC4\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\255\ETX\ETB\CAN\n\ + \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\133\EOT\ETB\CAN\n\ \\136\ETX\n\ - \\STX\ENQ\ETX\DC2\ACK\136\EOT\NUL\158\EOT\SOH\SUB\249\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ + \\STX\ENQ\ETX\DC2\ACK\142\EOT\NUL\164\EOT\SOH\SUB\249\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ \ encoded as a bitset where each bit represents a different role. For example,\n\ \ to determine if the `Import` role is set, test whether the second bit of the\n\ \ enum value is defined. In pseudocode, this can be implemented with the\n\ \ logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`.\n\ \\n\ \\v\n\ - \\ETX\ENQ\ETX\SOH\DC2\EOT\136\EOT\ENQ\SI\n\ + \\ETX\ENQ\ETX\SOH\DC2\EOT\142\EOT\ENQ\SI\n\ \v\n\ - \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\139\EOT\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ + \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\145\EOT\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ \ from the Protobuf code generator.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\139\EOT\STX\ETB\n\ + \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\145\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\139\EOT\SUB\ESC\n\ + \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\145\EOT\SUB\ESC\n\ \T\n\ - \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\141\EOT\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ + \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\147\EOT\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\141\EOT\STX\f\n\ + \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\147\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\141\EOT\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\147\EOT\SI\DC2\n\ \,\n\ - \\EOT\ENQ\ETX\STX\STX\DC2\EOT\143\EOT\STX\SI\SUB\RS Is the symbol imported here?\n\ + \\EOT\ENQ\ETX\STX\STX\DC2\EOT\149\EOT\STX\SI\SUB\RS Is the symbol imported here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\143\EOT\STX\b\n\ + \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\149\EOT\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\143\EOT\v\SO\n\ + \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\149\EOT\v\SO\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\145\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ + \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\151\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\145\EOT\STX\r\n\ + \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\151\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\145\EOT\DLE\DC3\n\ + \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\151\EOT\DLE\DC3\n\ \(\n\ - \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\147\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ + \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\153\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\147\EOT\STX\f\n\ + \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\153\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\147\EOT\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\153\EOT\SI\DC2\n\ \0\n\ - \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\149\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ + \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\155\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\149\EOT\STX\v\n\ + \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\155\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\149\EOT\SO\DC2\n\ + \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\155\EOT\SO\DC2\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\151\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ + \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\157\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\151\EOT\STX\ACK\n\ + \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\157\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\151\EOT\t\r\n\ + \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\157\EOT\t\r\n\ \\237\SOH\n\ - \\EOT\ENQ\ETX\STX\a\DC2\EOT\157\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ + \\EOT\ENQ\ETX\STX\a\DC2\EOT\163\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ \\n\ \ Applies to forward declarations for languages like C, C++\n\ \ and Objective-C, as well as `val` declarations in interface\n\ \ files in languages like SML and OCaml.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\157\EOT\STX\DC3\n\ + \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\163\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\157\EOT\SYN\SUB\n\ + \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\163\EOT\SYN\SUB\n\ \\f\n\ - \\STX\ENQ\EOT\DC2\ACK\160\EOT\NUL\253\EOT\SOH\n\ + \\STX\ENQ\EOT\DC2\ACK\166\EOT\NUL\131\ENQ\SOH\n\ \\v\n\ - \\ETX\ENQ\EOT\SOH\DC2\EOT\160\EOT\ENQ\SI\n\ + \\ETX\ENQ\EOT\SOH\DC2\EOT\166\EOT\ENQ\SI\n\ \\v\n\ - \\ETX\ENQ\EOT\ETX\DC2\EOT\161\EOT\STX\FS\n\ + \\ETX\ENQ\EOT\ETX\DC2\EOT\167\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\161\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\167\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\163\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\169\EOT\STX\FS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\163\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\169\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\163\EOT\SUB\ESC\n\ + \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\169\EOT\SUB\ESC\n\ \;\n\ - \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\166\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ + \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\172\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\166\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\172\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\166\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\172\EOT\f\r\n\ \\ESC\n\ - \\EOT\ENQ\EOT\STX\STX\DC2\EOT\169\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ + \\EOT\ENQ\EOT\STX\STX\DC2\EOT\175\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\169\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\175\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\169\EOT\EM\SUB\n\ + \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\175\EOT\EM\SUB\n\ \2\n\ - \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\171\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ + \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\177\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\171\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\177\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\171\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\177\EOT\ETB\CAN\n\ \5\n\ - \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\174\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ + \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\180\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\174\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\180\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\174\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\180\EOT\f\r\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\175\EOT\STX,\n\ + \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\181\EOT\STX,\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\175\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\181\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\175\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\181\EOT\SYN\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\175\EOT\CAN+\n\ + \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\181\EOT\CAN+\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\175\EOT\EM*\n\ + \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\181\EOT\EM*\n\ \\RS\n\ - \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\178\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ + \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\184\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\178\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\184\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\178\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\184\EOT\ETB\CAN\n\ \X\n\ - \\EOT\ENQ\EOT\STX\a\DC2\EOT\181\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ + \\EOT\ENQ\EOT\STX\a\DC2\EOT\187\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\181\EOT\STX\f\n\ + \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\187\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\181\EOT\SI\DLE\n\ + \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\187\EOT\SI\DLE\n\ \N\n\ - \\EOT\ENQ\EOT\STX\b\DC2\EOT\183\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ + \\EOT\ENQ\EOT\STX\b\DC2\EOT\189\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\183\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\189\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\183\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\189\EOT\SYN\ETB\n\ \[\n\ - \\EOT\ENQ\EOT\STX\t\DC2\EOT\185\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ + \\EOT\ENQ\EOT\STX\t\DC2\EOT\191\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\185\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\191\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\185\EOT\DC3\DC4\n\ + \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\191\EOT\DC3\DC4\n\ \.\n\ \\EOT\ENQ\EOT\STX\n\ - \\DC2\EOT\187\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ + \\DC2\EOT\193\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ \\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\SOH\DC2\EOT\187\EOT\STX\DC4\n\ + \\SOH\DC2\EOT\193\EOT\STX\DC4\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\STX\DC2\EOT\187\EOT\ETB\CAN\n\ + \\STX\DC2\EOT\193\EOT\ETB\CAN\n\ \'\n\ - \\EOT\ENQ\EOT\STX\v\DC2\EOT\189\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ + \\EOT\ENQ\EOT\STX\v\DC2\EOT\195\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\189\EOT\STX\EM\n\ + \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\195\EOT\STX\EM\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\189\EOT\FS\RS\n\ + \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\195\EOT\FS\RS\n\ \3\n\ - \\EOT\ENQ\EOT\STX\f\DC2\EOT\191\EOT\STX\ESC\SUB% Parameter definition and references\n\ + \\EOT\ENQ\EOT\STX\f\DC2\EOT\197\EOT\STX\ESC\SUB% Parameter definition and references\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\191\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\197\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\191\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\197\EOT\CAN\SUB\n\ \X\n\ - \\EOT\ENQ\EOT\STX\r\DC2\EOT\193\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ + \\EOT\ENQ\EOT\STX\r\DC2\EOT\199\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\193\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\199\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\193\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\199\EOT\DC4\SYN\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SO\DC2\EOT\195\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ + \\EOT\ENQ\EOT\STX\SO\DC2\EOT\201\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\195\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\201\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\195\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\201\EOT\ETB\EM\n\ \\205\SOH\n\ - \\EOT\ENQ\EOT\STX\SI\DC2\EOT\200\EOT\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ + \\EOT\ENQ\EOT\STX\SI\DC2\EOT\206\EOT\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ \\n\ \ NOTE: This corresponds to a package in Go and JVM languages,\n\ \ and a module in languages like Python and JavaScript.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SI\SOH\DC2\EOT\200\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\SI\SOH\DC2\EOT\206\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\200\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\206\EOT\CAN\SUB\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\201\EOT\STX,\n\ + \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\207\EOT\STX,\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\201\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\207\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\201\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\207\EOT\NAK\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\201\EOT\CAN+\n\ + \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\207\EOT\CAN+\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\201\EOT\EM*\n\ + \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\207\EOT\EM*\n\ \4\n\ - \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\204\EOT\STX\SUB\SUB& Function references, including calls\n\ + \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\210\EOT\STX\SUB\SUB& Function references, including calls\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\204\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\210\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\204\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\210\EOT\ETB\EM\n\ \(\n\ - \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\206\EOT\STX$\SUB\SUB Function definition only\n\ + \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\212\EOT\STX$\SUB\SUB Function definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\206\EOT\STX\RS\n\ + \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\212\EOT\STX\RS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\206\EOT!#\n\ + \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\212\EOT!#\n\ \7\n\ - \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\209\EOT\STX\ETB\SUB) Macro references, including invocations\n\ + \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\215\EOT\STX\ETB\SUB) Macro references, including invocations\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\209\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\215\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\209\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\215\EOT\DC4\SYN\n\ \%\n\ - \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\211\EOT\STX!\SUB\ETB Macro definition only\n\ + \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\217\EOT\STX!\SUB\ETB Macro definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\211\EOT\STX\ESC\n\ + \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\217\EOT\STX\ESC\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\211\EOT\RS \n\ + \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\217\EOT\RS \n\ \!\n\ - \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\214\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ + \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\220\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\214\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\220\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\214\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\220\EOT\DC3\NAK\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\216\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ + \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\222\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\216\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\222\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\216\EOT\SUB\FS\n\ + \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\222\EOT\SUB\FS\n\ \7\n\ - \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\219\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ + \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\225\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\219\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\225\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\219\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\225\EOT\CAN\SUB\n\ \\DC4\n\ - \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\222\EOT\STX\DC3\SUB\ACK `\\b`\n\ + \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\228\EOT\STX\DC3\SUB\ACK `\\b`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\222\EOT\STX\r\n\ + \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\228\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\222\EOT\DLE\DC2\n\ + \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\228\EOT\DLE\DC2\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\EM\DC2\EOT\224\EOT\STX\NAK\SUB\n\ + \\EOT\ENQ\EOT\STX\EM\DC2\EOT\230\EOT\STX\NAK\SUB\n\ \ `*`, `+`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\224\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\230\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\224\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\230\EOT\DC2\DC4\n\ \\DC3\n\ - \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\226\EOT\STX\NAK\SUB\ENQ `.`\n\ + \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\232\EOT\STX\NAK\SUB\ENQ `.`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\226\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\232\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\226\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\232\EOT\DC2\DC4\n\ \\"\n\ - \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\228\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ + \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\234\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\228\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\234\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\228\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\234\EOT\DC3\NAK\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\FS\DC2\EOT\230\EOT\STX\DC1\SUB\n\ + \\EOT\ENQ\EOT\STX\FS\DC2\EOT\236\EOT\STX\DC1\SUB\n\ \ `|`, `-`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\230\EOT\STX\v\n\ + \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\236\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\230\EOT\SO\DLE\n\ + \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\236\EOT\SO\DLE\n\ \0\n\ - \\EOT\ENQ\EOT\STX\GS\DC2\EOT\233\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ + \\EOT\ENQ\EOT\STX\GS\DC2\EOT\239\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\233\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\239\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\233\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\239\EOT\DC2\DC4\n\ \-\n\ - \\EOT\ENQ\EOT\STX\RS\DC2\EOT\235\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ + \\EOT\ENQ\EOT\STX\RS\DC2\EOT\241\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\235\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\241\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\235\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\241\EOT\CAN\SUB\n\ \_\n\ - \\EOT\ENQ\EOT\STX\US\DC2\EOT\237\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ + \\EOT\ENQ\EOT\STX\US\DC2\EOT\243\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\237\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\243\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\237\EOT\EM\ESC\n\ + \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\243\EOT\EM\ESC\n\ \G\n\ - \\EOT\ENQ\EOT\STX \DC2\EOT\239\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ + \\EOT\ENQ\EOT\STX \DC2\EOT\245\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\239\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\245\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\239\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\245\EOT\NAK\ETB\n\ \V\n\ - \\EOT\ENQ\EOT\STX!\DC2\EOT\241\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ + \\EOT\ENQ\EOT\STX!\DC2\EOT\247\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\241\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\247\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\241\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\247\EOT\NAK\ETB\n\ \9\n\ - \\EOT\ENQ\EOT\STX\"\DC2\EOT\243\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ + \\EOT\ENQ\EOT\STX\"\DC2\EOT\249\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\243\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\249\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\243\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\249\EOT\DC3\NAK\n\ \\US\n\ - \\EOT\ENQ\EOT\STX#\DC2\EOT\245\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ + \\EOT\ENQ\EOT\STX#\DC2\EOT\251\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\245\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\251\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\245\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\251\EOT\DC3\NAK\n\ \&\n\ - \\EOT\ENQ\EOT\STX$\DC2\EOT\248\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ + \\EOT\ENQ\EOT\STX$\DC2\EOT\254\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\248\EOT\STX\ENQ\n\ + \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\254\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\248\EOT\b\n\ + \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\254\EOT\b\n\ \\n\ \/\n\ - \\EOT\ENQ\EOT\STX%\DC2\EOT\250\EOT\STX\DC4\SUB! Attribute name in XML-like tags\n\ + \\EOT\ENQ\EOT\STX%\DC2\EOT\128\ENQ\STX\DC4\SUB! Attribute name in XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\250\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\128\ENQ\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\250\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\128\ENQ\DC1\DC3\n\ \,\n\ - \\EOT\ENQ\EOT\STX&\DC2\EOT\252\EOT\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ + \\EOT\ENQ\EOT\STX&\DC2\EOT\130\ENQ\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\252\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\130\ENQ\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\252\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\130\ENQ\DC1\DC3\n\ \\249\SOH\n\ \\STX\EOT\n\ - \\DC2\ACK\132\ENQ\NUL\229\ENQ\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ + \\DC2\ACK\138\ENQ\NUL\235\ENQ\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ \ information.\n\ \\n\ \ If possible, indexers should try to bundle logically related information\n\ @@ -8463,10 +8480,10 @@ packedFileDescriptor \\n\ \\v\n\ \\ETX\EOT\n\ - \\SOH\DC2\EOT\132\ENQ\b\DC2\n\ + \\SOH\DC2\EOT\138\ENQ\b\DC2\n\ \\232\b\n\ \\EOT\EOT\n\ - \\STX\NUL\DC2\EOT\156\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ + \\STX\NUL\DC2\EOT\162\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ \ elements:\n\ \\n\ \ - Four elements: `[startLine, startCharacter, endLine, endCharacter]`\n\ @@ -8492,48 +8509,48 @@ packedFileDescriptor \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\EOT\DC2\EOT\156\ENQ\STX\n\ + \\STX\NUL\EOT\DC2\EOT\162\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ENQ\DC2\EOT\156\ENQ\v\DLE\n\ + \\STX\NUL\ENQ\DC2\EOT\162\ENQ\v\DLE\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\SOH\DC2\EOT\156\ENQ\DC1\SYN\n\ + \\STX\NUL\SOH\DC2\EOT\162\ENQ\DC1\SYN\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ETX\DC2\EOT\156\ENQ\EM\SUB\n\ + \\STX\NUL\ETX\DC2\EOT\162\ENQ\EM\SUB\n\ \\138\SOH\n\ \\EOT\EOT\n\ - \\STX\SOH\DC2\EOT\159\ENQ\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ + \\STX\SOH\DC2\EOT\165\ENQ\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ \ `SymbolInformation.symbol` for how to format symbols as strings.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ENQ\DC2\EOT\159\ENQ\STX\b\n\ + \\STX\SOH\ENQ\DC2\EOT\165\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\SOH\DC2\EOT\159\ENQ\t\SI\n\ + \\STX\SOH\SOH\DC2\EOT\165\ENQ\t\SI\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ETX\DC2\EOT\159\ENQ\DC2\DC3\n\ + \\STX\SOH\ETX\DC2\EOT\165\ENQ\DC2\DC3\n\ \\151\SOH\n\ \\EOT\EOT\n\ - \\STX\STX\DC2\EOT\162\ENQ\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ + \\STX\STX\DC2\EOT\168\ENQ\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ \ See `SymbolRole`'s documentation for how to read and write this field.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ENQ\DC2\EOT\162\ENQ\STX\a\n\ + \\STX\STX\ENQ\DC2\EOT\168\ENQ\STX\a\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\SOH\DC2\EOT\162\ENQ\b\DC4\n\ + \\STX\STX\SOH\DC2\EOT\168\ENQ\b\DC4\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ETX\DC2\EOT\162\ENQ\ETB\CAN\n\ + \\STX\STX\ETX\DC2\EOT\168\ENQ\ETB\CAN\n\ \\241\ETX\n\ \\EOT\EOT\n\ - \\STX\ETX\DC2\EOT\171\ENQ\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ + \\STX\ETX\DC2\EOT\177\ENQ\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ \ empty, the `Symbol.documentation` field is used instead. One example\n\ \ where this field might be useful is when the symbol represents a generic\n\ \ function (with abstract type parameters such as `List`) and at this\n\ @@ -8544,50 +8561,50 @@ packedFileDescriptor \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\EOT\DC2\EOT\171\ENQ\STX\n\ + \\STX\ETX\EOT\DC2\EOT\177\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ENQ\DC2\EOT\171\ENQ\v\DC1\n\ + \\STX\ETX\ENQ\DC2\EOT\177\ENQ\v\DC1\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\SOH\DC2\EOT\171\ENQ\DC2(\n\ + \\STX\ETX\SOH\DC2\EOT\177\ENQ\DC2(\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ETX\DC2\EOT\171\ENQ+,\n\ + \\STX\ETX\ETX\DC2\EOT\177\ENQ+,\n\ \X\n\ \\EOT\EOT\n\ - \\STX\EOT\DC2\EOT\173\ENQ\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ + \\STX\EOT\DC2\EOT\179\ENQ\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ACK\DC2\EOT\173\ENQ\STX\f\n\ + \\STX\EOT\ACK\DC2\EOT\179\ENQ\STX\f\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\SOH\DC2\EOT\173\ENQ\r\CAN\n\ + \\STX\EOT\SOH\DC2\EOT\179\ENQ\r\CAN\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ETX\DC2\EOT\173\ENQ\ESC\FS\n\ + \\STX\EOT\ETX\DC2\EOT\179\ENQ\ESC\FS\n\ \W\n\ \\EOT\EOT\n\ - \\STX\ENQ\DC2\EOT\175\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ + \\STX\ENQ\DC2\EOT\181\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ENQ\EOT\DC2\EOT\175\ENQ\STX\n\ + \\STX\ENQ\EOT\DC2\EOT\181\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ENQ\ACK\DC2\EOT\175\ENQ\v\NAK\n\ + \\STX\ENQ\ACK\DC2\EOT\181\ENQ\v\NAK\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ENQ\SOH\DC2\EOT\175\ENQ\SYN!\n\ + \\STX\ENQ\SOH\DC2\EOT\181\ENQ\SYN!\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ENQ\ETX\DC2\EOT\175\ENQ$%\n\ + \\STX\ENQ\ETX\DC2\EOT\181\ENQ$%\n\ \\183\SO\n\ \\EOT\EOT\n\ - \\STX\ACK\DC2\EOT\228\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ + \\STX\ACK\DC2\EOT\234\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ \ source range of the nearest non-trivial enclosing AST node. This range must\n\ \ enclose the `range` field. Example applications that make use of the\n\ \ enclosing_range field:\n\ @@ -8642,132 +8659,132 @@ packedFileDescriptor \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ACK\EOT\DC2\EOT\228\ENQ\STX\n\ + \\STX\ACK\EOT\DC2\EOT\234\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ACK\ENQ\DC2\EOT\228\ENQ\v\DLE\n\ + \\STX\ACK\ENQ\DC2\EOT\234\ENQ\v\DLE\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ACK\SOH\DC2\EOT\228\ENQ\DC1 \n\ + \\STX\ACK\SOH\DC2\EOT\234\ENQ\DC1 \n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ACK\ETX\DC2\EOT\228\ENQ#$\n\ + \\STX\ACK\ETX\DC2\EOT\234\ENQ#$\n\ \w\n\ - \\STX\EOT\v\DC2\ACK\233\ENQ\NUL\244\ENQ\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ + \\STX\EOT\v\DC2\ACK\239\ENQ\NUL\250\ENQ\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ \ reported for a document.\n\ \\n\ \\v\n\ - \\ETX\EOT\v\SOH\DC2\EOT\233\ENQ\b\DC2\n\ + \\ETX\EOT\v\SOH\DC2\EOT\239\ENQ\b\DC2\n\ \W\n\ - \\EOT\EOT\v\STX\NUL\DC2\EOT\235\ENQ\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ + \\EOT\EOT\v\STX\NUL\DC2\EOT\241\ENQ\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ \\n\ \\r\n\ - \\ENQ\EOT\v\STX\NUL\ACK\DC2\EOT\235\ENQ\STX\n\ + \\ENQ\EOT\v\STX\NUL\ACK\DC2\EOT\241\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\v\STX\NUL\SOH\DC2\EOT\235\ENQ\v\DC3\n\ + \\ENQ\EOT\v\STX\NUL\SOH\DC2\EOT\241\ENQ\v\DC3\n\ \\r\n\ - \\ENQ\EOT\v\STX\NUL\ETX\DC2\EOT\235\ENQ\SYN\ETB\n\ + \\ENQ\EOT\v\STX\NUL\ETX\DC2\EOT\241\ENQ\SYN\ETB\n\ \]\n\ - \\EOT\EOT\v\STX\SOH\DC2\EOT\237\ENQ\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ + \\EOT\EOT\v\STX\SOH\DC2\EOT\243\ENQ\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ \\n\ \\r\n\ - \\ENQ\EOT\v\STX\SOH\ENQ\DC2\EOT\237\ENQ\STX\b\n\ + \\ENQ\EOT\v\STX\SOH\ENQ\DC2\EOT\243\ENQ\STX\b\n\ \\r\n\ - \\ENQ\EOT\v\STX\SOH\SOH\DC2\EOT\237\ENQ\t\r\n\ + \\ENQ\EOT\v\STX\SOH\SOH\DC2\EOT\243\ENQ\t\r\n\ \\r\n\ - \\ENQ\EOT\v\STX\SOH\ETX\DC2\EOT\237\ENQ\DLE\DC1\n\ + \\ENQ\EOT\v\STX\SOH\ETX\DC2\EOT\243\ENQ\DLE\DC1\n\ \+\n\ - \\EOT\EOT\v\STX\STX\DC2\EOT\239\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ + \\EOT\EOT\v\STX\STX\DC2\EOT\245\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ \\n\ \\r\n\ - \\ENQ\EOT\v\STX\STX\ENQ\DC2\EOT\239\ENQ\STX\b\n\ + \\ENQ\EOT\v\STX\STX\ENQ\DC2\EOT\245\ENQ\STX\b\n\ \\r\n\ - \\ENQ\EOT\v\STX\STX\SOH\DC2\EOT\239\ENQ\t\DLE\n\ + \\ENQ\EOT\v\STX\STX\SOH\DC2\EOT\245\ENQ\t\DLE\n\ \\r\n\ - \\ENQ\EOT\v\STX\STX\ETX\DC2\EOT\239\ENQ\DC3\DC4\n\ + \\ENQ\EOT\v\STX\STX\ETX\DC2\EOT\245\ENQ\DC3\DC4\n\ \~\n\ - \\EOT\EOT\v\STX\ETX\DC2\EOT\242\ENQ\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ + \\EOT\EOT\v\STX\ETX\DC2\EOT\248\ENQ\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ \ 'typescript' or 'super lint'.\n\ \\n\ \\r\n\ - \\ENQ\EOT\v\STX\ETX\ENQ\DC2\EOT\242\ENQ\STX\b\n\ + \\ENQ\EOT\v\STX\ETX\ENQ\DC2\EOT\248\ENQ\STX\b\n\ \\r\n\ - \\ENQ\EOT\v\STX\ETX\SOH\DC2\EOT\242\ENQ\t\SI\n\ + \\ENQ\EOT\v\STX\ETX\SOH\DC2\EOT\248\ENQ\t\SI\n\ \\r\n\ - \\ENQ\EOT\v\STX\ETX\ETX\DC2\EOT\242\ENQ\DC2\DC3\n\ + \\ENQ\EOT\v\STX\ETX\ETX\DC2\EOT\248\ENQ\DC2\DC3\n\ \\f\n\ - \\EOT\EOT\v\STX\EOT\DC2\EOT\243\ENQ\STX\"\n\ + \\EOT\EOT\v\STX\EOT\DC2\EOT\249\ENQ\STX\"\n\ \\r\n\ - \\ENQ\EOT\v\STX\EOT\EOT\DC2\EOT\243\ENQ\STX\n\ + \\ENQ\EOT\v\STX\EOT\EOT\DC2\EOT\249\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\v\STX\EOT\ACK\DC2\EOT\243\ENQ\v\CAN\n\ + \\ENQ\EOT\v\STX\EOT\ACK\DC2\EOT\249\ENQ\v\CAN\n\ \\r\n\ - \\ENQ\EOT\v\STX\EOT\SOH\DC2\EOT\243\ENQ\EM\GS\n\ + \\ENQ\EOT\v\STX\EOT\SOH\DC2\EOT\249\ENQ\EM\GS\n\ \\r\n\ - \\ENQ\EOT\v\STX\EOT\ETX\DC2\EOT\243\ENQ !\n\ + \\ENQ\EOT\v\STX\EOT\ETX\DC2\EOT\249\ENQ !\n\ \\f\n\ - \\STX\ENQ\ENQ\DC2\ACK\246\ENQ\NUL\252\ENQ\SOH\n\ + \\STX\ENQ\ENQ\DC2\ACK\252\ENQ\NUL\130\ACK\SOH\n\ \\v\n\ - \\ETX\ENQ\ENQ\SOH\DC2\EOT\246\ENQ\ENQ\r\n\ + \\ETX\ENQ\ENQ\SOH\DC2\EOT\252\ENQ\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\247\ENQ\STX\SUB\n\ + \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\253\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\247\ENQ\STX\NAK\n\ + \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\253\ENQ\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\247\ENQ\CAN\EM\n\ + \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\253\ENQ\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\248\ENQ\STX\f\n\ + \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\254\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\248\ENQ\STX\a\n\ + \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\254\ENQ\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\248\ENQ\n\ + \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\254\ENQ\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\249\ENQ\STX\SO\n\ + \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\255\ENQ\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\249\ENQ\STX\t\n\ + \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\255\ENQ\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\249\ENQ\f\r\n\ + \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\255\ENQ\f\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\250\ENQ\STX\DC2\n\ + \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\128\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\250\ENQ\STX\r\n\ + \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\128\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\250\ENQ\DLE\DC1\n\ + \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\128\ACK\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\251\ENQ\STX\v\n\ + \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\129\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\251\ENQ\STX\ACK\n\ + \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\129\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\251\ENQ\t\n\ + \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\129\ACK\t\n\ \\n\ \\f\n\ - \\STX\ENQ\ACK\DC2\ACK\254\ENQ\NUL\130\ACK\SOH\n\ + \\STX\ENQ\ACK\DC2\ACK\132\ACK\NUL\136\ACK\SOH\n\ \\v\n\ - \\ETX\ENQ\ACK\SOH\DC2\EOT\254\ENQ\ENQ\DC2\n\ + \\ETX\ENQ\ACK\SOH\DC2\EOT\132\ACK\ENQ\DC2\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\255\ENQ\STX\US\n\ + \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\133\ACK\STX\US\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\255\ENQ\STX\SUB\n\ + \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\133\ACK\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\255\ENQ\GS\RS\n\ + \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\133\ACK\GS\RS\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\128\ACK\STX\DC2\n\ + \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\134\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\128\ACK\STX\r\n\ + \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\134\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\128\ACK\DLE\DC1\n\ + \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\134\ACK\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\STX\DC2\EOT\129\ACK\STX\DC1\n\ + \\EOT\ENQ\ACK\STX\STX\DC2\EOT\135\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\129\ACK\STX\f\n\ + \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\135\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\129\ACK\SI\DLE\n\ + \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\135\ACK\SI\DLE\n\ \\208\ETX\n\ - \\STX\ENQ\a\DC2\ACK\138\ACK\NUL\128\a\SOH\SUB\193\ETX Language standardises names of common programming languages that can be used\n\ + \\STX\ENQ\a\DC2\ACK\144\ACK\NUL\134\a\SOH\SUB\193\ETX Language standardises names of common programming languages that can be used\n\ \ for the `Document.language` field. The primary purpose of this enum is to\n\ \ prevent a situation where we have a single programming language ends up with\n\ \ multiple string representations. For example, the C++ language uses the name\n\ @@ -8775,709 +8792,709 @@ packedFileDescriptor \ Feel free to send a pull-request to add missing programming languages.\n\ \\n\ \\v\n\ - \\ETX\ENQ\a\SOH\DC2\EOT\138\ACK\ENQ\r\n\ + \\ETX\ENQ\a\SOH\DC2\EOT\144\ACK\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\NUL\DC2\EOT\139\ACK\STX\SUB\n\ + \\EOT\ENQ\a\STX\NUL\DC2\EOT\145\ACK\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\139\ACK\STX\NAK\n\ + \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\145\ACK\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\139\ACK\CAN\EM\n\ + \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\145\ACK\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\a\STX\SOH\DC2\EOT\140\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\SOH\DC2\EOT\146\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\140\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\146\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\140\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\146\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\STX\DC2\EOT\141\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\STX\DC2\EOT\147\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\141\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\147\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\141\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\147\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETX\DC2\EOT\142\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\ETX\DC2\EOT\148\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\142\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\148\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\142\ACK\b\n\ + \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\148\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\EOT\DC2\EOT\143\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\EOT\DC2\EOT\149\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\143\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\149\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\143\ACK\b\n\ + \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\149\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\ENQ\DC2\EOT\144\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ENQ\DC2\EOT\150\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\144\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\150\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\144\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\150\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ACK\DC2\EOT\145\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\ACK\DC2\EOT\151\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\145\ACK\STX\n\ + \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\151\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\145\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\151\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\a\DC2\EOT\146\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\a\DC2\EOT\152\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\146\ACK\STX\n\ + \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\152\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\146\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\152\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\b\DC2\EOT\147\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\b\DC2\EOT\153\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\147\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\153\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\147\ACK\b\n\ + \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\153\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\t\DC2\EOT\148\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\t\DC2\EOT\154\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\148\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\154\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\148\ACK\b\n\ + \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\154\ACK\b\n\ \\n\ \\f\n\ \\EOT\ENQ\a\STX\n\ - \\DC2\EOT\149\ACK\STX\SO\n\ + \\DC2\EOT\155\ACK\STX\SO\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\SOH\DC2\EOT\149\ACK\STX\b\n\ + \\SOH\DC2\EOT\155\ACK\STX\b\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\STX\DC2\EOT\149\ACK\v\r\n\ + \\STX\DC2\EOT\155\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\v\DC2\EOT\150\ACK\STX\t\n\ + \\EOT\ENQ\a\STX\v\DC2\EOT\156\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\150\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\156\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\150\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\156\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX\f\DC2\EOT\151\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\f\DC2\EOT\157\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\151\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\157\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\151\ACK\n\ + \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\157\ACK\n\ \\f\n\ \H\n\ - \\EOT\ENQ\a\STX\r\DC2\EOT\152\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ + \\EOT\ENQ\a\STX\r\DC2\EOT\158\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\152\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\158\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\152\ACK\b\n\ + \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\158\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SO\DC2\EOT\153\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\SO\DC2\EOT\159\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\153\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\159\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\153\ACK\b\n\ + \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\159\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SI\DC2\EOT\154\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\SI\DC2\EOT\160\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\154\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\160\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\154\ACK\v\f\n\ + \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\160\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX\DLE\DC2\EOT\155\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\DLE\DC2\EOT\161\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\155\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\161\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\155\ACK\f\r\n\ + \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\161\ACK\f\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC1\DC2\EOT\156\ACK\STX\DC4\n\ + \\EOT\ENQ\a\STX\DC1\DC2\EOT\162\ACK\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\156\ACK\STX\SO\n\ + \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\162\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\156\ACK\DC1\DC3\n\ + \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\162\ACK\DC1\DC3\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC2\DC2\EOT\157\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX\DC2\DC2\EOT\163\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\157\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\163\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\157\ACK\SI\DLE\n\ + \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\163\ACK\SI\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC3\DC2\EOT\158\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\DC3\DC2\EOT\164\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\158\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\164\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\158\ACK\b\n\ + \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\164\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC4\DC2\EOT\159\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\DC4\DC2\EOT\165\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\159\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\165\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\159\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\165\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\NAK\DC2\EOT\160\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\NAK\DC2\EOT\166\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\160\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\166\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\160\ACK\t\n\ + \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\166\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SYN\DC2\EOT\161\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SYN\DC2\EOT\167\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\161\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\167\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\161\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\167\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETB\DC2\EOT\162\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ETB\DC2\EOT\168\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\162\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\168\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\162\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\168\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\CAN\DC2\EOT\163\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\CAN\DC2\EOT\169\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\163\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\169\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\163\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\169\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\EM\DC2\EOT\164\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\EM\DC2\EOT\170\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\164\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\170\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\164\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\170\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\SUB\DC2\EOT\165\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SUB\DC2\EOT\171\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\165\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\171\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\165\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\171\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ESC\DC2\EOT\166\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\ESC\DC2\EOT\172\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\166\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\172\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\166\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\172\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\FS\DC2\EOT\167\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\FS\DC2\EOT\173\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\167\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\173\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\167\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\173\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\GS\DC2\EOT\168\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\GS\DC2\EOT\174\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\168\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\174\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\168\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\174\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\RS\DC2\EOT\169\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\RS\DC2\EOT\175\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\169\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\175\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\169\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\175\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\US\DC2\EOT\170\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX\US\DC2\EOT\176\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\170\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\176\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\170\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\176\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX \DC2\EOT\171\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX \DC2\EOT\177\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX \SOH\DC2\EOT\171\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX \SOH\DC2\EOT\177\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX \STX\DC2\EOT\171\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX \STX\DC2\EOT\177\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX!\DC2\EOT\172\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX!\DC2\EOT\178\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\172\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\178\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\STX\DC2\EOT\172\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX!\STX\DC2\EOT\178\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\"\DC2\EOT\173\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\"\DC2\EOT\179\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\173\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\179\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\173\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\179\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX#\DC2\EOT\174\ACK\STX\n\ + \\EOT\ENQ\a\STX#\DC2\EOT\180\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\174\ACK\STX\EOT\n\ + \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\180\ACK\STX\EOT\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\STX\DC2\EOT\174\ACK\a\t\n\ + \\ENQ\ENQ\a\STX#\STX\DC2\EOT\180\ACK\a\t\n\ \\f\n\ - \\EOT\ENQ\a\STX$\DC2\EOT\175\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX$\DC2\EOT\181\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\175\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\181\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\STX\DC2\EOT\175\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX$\STX\DC2\EOT\181\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX%\DC2\EOT\176\ACK\STX\r\n\ + \\EOT\ENQ\a\STX%\DC2\EOT\182\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\176\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\182\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\STX\DC2\EOT\176\ACK\v\f\n\ + \\ENQ\ENQ\a\STX%\STX\DC2\EOT\182\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX&\DC2\EOT\177\ACK\STX\f\n\ + \\EOT\ENQ\a\STX&\DC2\EOT\183\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\177\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\183\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\STX\DC2\EOT\177\ACK\t\v\n\ + \\ENQ\ENQ\a\STX&\STX\DC2\EOT\183\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX'\DC2\EOT\178\ACK\STX\f\n\ + \\EOT\ENQ\a\STX'\DC2\EOT\184\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\178\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\184\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\STX\DC2\EOT\178\ACK\t\v\n\ + \\ENQ\ENQ\a\STX'\STX\DC2\EOT\184\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX(\DC2\EOT\179\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX(\DC2\EOT\185\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\179\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\185\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\STX\DC2\EOT\179\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX(\STX\DC2\EOT\185\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX)\DC2\EOT\180\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX)\DC2\EOT\186\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\180\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\186\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\STX\DC2\EOT\180\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX)\STX\DC2\EOT\186\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX*\DC2\EOT\181\ACK\STX\r\n\ + \\EOT\ENQ\a\STX*\DC2\EOT\187\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\181\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\187\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\STX\DC2\EOT\181\ACK\n\ + \\ENQ\ENQ\a\STX*\STX\DC2\EOT\187\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX+\DC2\EOT\182\ACK\STX\v\n\ + \\EOT\ENQ\a\STX+\DC2\EOT\188\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\182\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\188\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\STX\DC2\EOT\182\ACK\b\n\ + \\ENQ\ENQ\a\STX+\STX\DC2\EOT\188\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX,\DC2\EOT\183\ACK\STX\t\n\ + \\EOT\ENQ\a\STX,\DC2\EOT\189\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\183\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\189\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\STX\DC2\EOT\183\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX,\STX\DC2\EOT\189\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX-\DC2\EOT\184\ACK\STX\f\n\ + \\EOT\ENQ\a\STX-\DC2\EOT\190\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\184\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\190\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\STX\DC2\EOT\184\ACK\t\v\n\ + \\ENQ\ENQ\a\STX-\STX\DC2\EOT\190\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX.\DC2\EOT\185\ACK\STX\v\n\ + \\EOT\ENQ\a\STX.\DC2\EOT\191\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\185\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\191\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\STX\DC2\EOT\185\ACK\t\n\ + \\ENQ\ENQ\a\STX.\STX\DC2\EOT\191\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX/\DC2\EOT\186\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX/\DC2\EOT\192\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\186\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\192\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\STX\DC2\EOT\186\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX/\STX\DC2\EOT\192\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX0\DC2\EOT\187\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STX0\DC2\EOT\193\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\187\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\193\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\STX\DC2\EOT\187\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STX0\STX\DC2\EOT\193\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STX1\DC2\EOT\188\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX1\DC2\EOT\194\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\188\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\194\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\STX\DC2\EOT\188\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX1\STX\DC2\EOT\194\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX2\DC2\EOT\189\ACK\STX\r\n\ + \\EOT\ENQ\a\STX2\DC2\EOT\195\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\189\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\195\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\STX\DC2\EOT\189\ACK\n\ + \\ENQ\ENQ\a\STX2\STX\DC2\EOT\195\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX3\DC2\EOT\190\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX3\DC2\EOT\196\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\190\ACK\STX\n\ + \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\196\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\STX\DC2\EOT\190\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STX3\STX\DC2\EOT\196\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX4\DC2\EOT\191\ACK\STX\r\n\ + \\EOT\ENQ\a\STX4\DC2\EOT\197\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\191\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\197\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\STX\DC2\EOT\191\ACK\v\f\n\ + \\ENQ\ENQ\a\STX4\STX\DC2\EOT\197\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX5\DC2\EOT\192\ACK\STX\r\n\ + \\EOT\ENQ\a\STX5\DC2\EOT\198\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\192\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\198\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\STX\DC2\EOT\192\ACK\n\ + \\ENQ\ENQ\a\STX5\STX\DC2\EOT\198\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX6\DC2\EOT\193\ACK\STX\f\n\ + \\EOT\ENQ\a\STX6\DC2\EOT\199\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\193\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\199\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\STX\DC2\EOT\193\ACK\t\v\n\ + \\ENQ\ENQ\a\STX6\STX\DC2\EOT\199\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX7\DC2\EOT\194\ACK\STX\f\n\ + \\EOT\ENQ\a\STX7\DC2\EOT\200\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\194\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\200\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\STX\DC2\EOT\194\ACK\t\v\n\ + \\ENQ\ENQ\a\STX7\STX\DC2\EOT\200\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX8\DC2\EOT\195\ACK\STX\v\n\ + \\EOT\ENQ\a\STX8\DC2\EOT\201\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\195\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\201\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\STX\DC2\EOT\195\ACK\b\n\ + \\ENQ\ENQ\a\STX8\STX\DC2\EOT\201\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX9\DC2\EOT\196\ACK\STX\r\n\ + \\EOT\ENQ\a\STX9\DC2\EOT\202\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\196\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\202\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\STX\DC2\EOT\196\ACK\t\f\n\ + \\ENQ\ENQ\a\STX9\STX\DC2\EOT\202\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STX:\DC2\EOT\197\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX:\DC2\EOT\203\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\197\ACK\STX\n\ + \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\203\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\STX\DC2\EOT\197\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX:\STX\DC2\EOT\203\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX;\DC2\EOT\198\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX;\DC2\EOT\204\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\198\ACK\STX\n\ + \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\204\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\STX\DC2\EOT\198\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX;\STX\DC2\EOT\204\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX<\DC2\EOT\199\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX<\DC2\EOT\205\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\199\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\205\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\STX\DC2\EOT\199\ACK\v\r\n\ + \\ENQ\ENQ\a\STX<\STX\DC2\EOT\205\ACK\v\r\n\ \(\n\ - \\EOT\ENQ\a\STX=\DC2\EOT\200\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ + \\EOT\ENQ\a\STX=\DC2\EOT\206\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\200\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\206\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\STX\DC2\EOT\200\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX=\STX\DC2\EOT\206\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX>\DC2\EOT\201\ACK\STX\v\n\ + \\EOT\ENQ\a\STX>\DC2\EOT\207\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\201\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\207\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\STX\DC2\EOT\201\ACK\b\n\ + \\ENQ\ENQ\a\STX>\STX\DC2\EOT\207\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX?\DC2\EOT\202\ACK\STX\r\n\ + \\EOT\ENQ\a\STX?\DC2\EOT\208\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\202\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\208\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\STX\DC2\EOT\202\ACK\n\ + \\ENQ\ENQ\a\STX?\STX\DC2\EOT\208\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX@\DC2\EOT\203\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STX@\DC2\EOT\209\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\203\ACK\STX\r\n\ + \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\209\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\STX\DC2\EOT\203\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STX@\STX\DC2\EOT\209\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXA\DC2\EOT\204\ACK\STX\NAK\n\ + \\EOT\ENQ\a\STXA\DC2\EOT\210\ACK\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\204\ACK\STX\SI\n\ + \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\210\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\STX\DC2\EOT\204\ACK\DC2\DC4\n\ + \\ENQ\ENQ\a\STXA\STX\DC2\EOT\210\ACK\DC2\DC4\n\ \\f\n\ - \\EOT\ENQ\a\STXB\DC2\EOT\205\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXB\DC2\EOT\211\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\205\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\211\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\STX\DC2\EOT\205\ACK\v\r\n\ + \\ENQ\ENQ\a\STXB\STX\DC2\EOT\211\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXC\DC2\EOT\206\ACK\STX\v\n\ + \\EOT\ENQ\a\STXC\DC2\EOT\212\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\206\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\212\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\STX\DC2\EOT\206\ACK\b\n\ + \\ENQ\ENQ\a\STXC\STX\DC2\EOT\212\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXD\DC2\EOT\207\ACK\STX\r\n\ + \\EOT\ENQ\a\STXD\DC2\EOT\213\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\207\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\213\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\STX\DC2\EOT\207\ACK\n\ + \\ENQ\ENQ\a\STXD\STX\DC2\EOT\213\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STXE\DC2\EOT\208\ACK\STX\f\n\ + \\EOT\ENQ\a\STXE\DC2\EOT\214\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\208\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\214\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\STX\DC2\EOT\208\ACK\t\v\n\ + \\ENQ\ENQ\a\STXE\STX\DC2\EOT\214\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXF\DC2\EOT\209\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXF\DC2\EOT\215\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\209\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\215\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\STX\DC2\EOT\209\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXF\STX\DC2\EOT\215\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXG\DC2\EOT\210\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXG\DC2\EOT\216\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\210\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\216\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\STX\DC2\EOT\210\ACK\v\r\n\ + \\ENQ\ENQ\a\STXG\STX\DC2\EOT\216\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXH\DC2\EOT\211\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STXH\DC2\EOT\217\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\211\ACK\STX\n\ + \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\217\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\STX\DC2\EOT\211\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STXH\STX\DC2\EOT\217\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STXI\DC2\EOT\212\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXI\DC2\EOT\218\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\212\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\218\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\STX\DC2\EOT\212\ACK\v\r\n\ + \\ENQ\ENQ\a\STXI\STX\DC2\EOT\218\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXJ\DC2\EOT\213\ACK\STX\t\n\ + \\EOT\ENQ\a\STXJ\DC2\EOT\219\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\213\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\219\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\213\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\219\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STXK\DC2\EOT\214\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXK\DC2\EOT\220\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\214\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\220\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\STX\DC2\EOT\214\ACK\v\r\n\ + \\ENQ\ENQ\a\STXK\STX\DC2\EOT\220\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXL\DC2\EOT\215\ACK\STX\f\n\ + \\EOT\ENQ\a\STXL\DC2\EOT\221\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\215\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\221\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\STX\DC2\EOT\215\ACK\t\v\n\ + \\ENQ\ENQ\a\STXL\STX\DC2\EOT\221\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXM\DC2\EOT\216\ACK\STX\r\n\ + \\EOT\ENQ\a\STXM\DC2\EOT\222\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\216\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\222\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\STX\DC2\EOT\216\ACK\n\ + \\ENQ\ENQ\a\STXM\STX\DC2\EOT\222\ACK\n\ \\f\n\ \2\n\ - \\EOT\ENQ\a\STXN\DC2\EOT\217\ACK\STX\SO\"$ Internal language for testing SCIP\n\ + \\EOT\ENQ\a\STXN\DC2\EOT\223\ACK\STX\SO\"$ Internal language for testing SCIP\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\217\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\223\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\STX\DC2\EOT\217\ACK\n\ + \\ENQ\ENQ\a\STXN\STX\DC2\EOT\223\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STXO\DC2\EOT\218\ACK\STX\f\n\ + \\EOT\ENQ\a\STXO\DC2\EOT\224\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\218\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\224\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\STX\DC2\EOT\218\ACK\t\v\n\ + \\ENQ\ENQ\a\STXO\STX\DC2\EOT\224\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXP\DC2\EOT\219\ACK\STX\f\n\ + \\EOT\ENQ\a\STXP\DC2\EOT\225\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\219\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\225\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\STX\DC2\EOT\219\ACK\t\v\n\ + \\ENQ\ENQ\a\STXP\STX\DC2\EOT\225\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXQ\DC2\EOT\220\ACK\STX\f\n\ + \\EOT\ENQ\a\STXQ\DC2\EOT\226\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\220\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\226\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\220\ACK\t\v\n\ + \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\226\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXR\DC2\EOT\221\ACK\STX\v\n\ + \\EOT\ENQ\a\STXR\DC2\EOT\227\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\221\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\227\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\STX\DC2\EOT\221\ACK\b\n\ + \\ENQ\ENQ\a\STXR\STX\DC2\EOT\227\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXS\DC2\EOT\222\ACK\STX\f\n\ + \\EOT\ENQ\a\STXS\DC2\EOT\228\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\222\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\228\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\STX\DC2\EOT\222\ACK\t\v\n\ + \\ENQ\ENQ\a\STXS\STX\DC2\EOT\228\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXT\DC2\EOT\223\ACK\STX\v\n\ + \\EOT\ENQ\a\STXT\DC2\EOT\229\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\223\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\229\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\STX\DC2\EOT\223\ACK\b\n\ + \\ENQ\ENQ\a\STXT\STX\DC2\EOT\229\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXU\DC2\EOT\224\ACK\STX\v\n\ + \\EOT\ENQ\a\STXU\DC2\EOT\230\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\224\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\230\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\STX\DC2\EOT\224\ACK\b\n\ + \\ENQ\ENQ\a\STXU\STX\DC2\EOT\230\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXV\DC2\EOT\225\ACK\STX\f\n\ + \\EOT\ENQ\a\STXV\DC2\EOT\231\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\225\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\231\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\STX\DC2\EOT\225\ACK\t\v\n\ + \\ENQ\ENQ\a\STXV\STX\DC2\EOT\231\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXW\DC2\EOT\226\ACK\STX\f\n\ + \\EOT\ENQ\a\STXW\DC2\EOT\232\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\226\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\232\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\STX\DC2\EOT\226\ACK\n\ + \\ENQ\ENQ\a\STXW\STX\DC2\EOT\232\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STXX\DC2\EOT\227\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXX\DC2\EOT\233\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\227\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\233\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\STX\DC2\EOT\227\ACK\v\r\n\ + \\ENQ\ENQ\a\STXX\STX\DC2\EOT\233\ACK\v\r\n\ \\DC4\n\ - \\EOT\ENQ\a\STXY\DC2\EOT\228\ACK\STX\DC3\"\ACK Bash\n\ + \\EOT\ENQ\a\STXY\DC2\EOT\234\ACK\STX\DC3\"\ACK Bash\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\228\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\234\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\STX\DC2\EOT\228\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXY\STX\DC2\EOT\234\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXZ\DC2\EOT\229\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXZ\DC2\EOT\235\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\229\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\235\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\229\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\235\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX[\DC2\EOT\230\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX[\DC2\EOT\236\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\230\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\236\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\STX\DC2\EOT\230\ACK\n\ + \\ENQ\ENQ\a\STX[\STX\DC2\EOT\236\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\\\DC2\EOT\231\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\\\DC2\EOT\237\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\231\ACK\STX\n\ + \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\237\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\231\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\237\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX]\DC2\EOT\232\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX]\DC2\EOT\238\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\232\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\238\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\STX\DC2\EOT\232\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX]\STX\DC2\EOT\238\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX^\DC2\EOT\233\ACK\STX\f\n\ + \\EOT\ENQ\a\STX^\DC2\EOT\239\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\233\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\239\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\STX\DC2\EOT\233\ACK\n\ + \\ENQ\ENQ\a\STX^\STX\DC2\EOT\239\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STX_\DC2\EOT\234\ACK\STX\f\n\ + \\EOT\ENQ\a\STX_\DC2\EOT\240\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\234\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\240\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\STX\DC2\EOT\234\ACK\b\v\n\ + \\ENQ\ENQ\a\STX_\STX\DC2\EOT\240\ACK\b\v\n\ \\f\n\ - \\EOT\ENQ\a\STX`\DC2\EOT\235\ACK\STX\f\n\ + \\EOT\ENQ\a\STX`\DC2\EOT\241\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\235\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\241\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\STX\DC2\EOT\235\ACK\t\v\n\ + \\ENQ\ENQ\a\STX`\STX\DC2\EOT\241\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXa\DC2\EOT\236\ACK\STX\v\n\ + \\EOT\ENQ\a\STXa\DC2\EOT\242\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\236\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\242\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\STX\DC2\EOT\236\ACK\b\n\ + \\ENQ\ENQ\a\STXa\STX\DC2\EOT\242\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXb\DC2\EOT\237\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXb\DC2\EOT\243\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\237\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\243\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\STX\DC2\EOT\237\ACK\v\SO\n\ + \\ENQ\ENQ\a\STXb\STX\DC2\EOT\243\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXc\DC2\EOT\238\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXc\DC2\EOT\244\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\238\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\244\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\STX\DC2\EOT\238\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXc\STX\DC2\EOT\244\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXd\DC2\EOT\239\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STXd\DC2\EOT\245\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\239\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\245\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\STX\DC2\EOT\239\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STXd\STX\DC2\EOT\245\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STXe\DC2\EOT\240\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STXe\DC2\EOT\246\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\240\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\246\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\STX\DC2\EOT\240\ACK\f\SI\n\ + \\ENQ\ENQ\a\STXe\STX\DC2\EOT\246\ACK\f\SI\n\ \\f\n\ - \\EOT\ENQ\a\STXf\DC2\EOT\241\ACK\STX\r\n\ + \\EOT\ENQ\a\STXf\DC2\EOT\247\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\241\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\247\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\STX\DC2\EOT\241\ACK\t\f\n\ + \\ENQ\ENQ\a\STXf\STX\DC2\EOT\247\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STXg\DC2\EOT\242\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STXg\DC2\EOT\248\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\242\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\248\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\STX\DC2\EOT\242\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXg\STX\DC2\EOT\248\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXh\DC2\EOT\243\ACK\STX\v\n\ + \\EOT\ENQ\a\STXh\DC2\EOT\249\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\243\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\249\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\STX\DC2\EOT\243\ACK\b\n\ + \\ENQ\ENQ\a\STXh\STX\DC2\EOT\249\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXi\DC2\EOT\244\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXi\DC2\EOT\250\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\244\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\250\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\STX\DC2\EOT\244\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXi\STX\DC2\EOT\250\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXj\DC2\EOT\245\ACK\STX\v\n\ + \\EOT\ENQ\a\STXj\DC2\EOT\251\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\245\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\251\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\STX\DC2\EOT\245\ACK\b\n\ + \\ENQ\ENQ\a\STXj\STX\DC2\EOT\251\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXk\DC2\EOT\246\ACK\STX\v\n\ + \\EOT\ENQ\a\STXk\DC2\EOT\252\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\246\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\252\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\STX\DC2\EOT\246\ACK\b\n\ + \\ENQ\ENQ\a\STXk\STX\DC2\EOT\252\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXl\DC2\EOT\247\ACK\STX\f\n\ + \\EOT\ENQ\a\STXl\DC2\EOT\253\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\247\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\253\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\STX\DC2\EOT\247\ACK\t\v\n\ + \\ENQ\ENQ\a\STXl\STX\DC2\EOT\253\ACK\t\v\n\ \\147\ETX\n\ - \\EOT\ENQ\a\STXm\DC2\EOT\248\ACK\STX\v\"\132\ETX NextLanguage = 111;\n\ + \\EOT\ENQ\a\STXm\DC2\EOT\254\ACK\STX\v\"\132\ETX NextLanguage = 111;\n\ \ Steps add a new language:\n\ \ 1. Copy-paste the \"NextLanguage = N\" line above\n\ \ 2. Increment \"NextLanguage = N\" to \"NextLanguage = N+1\"\n\ @@ -9486,7 +9503,7 @@ packedFileDescriptor \ 5. (optional) Add a brief comment behind the language if the name is not self-explanatory\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\248\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\254\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\STX\DC2\EOT\248\ACK\b\n\ + \\ENQ\ENQ\a\STXm\STX\DC2\EOT\254\ACK\b\n\ \b\ACKproto3" \ No newline at end of file diff --git a/bindings/java/.gitignore b/bindings/java/.gitignore new file mode 100644 index 00000000..2f7896d1 --- /dev/null +++ b/bindings/java/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/bindings/java/README.md b/bindings/java/README.md new file mode 100644 index 00000000..85c14851 --- /dev/null +++ b/bindings/java/README.md @@ -0,0 +1,78 @@ +# Java bindings for SCIP + +Generated Java bindings for the [Semantic Code Intelligence Protocol (SCIP)](https://github.com/scip-code/scip). + +## Coordinates + +```xml + + org.scip-code + scip-java + 0.7.1 + +``` + +The canonical `.proto` schema is also published as a classifier artifact: + +```sh +mvn dependency:get -Dartifact=org.scip-code:scip-java:0.7.1:proto:proto +``` + +## Quickstart + +```java +import org.scip_code.scip.Index; +import org.scip_code.scip.Document; +import org.scip_code.scip.Metadata; + +Index index = Index.newBuilder() + .setMetadata(Metadata.newBuilder().setProjectRoot("file:///workspace").build()) + .addDocuments(Document.newBuilder().setRelativePath("src/main.java").build()) + .build(); + +byte[] bytes = index.toByteArray(); +``` + +JSON serialization (via `protobuf-java-util`, declared as a transitive dependency): + +```java +import com.google.protobuf.util.JsonFormat; + +String json = JsonFormat.printer().print(index); +``` + +## Compatibility notes + +### Protobuf runtime + +The generated code is built against `protobuf-java` 4.32.1. At class load +time, generated code calls `validateProtobufGencodeVersion()` which enforces +**runtime version >= gencode version** within the same major version. + +| Your `protobuf-java` | Compatible? | +| -------------------- | ---------------------------------------------------------------------------------- | +| 4.32.1 (matched) | ✅ | +| 4.33.x (newer) | ✅ — Maven/Gradle dependency resolution will typically converge here automatically | +| 4.31.x (older) | ❌ — runtime crash with `ProtobufRuntimeVersionException` | +| 5.x.x or 3.x.x | ❌ — major version mismatch | + +If you depend on another library that pins an older `protobuf-java`, you must +upgrade it (or pin `protobuf-java` to >=4.32.1 in your own build). + +### JVM target + +The bindings target Java 11. They run on any JDK ≥ 11. + +## Building from source + +This binding is generated by `buf generate` from the project's [scip.proto](../../scip.proto). To regenerate after modifying the proto, run from the repository root: + +```sh +nix run .#proto-generate --impure +``` + +To build the artifact locally: + +```sh +mvn -B package +``` diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml new file mode 100644 index 00000000..0f4677a4 --- /dev/null +++ b/bindings/java/pom.xml @@ -0,0 +1,95 @@ + + + 4.0.0 + + org.scip-code + scip-java + 0.7.1 + jar + + scip-java + + Generated Java bindings for the Semantic Code Intelligence Protocol (SCIP). + + https://github.com/scip-code/scip + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + + + + + https://github.com/scip-code/scip + scm:git:https://github.com/scip-code/scip.git + + + + UTF-8 + 11 + 11 + + 4.32.1 + + + + + com.google.protobuf + protobuf-java + ${protobuf.version} + + + + com.google.protobuf + protobuf-java-util + ${protobuf.version} + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.6.1 + + + attach-proto + package + + attach-artifact + + + + + ${project.basedir}/src/main/proto/scip.proto + proto + proto + + + + + + + + + diff --git a/bindings/java/src/main/java/org/scip_code/scip/Descriptor.java b/bindings/java/src/main/java/org/scip_code/scip/Descriptor.java new file mode 100644 index 00000000..1d90b149 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Descriptor.java @@ -0,0 +1,996 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf type {@code scip.Descriptor} + */ +@com.google.protobuf.Generated +public final class Descriptor extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Descriptor) + DescriptorOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Descriptor.class.getName()); + } + // Use Descriptor.newBuilder() to construct. + private Descriptor(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Descriptor() { + name_ = ""; + disambiguator_ = ""; + suffix_ = 0; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Descriptor_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Descriptor_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Descriptor.class, org.scip_code.scip.Descriptor.Builder.class); + } + + /** + * Protobuf enum {@code scip.Descriptor.Suffix} + */ + public enum Suffix + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedSuffix = 0; + */ + UnspecifiedSuffix(0, 0), + /** + *
+     * Unit of code abstraction and/or namespacing.
+     *
+     * NOTE: This corresponds to a package in Go and JVM languages.
+     * 
+ * + * Namespace = 1; + */ + Namespace(1, 1), + /** + * Type = 2; + */ + Type(3, 2), + /** + * Term = 3; + */ + Term(4, 3), + /** + * Method = 4; + */ + Method(5, 4), + /** + * TypeParameter = 5; + */ + TypeParameter(6, 5), + /** + * Parameter = 6; + */ + Parameter(7, 6), + /** + *
+     * Can be used for any purpose.
+     * 
+ * + * Meta = 7; + */ + Meta(8, 7), + /** + * Local = 8; + */ + Local(9, 8), + /** + * Macro = 9; + */ + Macro(10, 9), + UNRECOGNIZED(-1, -1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Suffix.class.getName()); + } + /** + *
+     * Use Namespace instead.
+     * 
+ * + * Package = 1 [deprecated = true]; + */ + public static final Suffix Package = Namespace; + /** + * UnspecifiedSuffix = 0; + */ + public static final int UnspecifiedSuffix_VALUE = 0; + /** + *
+     * Unit of code abstraction and/or namespacing.
+     *
+     * NOTE: This corresponds to a package in Go and JVM languages.
+     * 
+ * + * Namespace = 1; + */ + public static final int Namespace_VALUE = 1; + /** + *
+     * Use Namespace instead.
+     * 
+ * + * Package = 1 [deprecated = true]; + */ + @java.lang.Deprecated public static final int Package_VALUE = 1; + /** + * Type = 2; + */ + public static final int Type_VALUE = 2; + /** + * Term = 3; + */ + public static final int Term_VALUE = 3; + /** + * Method = 4; + */ + public static final int Method_VALUE = 4; + /** + * TypeParameter = 5; + */ + public static final int TypeParameter_VALUE = 5; + /** + * Parameter = 6; + */ + public static final int Parameter_VALUE = 6; + /** + *
+     * Can be used for any purpose.
+     * 
+ * + * Meta = 7; + */ + public static final int Meta_VALUE = 7; + /** + * Local = 8; + */ + public static final int Local_VALUE = 8; + /** + * Macro = 9; + */ + public static final int Macro_VALUE = 9; + + + public final int getNumber() { + if (index == -1) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Suffix valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Suffix forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSuffix; + case 1: return Namespace; + case 2: return Type; + case 3: return Term; + case 4: return Method; + case 5: return TypeParameter; + case 6: return Parameter; + case 7: return Meta; + case 8: return Local; + case 9: return Macro; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Suffix> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Suffix findValueByNumber(int number) { + return Suffix.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (index == -1) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.Descriptor.getDescriptor().getEnumTypes().get(0); + } + + private static final Suffix[] VALUES = getStaticValuesArray(); + private static Suffix[] getStaticValuesArray() { + return new Suffix[] { + UnspecifiedSuffix, Namespace, Package, Type, Term, Method, TypeParameter, Parameter, Meta, Local, Macro, + }; + } + public static Suffix valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private Suffix(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.Descriptor.Suffix) + } + + public static final int NAME_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + /** + * string name = 1 [json_name = "name"]; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + * string name = 1 [json_name = "name"]; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DISAMBIGUATOR_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object disambiguator_ = ""; + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @return The disambiguator. + */ + @java.lang.Override + public java.lang.String getDisambiguator() { + java.lang.Object ref = disambiguator_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + disambiguator_ = s; + return s; + } + } + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @return The bytes for disambiguator. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDisambiguatorBytes() { + java.lang.Object ref = disambiguator_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + disambiguator_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SUFFIX_FIELD_NUMBER = 3; + private int suffix_ = 0; + /** + *
+   * NOTE: If you add new fields here, make sure to update the prepareSlot()
+   * function responsible for parsing symbols.
+   * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @return The enum numeric value on the wire for suffix. + */ + @java.lang.Override public int getSuffixValue() { + return suffix_; + } + /** + *
+   * NOTE: If you add new fields here, make sure to update the prepareSlot()
+   * function responsible for parsing symbols.
+   * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @return The suffix. + */ + @java.lang.Override public org.scip_code.scip.Descriptor.Suffix getSuffix() { + org.scip_code.scip.Descriptor.Suffix result = org.scip_code.scip.Descriptor.Suffix.forNumber(suffix_); + return result == null ? org.scip_code.scip.Descriptor.Suffix.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(disambiguator_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, disambiguator_); + } + if (suffix_ != org.scip_code.scip.Descriptor.Suffix.UnspecifiedSuffix.getNumber()) { + output.writeEnum(3, suffix_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(disambiguator_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, disambiguator_); + } + if (suffix_ != org.scip_code.scip.Descriptor.Suffix.UnspecifiedSuffix.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, suffix_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Descriptor)) { + return super.equals(obj); + } + org.scip_code.scip.Descriptor other = (org.scip_code.scip.Descriptor) obj; + + if (!getName() + .equals(other.getName())) return false; + if (!getDisambiguator() + .equals(other.getDisambiguator())) return false; + if (suffix_ != other.suffix_) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + DISAMBIGUATOR_FIELD_NUMBER; + hash = (53 * hash) + getDisambiguator().hashCode(); + hash = (37 * hash) + SUFFIX_FIELD_NUMBER; + hash = (53 * hash) + suffix_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Descriptor parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Descriptor parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Descriptor parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Descriptor parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Descriptor parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Descriptor parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Descriptor parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Descriptor parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Descriptor parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Descriptor parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Descriptor parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Descriptor parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Descriptor prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.Descriptor} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Descriptor) + org.scip_code.scip.DescriptorOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Descriptor_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Descriptor_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Descriptor.class, org.scip_code.scip.Descriptor.Builder.class); + } + + // Construct using org.scip_code.scip.Descriptor.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + name_ = ""; + disambiguator_ = ""; + suffix_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Descriptor_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Descriptor getDefaultInstanceForType() { + return org.scip_code.scip.Descriptor.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Descriptor build() { + org.scip_code.scip.Descriptor result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Descriptor buildPartial() { + org.scip_code.scip.Descriptor result = new org.scip_code.scip.Descriptor(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(org.scip_code.scip.Descriptor result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.disambiguator_ = disambiguator_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.suffix_ = suffix_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Descriptor) { + return mergeFrom((org.scip_code.scip.Descriptor)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Descriptor other) { + if (other == org.scip_code.scip.Descriptor.getDefaultInstance()) return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getDisambiguator().isEmpty()) { + disambiguator_ = other.disambiguator_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (other.suffix_ != 0) { + setSuffixValue(other.getSuffixValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + disambiguator_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 24: { + suffix_ = input.readEnum(); + bitField0_ |= 0x00000004; + break; + } // case 24 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object name_ = ""; + /** + * string name = 1 [json_name = "name"]; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string name = 1 [json_name = "name"]; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string name = 1 [json_name = "name"]; + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string name = 1 [json_name = "name"]; + * @return This builder for chaining. + */ + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string name = 1 [json_name = "name"]; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object disambiguator_ = ""; + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @return The disambiguator. + */ + public java.lang.String getDisambiguator() { + java.lang.Object ref = disambiguator_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + disambiguator_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @return The bytes for disambiguator. + */ + public com.google.protobuf.ByteString + getDisambiguatorBytes() { + java.lang.Object ref = disambiguator_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + disambiguator_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @param value The disambiguator to set. + * @return This builder for chaining. + */ + public Builder setDisambiguator( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + disambiguator_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @return This builder for chaining. + */ + public Builder clearDisambiguator() { + disambiguator_ = getDefaultInstance().getDisambiguator(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @param value The bytes for disambiguator to set. + * @return This builder for chaining. + */ + public Builder setDisambiguatorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + disambiguator_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private int suffix_ = 0; + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @return The enum numeric value on the wire for suffix. + */ + @java.lang.Override public int getSuffixValue() { + return suffix_; + } + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @param value The enum numeric value on the wire for suffix to set. + * @return This builder for chaining. + */ + public Builder setSuffixValue(int value) { + suffix_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @return The suffix. + */ + @java.lang.Override + public org.scip_code.scip.Descriptor.Suffix getSuffix() { + org.scip_code.scip.Descriptor.Suffix result = org.scip_code.scip.Descriptor.Suffix.forNumber(suffix_); + return result == null ? org.scip_code.scip.Descriptor.Suffix.UNRECOGNIZED : result; + } + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @param value The suffix to set. + * @return This builder for chaining. + */ + public Builder setSuffix(org.scip_code.scip.Descriptor.Suffix value) { + if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000004; + suffix_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+     * NOTE: If you add new fields here, make sure to update the prepareSlot()
+     * function responsible for parsing symbols.
+     * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @return This builder for chaining. + */ + public Builder clearSuffix() { + bitField0_ = (bitField0_ & ~0x00000004); + suffix_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.Descriptor) + } + + // @@protoc_insertion_point(class_scope:scip.Descriptor) + private static final org.scip_code.scip.Descriptor DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Descriptor(); + } + + public static org.scip_code.scip.Descriptor getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Descriptor parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Descriptor getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/DescriptorOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/DescriptorOrBuilder.java new file mode 100644 index 00000000..c4163c6e --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/DescriptorOrBuilder.java @@ -0,0 +1,57 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface DescriptorOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Descriptor) + com.google.protobuf.MessageOrBuilder { + + /** + * string name = 1 [json_name = "name"]; + * @return The name. + */ + java.lang.String getName(); + /** + * string name = 1 [json_name = "name"]; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @return The disambiguator. + */ + java.lang.String getDisambiguator(); + /** + * string disambiguator = 2 [json_name = "disambiguator"]; + * @return The bytes for disambiguator. + */ + com.google.protobuf.ByteString + getDisambiguatorBytes(); + + /** + *
+   * NOTE: If you add new fields here, make sure to update the prepareSlot()
+   * function responsible for parsing symbols.
+   * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @return The enum numeric value on the wire for suffix. + */ + int getSuffixValue(); + /** + *
+   * NOTE: If you add new fields here, make sure to update the prepareSlot()
+   * function responsible for parsing symbols.
+   * 
+ * + * .scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"]; + * @return The suffix. + */ + org.scip_code.scip.Descriptor.Suffix getSuffix(); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/Diagnostic.java b/bindings/java/src/main/java/org/scip_code/scip/Diagnostic.java new file mode 100644 index 00000000..da370203 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Diagnostic.java @@ -0,0 +1,1248 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Represents a diagnostic, such as a compiler error or warning, which should be
+ * reported for a document.
+ * 
+ * + * Protobuf type {@code scip.Diagnostic} + */ +@com.google.protobuf.Generated +public final class Diagnostic extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Diagnostic) + DiagnosticOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Diagnostic.class.getName()); + } + // Use Diagnostic.newBuilder() to construct. + private Diagnostic(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Diagnostic() { + severity_ = 0; + code_ = ""; + message_ = ""; + source_ = ""; + tags_ = emptyIntList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Diagnostic_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Diagnostic_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Diagnostic.class, org.scip_code.scip.Diagnostic.Builder.class); + } + + public static final int SEVERITY_FIELD_NUMBER = 1; + private int severity_ = 0; + /** + *
+   * Should this diagnostic be reported as an error, warning, info, or hint?
+   * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @return The enum numeric value on the wire for severity. + */ + @java.lang.Override public int getSeverityValue() { + return severity_; + } + /** + *
+   * Should this diagnostic be reported as an error, warning, info, or hint?
+   * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @return The severity. + */ + @java.lang.Override public org.scip_code.scip.Severity getSeverity() { + org.scip_code.scip.Severity result = org.scip_code.scip.Severity.forNumber(severity_); + return result == null ? org.scip_code.scip.Severity.UNRECOGNIZED : result; + } + + public static final int CODE_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object code_ = ""; + /** + *
+   * (optional) Code of this diagnostic, which might appear in the user interface.
+   * 
+ * + * string code = 2 [json_name = "code"]; + * @return The code. + */ + @java.lang.Override + public java.lang.String getCode() { + java.lang.Object ref = code_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + code_ = s; + return s; + } + } + /** + *
+   * (optional) Code of this diagnostic, which might appear in the user interface.
+   * 
+ * + * string code = 2 [json_name = "code"]; + * @return The bytes for code. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getCodeBytes() { + java.lang.Object ref = code_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + code_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int MESSAGE_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private volatile java.lang.Object message_ = ""; + /** + *
+   * Message of this diagnostic.
+   * 
+ * + * string message = 3 [json_name = "message"]; + * @return The message. + */ + @java.lang.Override + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } + } + /** + *
+   * Message of this diagnostic.
+   * 
+ * + * string message = 3 [json_name = "message"]; + * @return The bytes for message. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCE_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile java.lang.Object source_ = ""; + /** + *
+   * (optional) Human-readable string describing the source of this diagnostic, e.g.
+   * 'typescript' or 'super lint'.
+   * 
+ * + * string source = 4 [json_name = "source"]; + * @return The source. + */ + @java.lang.Override + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } + } + /** + *
+   * (optional) Human-readable string describing the source of this diagnostic, e.g.
+   * 'typescript' or 'super lint'.
+   * 
+ * + * string source = 4 [json_name = "source"]; + * @return The bytes for source. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TAGS_FIELD_NUMBER = 5; + @SuppressWarnings("serial") + private com.google.protobuf.Internal.IntList tags_ = + emptyIntList(); + private static final com.google.protobuf.Internal.IntListAdapter.IntConverter< + org.scip_code.scip.DiagnosticTag> tags_converter_ = + new com.google.protobuf.Internal.IntListAdapter.IntConverter< + org.scip_code.scip.DiagnosticTag>() { + public org.scip_code.scip.DiagnosticTag convert(int from) { + org.scip_code.scip.DiagnosticTag result = org.scip_code.scip.DiagnosticTag.forNumber(from); + return result == null ? org.scip_code.scip.DiagnosticTag.UNRECOGNIZED : result; + } + }; + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return A list containing the tags. + */ + @java.lang.Override + public java.util.List getTagsList() { + return new com.google.protobuf.Internal.IntListAdapter< + org.scip_code.scip.DiagnosticTag>(tags_, tags_converter_); + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return The count of tags. + */ + @java.lang.Override + public int getTagsCount() { + return tags_.size(); + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index of the element to return. + * @return The tags at the given index. + */ + @java.lang.Override + public org.scip_code.scip.DiagnosticTag getTags(int index) { + return tags_converter_.convert(tags_.getInt(index)); + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return A list containing the enum numeric values on the wire for tags. + */ + @java.lang.Override + public java.util.List + getTagsValueList() { + return tags_; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of tags at the given index. + */ + @java.lang.Override + public int getTagsValue(int index) { + return tags_.getInt(index); + } + private int tagsMemoizedSerializedSize; + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (severity_ != org.scip_code.scip.Severity.UnspecifiedSeverity.getNumber()) { + output.writeEnum(1, severity_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(code_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, code_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(message_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, message_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(source_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, source_); + } + if (getTagsList().size() > 0) { + output.writeUInt32NoTag(42); + output.writeUInt32NoTag(tagsMemoizedSerializedSize); + } + for (int i = 0; i < tags_.size(); i++) { + output.writeEnumNoTag(tags_.getInt(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (severity_ != org.scip_code.scip.Severity.UnspecifiedSeverity.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, severity_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(code_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, code_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(message_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(3, message_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(source_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(4, source_); + } + { + int dataSize = 0; + for (int i = 0; i < tags_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeEnumSizeNoTag(tags_.getInt(i)); + } + size += dataSize; + if (!getTagsList().isEmpty()) { size += 1; + size += com.google.protobuf.CodedOutputStream + .computeUInt32SizeNoTag(dataSize); + }tagsMemoizedSerializedSize = dataSize; + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Diagnostic)) { + return super.equals(obj); + } + org.scip_code.scip.Diagnostic other = (org.scip_code.scip.Diagnostic) obj; + + if (severity_ != other.severity_) return false; + if (!getCode() + .equals(other.getCode())) return false; + if (!getMessage() + .equals(other.getMessage())) return false; + if (!getSource() + .equals(other.getSource())) return false; + if (!tags_.equals(other.tags_)) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SEVERITY_FIELD_NUMBER; + hash = (53 * hash) + severity_; + hash = (37 * hash) + CODE_FIELD_NUMBER; + hash = (53 * hash) + getCode().hashCode(); + hash = (37 * hash) + MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getMessage().hashCode(); + hash = (37 * hash) + SOURCE_FIELD_NUMBER; + hash = (53 * hash) + getSource().hashCode(); + if (getTagsCount() > 0) { + hash = (37 * hash) + TAGS_FIELD_NUMBER; + hash = (53 * hash) + tags_.hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Diagnostic parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Diagnostic parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Diagnostic parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Diagnostic parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Diagnostic parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Diagnostic parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Diagnostic parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Diagnostic parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Diagnostic parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Diagnostic parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Diagnostic parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Diagnostic parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Diagnostic prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Represents a diagnostic, such as a compiler error or warning, which should be
+   * reported for a document.
+   * 
+ * + * Protobuf type {@code scip.Diagnostic} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Diagnostic) + org.scip_code.scip.DiagnosticOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Diagnostic_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Diagnostic_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Diagnostic.class, org.scip_code.scip.Diagnostic.Builder.class); + } + + // Construct using org.scip_code.scip.Diagnostic.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + severity_ = 0; + code_ = ""; + message_ = ""; + source_ = ""; + tags_ = emptyIntList(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Diagnostic_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Diagnostic getDefaultInstanceForType() { + return org.scip_code.scip.Diagnostic.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Diagnostic build() { + org.scip_code.scip.Diagnostic result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Diagnostic buildPartial() { + org.scip_code.scip.Diagnostic result = new org.scip_code.scip.Diagnostic(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(org.scip_code.scip.Diagnostic result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.severity_ = severity_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.code_ = code_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.message_ = message_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.source_ = source_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + tags_.makeImmutable(); + result.tags_ = tags_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Diagnostic) { + return mergeFrom((org.scip_code.scip.Diagnostic)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Diagnostic other) { + if (other == org.scip_code.scip.Diagnostic.getDefaultInstance()) return this; + if (other.severity_ != 0) { + setSeverityValue(other.getSeverityValue()); + } + if (!other.getCode().isEmpty()) { + code_ = other.code_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getMessage().isEmpty()) { + message_ = other.message_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (!other.getSource().isEmpty()) { + source_ = other.source_; + bitField0_ |= 0x00000008; + onChanged(); + } + if (!other.tags_.isEmpty()) { + if (tags_.isEmpty()) { + tags_ = other.tags_; + tags_.makeImmutable(); + bitField0_ |= 0x00000010; + } else { + ensureTagsIsMutable(); + tags_.addAll(other.tags_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + severity_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + code_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + message_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 34: { + source_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } // case 34 + case 40: { + int tmpRaw = input.readEnum(); + ensureTagsIsMutable(); + tags_.addInt(tmpRaw); + break; + } // case 40 + case 42: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + ensureTagsIsMutable(); + while (input.getBytesUntilLimit() > 0) { + tags_.addInt(input.readEnum()); + } + input.popLimit(limit); + break; + } // case 42 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int severity_ = 0; + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @return The enum numeric value on the wire for severity. + */ + @java.lang.Override public int getSeverityValue() { + return severity_; + } + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @param value The enum numeric value on the wire for severity to set. + * @return This builder for chaining. + */ + public Builder setSeverityValue(int value) { + severity_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @return The severity. + */ + @java.lang.Override + public org.scip_code.scip.Severity getSeverity() { + org.scip_code.scip.Severity result = org.scip_code.scip.Severity.forNumber(severity_); + return result == null ? org.scip_code.scip.Severity.UNRECOGNIZED : result; + } + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @param value The severity to set. + * @return This builder for chaining. + */ + public Builder setSeverity(org.scip_code.scip.Severity value) { + if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000001; + severity_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+     * Should this diagnostic be reported as an error, warning, info, or hint?
+     * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @return This builder for chaining. + */ + public Builder clearSeverity() { + bitField0_ = (bitField0_ & ~0x00000001); + severity_ = 0; + onChanged(); + return this; + } + + private java.lang.Object code_ = ""; + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2 [json_name = "code"]; + * @return The code. + */ + public java.lang.String getCode() { + java.lang.Object ref = code_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + code_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2 [json_name = "code"]; + * @return The bytes for code. + */ + public com.google.protobuf.ByteString + getCodeBytes() { + java.lang.Object ref = code_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + code_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2 [json_name = "code"]; + * @param value The code to set. + * @return This builder for chaining. + */ + public Builder setCode( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + code_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2 [json_name = "code"]; + * @return This builder for chaining. + */ + public Builder clearCode() { + code_ = getDefaultInstance().getCode(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+     * (optional) Code of this diagnostic, which might appear in the user interface.
+     * 
+ * + * string code = 2 [json_name = "code"]; + * @param value The bytes for code to set. + * @return This builder for chaining. + */ + public Builder setCodeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + code_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object message_ = ""; + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3 [json_name = "message"]; + * @return The message. + */ + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3 [json_name = "message"]; + * @return The bytes for message. + */ + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3 [json_name = "message"]; + * @param value The message to set. + * @return This builder for chaining. + */ + public Builder setMessage( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + message_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3 [json_name = "message"]; + * @return This builder for chaining. + */ + public Builder clearMessage() { + message_ = getDefaultInstance().getMessage(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + *
+     * Message of this diagnostic.
+     * 
+ * + * string message = 3 [json_name = "message"]; + * @param value The bytes for message to set. + * @return This builder for chaining. + */ + public Builder setMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + message_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + private java.lang.Object source_ = ""; + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4 [json_name = "source"]; + * @return The source. + */ + public java.lang.String getSource() { + java.lang.Object ref = source_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + source_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4 [json_name = "source"]; + * @return The bytes for source. + */ + public com.google.protobuf.ByteString + getSourceBytes() { + java.lang.Object ref = source_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + source_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4 [json_name = "source"]; + * @param value The source to set. + * @return This builder for chaining. + */ + public Builder setSource( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + source_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4 [json_name = "source"]; + * @return This builder for chaining. + */ + public Builder clearSource() { + source_ = getDefaultInstance().getSource(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + /** + *
+     * (optional) Human-readable string describing the source of this diagnostic, e.g.
+     * 'typescript' or 'super lint'.
+     * 
+ * + * string source = 4 [json_name = "source"]; + * @param value The bytes for source to set. + * @return This builder for chaining. + */ + public Builder setSourceBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + source_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + private com.google.protobuf.Internal.IntList tags_ = emptyIntList(); + private void ensureTagsIsMutable() { + if (!tags_.isModifiable()) { + tags_ = makeMutableCopy(tags_); + } + bitField0_ |= 0x00000010; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return A list containing the tags. + */ + public java.util.List getTagsList() { + return new com.google.protobuf.Internal.IntListAdapter< + org.scip_code.scip.DiagnosticTag>(tags_, tags_converter_); + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return The count of tags. + */ + public int getTagsCount() { + return tags_.size(); + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index of the element to return. + * @return The tags at the given index. + */ + public org.scip_code.scip.DiagnosticTag getTags(int index) { + return tags_converter_.convert(tags_.getInt(index)); + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index to set the value at. + * @param value The tags to set. + * @return This builder for chaining. + */ + public Builder setTags( + int index, org.scip_code.scip.DiagnosticTag value) { + if (value == null) { throw new NullPointerException(); } + ensureTagsIsMutable(); + tags_.setInt(index, value.getNumber()); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param value The tags to add. + * @return This builder for chaining. + */ + public Builder addTags(org.scip_code.scip.DiagnosticTag value) { + if (value == null) { throw new NullPointerException(); } + ensureTagsIsMutable(); + tags_.addInt(value.getNumber()); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param values The tags to add. + * @return This builder for chaining. + */ + public Builder addAllTags( + java.lang.Iterable values) { + ensureTagsIsMutable(); + for (org.scip_code.scip.DiagnosticTag value : values) { + tags_.addInt(value.getNumber()); + } + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return This builder for chaining. + */ + public Builder clearTags() { + tags_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return A list containing the enum numeric values on the wire for tags. + */ + public java.util.List + getTagsValueList() { + tags_.makeImmutable(); + return tags_; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of tags at the given index. + */ + public int getTagsValue(int index) { + return tags_.getInt(index); + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index to set the value at. + * @param value The enum numeric value on the wire for tags to set. + * @return This builder for chaining. + */ + public Builder setTagsValue( + int index, int value) { + ensureTagsIsMutable(); + tags_.setInt(index, value); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param value The enum numeric value on the wire for tags to add. + * @return This builder for chaining. + */ + public Builder addTagsValue(int value) { + ensureTagsIsMutable(); + tags_.addInt(value); + onChanged(); + return this; + } + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param values The enum numeric values on the wire for tags to add. + * @return This builder for chaining. + */ + public Builder addAllTagsValue( + java.lang.Iterable values) { + ensureTagsIsMutable(); + for (int value : values) { + tags_.addInt(value); + } + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.Diagnostic) + } + + // @@protoc_insertion_point(class_scope:scip.Diagnostic) + private static final org.scip_code.scip.Diagnostic DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Diagnostic(); + } + + public static org.scip_code.scip.Diagnostic getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Diagnostic parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Diagnostic getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/DiagnosticOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/DiagnosticOrBuilder.java new file mode 100644 index 00000000..1980b5dc --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/DiagnosticOrBuilder.java @@ -0,0 +1,122 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface DiagnosticOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Diagnostic) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * Should this diagnostic be reported as an error, warning, info, or hint?
+   * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @return The enum numeric value on the wire for severity. + */ + int getSeverityValue(); + /** + *
+   * Should this diagnostic be reported as an error, warning, info, or hint?
+   * 
+ * + * .scip.Severity severity = 1 [json_name = "severity"]; + * @return The severity. + */ + org.scip_code.scip.Severity getSeverity(); + + /** + *
+   * (optional) Code of this diagnostic, which might appear in the user interface.
+   * 
+ * + * string code = 2 [json_name = "code"]; + * @return The code. + */ + java.lang.String getCode(); + /** + *
+   * (optional) Code of this diagnostic, which might appear in the user interface.
+   * 
+ * + * string code = 2 [json_name = "code"]; + * @return The bytes for code. + */ + com.google.protobuf.ByteString + getCodeBytes(); + + /** + *
+   * Message of this diagnostic.
+   * 
+ * + * string message = 3 [json_name = "message"]; + * @return The message. + */ + java.lang.String getMessage(); + /** + *
+   * Message of this diagnostic.
+   * 
+ * + * string message = 3 [json_name = "message"]; + * @return The bytes for message. + */ + com.google.protobuf.ByteString + getMessageBytes(); + + /** + *
+   * (optional) Human-readable string describing the source of this diagnostic, e.g.
+   * 'typescript' or 'super lint'.
+   * 
+ * + * string source = 4 [json_name = "source"]; + * @return The source. + */ + java.lang.String getSource(); + /** + *
+   * (optional) Human-readable string describing the source of this diagnostic, e.g.
+   * 'typescript' or 'super lint'.
+   * 
+ * + * string source = 4 [json_name = "source"]; + * @return The bytes for source. + */ + com.google.protobuf.ByteString + getSourceBytes(); + + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return A list containing the tags. + */ + java.util.List getTagsList(); + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return The count of tags. + */ + int getTagsCount(); + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index of the element to return. + * @return The tags at the given index. + */ + org.scip_code.scip.DiagnosticTag getTags(int index); + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @return A list containing the enum numeric values on the wire for tags. + */ + java.util.List + getTagsValueList(); + /** + * repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"]; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of tags at the given index. + */ + int getTagsValue(int index); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/DiagnosticTag.java b/bindings/java/src/main/java/org/scip_code/scip/DiagnosticTag.java new file mode 100644 index 00000000..7b1d15ac --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/DiagnosticTag.java @@ -0,0 +1,134 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf enum {@code scip.DiagnosticTag} + */ +@com.google.protobuf.Generated +public enum DiagnosticTag + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedDiagnosticTag = 0; + */ + UnspecifiedDiagnosticTag(0), + /** + * Unnecessary = 1; + */ + Unnecessary(1), + /** + * Deprecated = 2; + */ + Deprecated(2), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + DiagnosticTag.class.getName()); + } + /** + * UnspecifiedDiagnosticTag = 0; + */ + public static final int UnspecifiedDiagnosticTag_VALUE = 0; + /** + * Unnecessary = 1; + */ + public static final int Unnecessary_VALUE = 1; + /** + * Deprecated = 2; + */ + public static final int Deprecated_VALUE = 2; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static DiagnosticTag valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static DiagnosticTag forNumber(int value) { + switch (value) { + case 0: return UnspecifiedDiagnosticTag; + case 1: return Unnecessary; + case 2: return Deprecated; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + DiagnosticTag> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public DiagnosticTag findValueByNumber(int number) { + return DiagnosticTag.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(6); + } + + private static final DiagnosticTag[] VALUES = values(); + + public static DiagnosticTag valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private DiagnosticTag(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.DiagnosticTag) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/Document.java b/bindings/java/src/main/java/org/scip_code/scip/Document.java new file mode 100644 index 00000000..750f0380 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Document.java @@ -0,0 +1,2134 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Document defines the metadata about a source file on disk.
+ * 
+ * + * Protobuf type {@code scip.Document} + */ +@com.google.protobuf.Generated +public final class Document extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Document) + DocumentOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Document.class.getName()); + } + // Use Document.newBuilder() to construct. + private Document(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Document() { + language_ = ""; + relativePath_ = ""; + occurrences_ = java.util.Collections.emptyList(); + symbols_ = java.util.Collections.emptyList(); + text_ = ""; + positionEncoding_ = 0; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Document_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Document_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Document.class, org.scip_code.scip.Document.Builder.class); + } + + public static final int LANGUAGE_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile java.lang.Object language_ = ""; + /** + *
+   * The string ID for the programming language this file is written in.
+   * The `Language` enum contains the names of most common programming languages.
+   * This field is typed as a string to permit any programming language, including
+   * ones that are not specified by the `Language` enum.
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The language. + */ + @java.lang.Override + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } + } + /** + *
+   * The string ID for the programming language this file is written in.
+   * The `Language` enum contains the names of most common programming languages.
+   * This field is typed as a string to permit any programming language, including
+   * ones that are not specified by the `Language` enum.
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The bytes for language. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int RELATIVE_PATH_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object relativePath_ = ""; + /** + *
+   * (Required) Unique path to the text document.
+   *
+   * 1. The path must be relative to the directory supplied in the associated
+   * `Metadata.project_root`.
+   * 2. The path must not begin with a leading '/'.
+   * 3. The path must point to a regular file, not a symbolic link.
+   * 4. The path must use '/' as the separator, including on Windows.
+   * 5. The path must be canonical; it cannot include empty components ('//'),
+   * or '.' or '..'.
+   * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @return The relativePath. + */ + @java.lang.Override + public java.lang.String getRelativePath() { + java.lang.Object ref = relativePath_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + relativePath_ = s; + return s; + } + } + /** + *
+   * (Required) Unique path to the text document.
+   *
+   * 1. The path must be relative to the directory supplied in the associated
+   * `Metadata.project_root`.
+   * 2. The path must not begin with a leading '/'.
+   * 3. The path must point to a regular file, not a symbolic link.
+   * 4. The path must use '/' as the separator, including on Windows.
+   * 5. The path must be canonical; it cannot include empty components ('//'),
+   * or '.' or '..'.
+   * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @return The bytes for relativePath. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getRelativePathBytes() { + java.lang.Object ref = relativePath_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + relativePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int OCCURRENCES_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List occurrences_; + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public java.util.List getOccurrencesList() { + return occurrences_; + } + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public java.util.List + getOccurrencesOrBuilderList() { + return occurrences_; + } + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public int getOccurrencesCount() { + return occurrences_.size(); + } + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public org.scip_code.scip.Occurrence getOccurrences(int index) { + return occurrences_.get(index); + } + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public org.scip_code.scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index) { + return occurrences_.get(index); + } + + public static final int SYMBOLS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private java.util.List symbols_; + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + @java.lang.Override + public java.util.List getSymbolsList() { + return symbols_; + } + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + @java.lang.Override + public java.util.List + getSymbolsOrBuilderList() { + return symbols_; + } + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + @java.lang.Override + public int getSymbolsCount() { + return symbols_.size(); + } + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + @java.lang.Override + public org.scip_code.scip.SymbolInformation getSymbols(int index) { + return symbols_.get(index); + } + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + @java.lang.Override + public org.scip_code.scip.SymbolInformationOrBuilder getSymbolsOrBuilder( + int index) { + return symbols_.get(index); + } + + public static final int TEXT_FIELD_NUMBER = 5; + @SuppressWarnings("serial") + private volatile java.lang.Object text_ = ""; + /** + *
+   * (optional) Text contents of this document. Indexers are not expected to
+   * include the text by default. It's preferable that clients read the text
+   * contents from the file system by resolving the absolute path from joining
+   * `Index.metadata.project_root` and `Document.relative_path`. This field
+   * can be useful for testing or when working with virtual/in-memory documents.
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The text. + */ + @java.lang.Override + public java.lang.String getText() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } + } + /** + *
+   * (optional) Text contents of this document. Indexers are not expected to
+   * include the text by default. It's preferable that clients read the text
+   * contents from the file system by resolving the absolute path from joining
+   * `Index.metadata.project_root` and `Document.relative_path`. This field
+   * can be useful for testing or when working with virtual/in-memory documents.
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The bytes for text. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int POSITION_ENCODING_FIELD_NUMBER = 6; + private int positionEncoding_ = 0; + /** + *
+   * Specifies the encoding used for source ranges in this Document.
+   *
+   * Usually, this will match the type used to index the string type
+   * in the indexer's implementation language in O(1) time.
+   * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+   * use UTF16CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Python,
+   * use UTF32CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Go, Rust or C++,
+   * use UTF8ByteOffsetFromLineStart.
+   * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @return The enum numeric value on the wire for positionEncoding. + */ + @java.lang.Override public int getPositionEncodingValue() { + return positionEncoding_; + } + /** + *
+   * Specifies the encoding used for source ranges in this Document.
+   *
+   * Usually, this will match the type used to index the string type
+   * in the indexer's implementation language in O(1) time.
+   * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+   * use UTF16CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Python,
+   * use UTF32CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Go, Rust or C++,
+   * use UTF8ByteOffsetFromLineStart.
+   * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @return The positionEncoding. + */ + @java.lang.Override public org.scip_code.scip.PositionEncoding getPositionEncoding() { + org.scip_code.scip.PositionEncoding result = org.scip_code.scip.PositionEncoding.forNumber(positionEncoding_); + return result == null ? org.scip_code.scip.PositionEncoding.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(relativePath_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, relativePath_); + } + for (int i = 0; i < occurrences_.size(); i++) { + output.writeMessage(2, occurrences_.get(i)); + } + for (int i = 0; i < symbols_.size(); i++) { + output.writeMessage(3, symbols_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(language_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, language_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 5, text_); + } + if (positionEncoding_ != org.scip_code.scip.PositionEncoding.UnspecifiedPositionEncoding.getNumber()) { + output.writeEnum(6, positionEncoding_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(relativePath_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, relativePath_); + } + for (int i = 0; i < occurrences_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, occurrences_.get(i)); + } + for (int i = 0; i < symbols_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, symbols_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(language_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(4, language_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(5, text_); + } + if (positionEncoding_ != org.scip_code.scip.PositionEncoding.UnspecifiedPositionEncoding.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(6, positionEncoding_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Document)) { + return super.equals(obj); + } + org.scip_code.scip.Document other = (org.scip_code.scip.Document) obj; + + if (!getLanguage() + .equals(other.getLanguage())) return false; + if (!getRelativePath() + .equals(other.getRelativePath())) return false; + if (!getOccurrencesList() + .equals(other.getOccurrencesList())) return false; + if (!getSymbolsList() + .equals(other.getSymbolsList())) return false; + if (!getText() + .equals(other.getText())) return false; + if (positionEncoding_ != other.positionEncoding_) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LANGUAGE_FIELD_NUMBER; + hash = (53 * hash) + getLanguage().hashCode(); + hash = (37 * hash) + RELATIVE_PATH_FIELD_NUMBER; + hash = (53 * hash) + getRelativePath().hashCode(); + if (getOccurrencesCount() > 0) { + hash = (37 * hash) + OCCURRENCES_FIELD_NUMBER; + hash = (53 * hash) + getOccurrencesList().hashCode(); + } + if (getSymbolsCount() > 0) { + hash = (37 * hash) + SYMBOLS_FIELD_NUMBER; + hash = (53 * hash) + getSymbolsList().hashCode(); + } + hash = (37 * hash) + TEXT_FIELD_NUMBER; + hash = (53 * hash) + getText().hashCode(); + hash = (37 * hash) + POSITION_ENCODING_FIELD_NUMBER; + hash = (53 * hash) + positionEncoding_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Document parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Document parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Document parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Document parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Document parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Document parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Document parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Document parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Document parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Document parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Document parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Document parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Document prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Document defines the metadata about a source file on disk.
+   * 
+ * + * Protobuf type {@code scip.Document} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Document) + org.scip_code.scip.DocumentOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Document_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Document_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Document.class, org.scip_code.scip.Document.Builder.class); + } + + // Construct using org.scip_code.scip.Document.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + language_ = ""; + relativePath_ = ""; + if (occurrencesBuilder_ == null) { + occurrences_ = java.util.Collections.emptyList(); + } else { + occurrences_ = null; + occurrencesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + if (symbolsBuilder_ == null) { + symbols_ = java.util.Collections.emptyList(); + } else { + symbols_ = null; + symbolsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + text_ = ""; + positionEncoding_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Document_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Document getDefaultInstanceForType() { + return org.scip_code.scip.Document.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Document build() { + org.scip_code.scip.Document result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Document buildPartial() { + org.scip_code.scip.Document result = new org.scip_code.scip.Document(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(org.scip_code.scip.Document result) { + if (occurrencesBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0)) { + occurrences_ = java.util.Collections.unmodifiableList(occurrences_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.occurrences_ = occurrences_; + } else { + result.occurrences_ = occurrencesBuilder_.build(); + } + if (symbolsBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0)) { + symbols_ = java.util.Collections.unmodifiableList(symbols_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.symbols_ = symbols_; + } else { + result.symbols_ = symbolsBuilder_.build(); + } + } + + private void buildPartial0(org.scip_code.scip.Document result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.language_ = language_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.relativePath_ = relativePath_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.text_ = text_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.positionEncoding_ = positionEncoding_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Document) { + return mergeFrom((org.scip_code.scip.Document)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Document other) { + if (other == org.scip_code.scip.Document.getDefaultInstance()) return this; + if (!other.getLanguage().isEmpty()) { + language_ = other.language_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getRelativePath().isEmpty()) { + relativePath_ = other.relativePath_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (occurrencesBuilder_ == null) { + if (!other.occurrences_.isEmpty()) { + if (occurrences_.isEmpty()) { + occurrences_ = other.occurrences_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureOccurrencesIsMutable(); + occurrences_.addAll(other.occurrences_); + } + onChanged(); + } + } else { + if (!other.occurrences_.isEmpty()) { + if (occurrencesBuilder_.isEmpty()) { + occurrencesBuilder_.dispose(); + occurrencesBuilder_ = null; + occurrences_ = other.occurrences_; + bitField0_ = (bitField0_ & ~0x00000004); + occurrencesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetOccurrencesFieldBuilder() : null; + } else { + occurrencesBuilder_.addAllMessages(other.occurrences_); + } + } + } + if (symbolsBuilder_ == null) { + if (!other.symbols_.isEmpty()) { + if (symbols_.isEmpty()) { + symbols_ = other.symbols_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensureSymbolsIsMutable(); + symbols_.addAll(other.symbols_); + } + onChanged(); + } + } else { + if (!other.symbols_.isEmpty()) { + if (symbolsBuilder_.isEmpty()) { + symbolsBuilder_.dispose(); + symbolsBuilder_ = null; + symbols_ = other.symbols_; + bitField0_ = (bitField0_ & ~0x00000008); + symbolsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetSymbolsFieldBuilder() : null; + } else { + symbolsBuilder_.addAllMessages(other.symbols_); + } + } + } + if (!other.getText().isEmpty()) { + text_ = other.text_; + bitField0_ |= 0x00000010; + onChanged(); + } + if (other.positionEncoding_ != 0) { + setPositionEncodingValue(other.getPositionEncodingValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + relativePath_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 10 + case 18: { + org.scip_code.scip.Occurrence m = + input.readMessage( + org.scip_code.scip.Occurrence.parser(), + extensionRegistry); + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(m); + } else { + occurrencesBuilder_.addMessage(m); + } + break; + } // case 18 + case 26: { + org.scip_code.scip.SymbolInformation m = + input.readMessage( + org.scip_code.scip.SymbolInformation.parser(), + extensionRegistry); + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.add(m); + } else { + symbolsBuilder_.addMessage(m); + } + break; + } // case 26 + case 34: { + language_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 34 + case 42: { + text_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; + break; + } // case 42 + case 48: { + positionEncoding_ = input.readEnum(); + bitField0_ |= 0x00000020; + break; + } // case 48 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object language_ = ""; + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @return The language. + */ + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @return The bytes for language. + */ + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @param value The language to set. + * @return This builder for chaining. + */ + public Builder setLanguage( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + language_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @return This builder for chaining. + */ + public Builder clearLanguage() { + language_ = getDefaultInstance().getLanguage(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+     * The string ID for the programming language this file is written in.
+     * The `Language` enum contains the names of most common programming languages.
+     * This field is typed as a string to permit any programming language, including
+     * ones that are not specified by the `Language` enum.
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @param value The bytes for language to set. + * @return This builder for chaining. + */ + public Builder setLanguageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + language_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object relativePath_ = ""; + /** + *
+     * (Required) Unique path to the text document.
+     *
+     * 1. The path must be relative to the directory supplied in the associated
+     * `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     * or '.' or '..'.
+     * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @return The relativePath. + */ + public java.lang.String getRelativePath() { + java.lang.Object ref = relativePath_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + relativePath_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * (Required) Unique path to the text document.
+     *
+     * 1. The path must be relative to the directory supplied in the associated
+     * `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     * or '.' or '..'.
+     * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @return The bytes for relativePath. + */ + public com.google.protobuf.ByteString + getRelativePathBytes() { + java.lang.Object ref = relativePath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + relativePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * (Required) Unique path to the text document.
+     *
+     * 1. The path must be relative to the directory supplied in the associated
+     * `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     * or '.' or '..'.
+     * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @param value The relativePath to set. + * @return This builder for chaining. + */ + public Builder setRelativePath( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + relativePath_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * (Required) Unique path to the text document.
+     *
+     * 1. The path must be relative to the directory supplied in the associated
+     * `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     * or '.' or '..'.
+     * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @return This builder for chaining. + */ + public Builder clearRelativePath() { + relativePath_ = getDefaultInstance().getRelativePath(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+     * (Required) Unique path to the text document.
+     *
+     * 1. The path must be relative to the directory supplied in the associated
+     * `Metadata.project_root`.
+     * 2. The path must not begin with a leading '/'.
+     * 3. The path must point to a regular file, not a symbolic link.
+     * 4. The path must use '/' as the separator, including on Windows.
+     * 5. The path must be canonical; it cannot include empty components ('//'),
+     * or '.' or '..'.
+     * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @param value The bytes for relativePath to set. + * @return This builder for chaining. + */ + public Builder setRelativePathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + relativePath_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.util.List occurrences_ = + java.util.Collections.emptyList(); + private void ensureOccurrencesIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + occurrences_ = new java.util.ArrayList(occurrences_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Occurrence, org.scip_code.scip.Occurrence.Builder, org.scip_code.scip.OccurrenceOrBuilder> occurrencesBuilder_; + + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public java.util.List getOccurrencesList() { + if (occurrencesBuilder_ == null) { + return java.util.Collections.unmodifiableList(occurrences_); + } else { + return occurrencesBuilder_.getMessageList(); + } + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public int getOccurrencesCount() { + if (occurrencesBuilder_ == null) { + return occurrences_.size(); + } else { + return occurrencesBuilder_.getCount(); + } + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence getOccurrences(int index) { + if (occurrencesBuilder_ == null) { + return occurrences_.get(index); + } else { + return occurrencesBuilder_.getMessage(index); + } + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder setOccurrences( + int index, org.scip_code.scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.set(index, value); + onChanged(); + } else { + occurrencesBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder setOccurrences( + int index, org.scip_code.scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.set(index, builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences(org.scip_code.scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.add(value); + onChanged(); + } else { + occurrencesBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences( + int index, org.scip_code.scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.add(index, value); + onChanged(); + } else { + occurrencesBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences( + org.scip_code.scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences( + int index, org.scip_code.scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(index, builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addAllOccurrences( + java.lang.Iterable values) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, occurrences_); + onChanged(); + } else { + occurrencesBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder clearOccurrences() { + if (occurrencesBuilder_ == null) { + occurrences_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + occurrencesBuilder_.clear(); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder removeOccurrences(int index) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.remove(index); + onChanged(); + } else { + occurrencesBuilder_.remove(index); + } + return this; + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence.Builder getOccurrencesBuilder( + int index) { + return internalGetOccurrencesFieldBuilder().getBuilder(index); + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index) { + if (occurrencesBuilder_ == null) { + return occurrences_.get(index); } else { + return occurrencesBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public java.util.List + getOccurrencesOrBuilderList() { + if (occurrencesBuilder_ != null) { + return occurrencesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(occurrences_); + } + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence.Builder addOccurrencesBuilder() { + return internalGetOccurrencesFieldBuilder().addBuilder( + org.scip_code.scip.Occurrence.getDefaultInstance()); + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence.Builder addOccurrencesBuilder( + int index) { + return internalGetOccurrencesFieldBuilder().addBuilder( + index, org.scip_code.scip.Occurrence.getDefaultInstance()); + } + /** + *
+     * Occurrences that appear in this file.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public java.util.List + getOccurrencesBuilderList() { + return internalGetOccurrencesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Occurrence, org.scip_code.scip.Occurrence.Builder, org.scip_code.scip.OccurrenceOrBuilder> + internalGetOccurrencesFieldBuilder() { + if (occurrencesBuilder_ == null) { + occurrencesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Occurrence, org.scip_code.scip.Occurrence.Builder, org.scip_code.scip.OccurrenceOrBuilder>( + occurrences_, + ((bitField0_ & 0x00000004) != 0), + getParentForChildren(), + isClean()); + occurrences_ = null; + } + return occurrencesBuilder_; + } + + private java.util.List symbols_ = + java.util.Collections.emptyList(); + private void ensureSymbolsIsMutable() { + if (!((bitField0_ & 0x00000008) != 0)) { + symbols_ = new java.util.ArrayList(symbols_); + bitField0_ |= 0x00000008; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.SymbolInformation, org.scip_code.scip.SymbolInformation.Builder, org.scip_code.scip.SymbolInformationOrBuilder> symbolsBuilder_; + + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public java.util.List getSymbolsList() { + if (symbolsBuilder_ == null) { + return java.util.Collections.unmodifiableList(symbols_); + } else { + return symbolsBuilder_.getMessageList(); + } + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public int getSymbolsCount() { + if (symbolsBuilder_ == null) { + return symbols_.size(); + } else { + return symbolsBuilder_.getCount(); + } + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public org.scip_code.scip.SymbolInformation getSymbols(int index) { + if (symbolsBuilder_ == null) { + return symbols_.get(index); + } else { + return symbolsBuilder_.getMessage(index); + } + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder setSymbols( + int index, org.scip_code.scip.SymbolInformation value) { + if (symbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSymbolsIsMutable(); + symbols_.set(index, value); + onChanged(); + } else { + symbolsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder setSymbols( + int index, org.scip_code.scip.SymbolInformation.Builder builderForValue) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.set(index, builderForValue.build()); + onChanged(); + } else { + symbolsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder addSymbols(org.scip_code.scip.SymbolInformation value) { + if (symbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSymbolsIsMutable(); + symbols_.add(value); + onChanged(); + } else { + symbolsBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder addSymbols( + int index, org.scip_code.scip.SymbolInformation value) { + if (symbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSymbolsIsMutable(); + symbols_.add(index, value); + onChanged(); + } else { + symbolsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder addSymbols( + org.scip_code.scip.SymbolInformation.Builder builderForValue) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.add(builderForValue.build()); + onChanged(); + } else { + symbolsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder addSymbols( + int index, org.scip_code.scip.SymbolInformation.Builder builderForValue) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.add(index, builderForValue.build()); + onChanged(); + } else { + symbolsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder addAllSymbols( + java.lang.Iterable values) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, symbols_); + onChanged(); + } else { + symbolsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder clearSymbols() { + if (symbolsBuilder_ == null) { + symbols_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + } else { + symbolsBuilder_.clear(); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public Builder removeSymbols(int index) { + if (symbolsBuilder_ == null) { + ensureSymbolsIsMutable(); + symbols_.remove(index); + onChanged(); + } else { + symbolsBuilder_.remove(index); + } + return this; + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public org.scip_code.scip.SymbolInformation.Builder getSymbolsBuilder( + int index) { + return internalGetSymbolsFieldBuilder().getBuilder(index); + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public org.scip_code.scip.SymbolInformationOrBuilder getSymbolsOrBuilder( + int index) { + if (symbolsBuilder_ == null) { + return symbols_.get(index); } else { + return symbolsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public java.util.List + getSymbolsOrBuilderList() { + if (symbolsBuilder_ != null) { + return symbolsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(symbols_); + } + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public org.scip_code.scip.SymbolInformation.Builder addSymbolsBuilder() { + return internalGetSymbolsFieldBuilder().addBuilder( + org.scip_code.scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public org.scip_code.scip.SymbolInformation.Builder addSymbolsBuilder( + int index) { + return internalGetSymbolsFieldBuilder().addBuilder( + index, org.scip_code.scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+     * Symbols that are "defined" within this document.
+     *
+     * This should include symbols which technically do not have any definition,
+     * but have a reference and are defined by some other symbol (see
+     * Relationship.is_definition).
+     * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + public java.util.List + getSymbolsBuilderList() { + return internalGetSymbolsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.SymbolInformation, org.scip_code.scip.SymbolInformation.Builder, org.scip_code.scip.SymbolInformationOrBuilder> + internalGetSymbolsFieldBuilder() { + if (symbolsBuilder_ == null) { + symbolsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.SymbolInformation, org.scip_code.scip.SymbolInformation.Builder, org.scip_code.scip.SymbolInformationOrBuilder>( + symbols_, + ((bitField0_ & 0x00000008) != 0), + getParentForChildren(), + isClean()); + symbols_ = null; + } + return symbolsBuilder_; + } + + private java.lang.Object text_ = ""; + /** + *
+     * (optional) Text contents of this document. Indexers are not expected to
+     * include the text by default. It's preferable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field
+     * can be useful for testing or when working with virtual/in-memory documents.
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @return The text. + */ + public java.lang.String getText() { + java.lang.Object ref = text_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * (optional) Text contents of this document. Indexers are not expected to
+     * include the text by default. It's preferable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field
+     * can be useful for testing or when working with virtual/in-memory documents.
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @return The bytes for text. + */ + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * (optional) Text contents of this document. Indexers are not expected to
+     * include the text by default. It's preferable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field
+     * can be useful for testing or when working with virtual/in-memory documents.
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @param value The text to set. + * @return This builder for chaining. + */ + public Builder setText( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + text_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + *
+     * (optional) Text contents of this document. Indexers are not expected to
+     * include the text by default. It's preferable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field
+     * can be useful for testing or when working with virtual/in-memory documents.
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @return This builder for chaining. + */ + public Builder clearText() { + text_ = getDefaultInstance().getText(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + /** + *
+     * (optional) Text contents of this document. Indexers are not expected to
+     * include the text by default. It's preferable that clients read the text
+     * contents from the file system by resolving the absolute path from joining
+     * `Index.metadata.project_root` and `Document.relative_path`. This field
+     * can be useful for testing or when working with virtual/in-memory documents.
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @param value The bytes for text to set. + * @return This builder for chaining. + */ + public Builder setTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + text_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + private int positionEncoding_ = 0; + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     *
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     * use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     * use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     * use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @return The enum numeric value on the wire for positionEncoding. + */ + @java.lang.Override public int getPositionEncodingValue() { + return positionEncoding_; + } + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     *
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     * use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     * use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     * use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @param value The enum numeric value on the wire for positionEncoding to set. + * @return This builder for chaining. + */ + public Builder setPositionEncodingValue(int value) { + positionEncoding_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     *
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     * use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     * use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     * use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @return The positionEncoding. + */ + @java.lang.Override + public org.scip_code.scip.PositionEncoding getPositionEncoding() { + org.scip_code.scip.PositionEncoding result = org.scip_code.scip.PositionEncoding.forNumber(positionEncoding_); + return result == null ? org.scip_code.scip.PositionEncoding.UNRECOGNIZED : result; + } + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     *
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     * use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     * use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     * use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @param value The positionEncoding to set. + * @return This builder for chaining. + */ + public Builder setPositionEncoding(org.scip_code.scip.PositionEncoding value) { + if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000020; + positionEncoding_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+     * Specifies the encoding used for source ranges in this Document.
+     *
+     * Usually, this will match the type used to index the string type
+     * in the indexer's implementation language in O(1) time.
+     * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+     * use UTF16CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Python,
+     * use UTF32CodeUnitOffsetFromLineStart.
+     * - For an indexer implemented in Go, Rust or C++,
+     * use UTF8ByteOffsetFromLineStart.
+     * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @return This builder for chaining. + */ + public Builder clearPositionEncoding() { + bitField0_ = (bitField0_ & ~0x00000020); + positionEncoding_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.Document) + } + + // @@protoc_insertion_point(class_scope:scip.Document) + private static final org.scip_code.scip.Document DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Document(); + } + + public static org.scip_code.scip.Document getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Document parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Document getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/DocumentOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/DocumentOrBuilder.java new file mode 100644 index 00000000..ad1e69ae --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/DocumentOrBuilder.java @@ -0,0 +1,247 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface DocumentOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Document) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * The string ID for the programming language this file is written in.
+   * The `Language` enum contains the names of most common programming languages.
+   * This field is typed as a string to permit any programming language, including
+   * ones that are not specified by the `Language` enum.
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The language. + */ + java.lang.String getLanguage(); + /** + *
+   * The string ID for the programming language this file is written in.
+   * The `Language` enum contains the names of most common programming languages.
+   * This field is typed as a string to permit any programming language, including
+   * ones that are not specified by the `Language` enum.
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The bytes for language. + */ + com.google.protobuf.ByteString + getLanguageBytes(); + + /** + *
+   * (Required) Unique path to the text document.
+   *
+   * 1. The path must be relative to the directory supplied in the associated
+   * `Metadata.project_root`.
+   * 2. The path must not begin with a leading '/'.
+   * 3. The path must point to a regular file, not a symbolic link.
+   * 4. The path must use '/' as the separator, including on Windows.
+   * 5. The path must be canonical; it cannot include empty components ('//'),
+   * or '.' or '..'.
+   * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @return The relativePath. + */ + java.lang.String getRelativePath(); + /** + *
+   * (Required) Unique path to the text document.
+   *
+   * 1. The path must be relative to the directory supplied in the associated
+   * `Metadata.project_root`.
+   * 2. The path must not begin with a leading '/'.
+   * 3. The path must point to a regular file, not a symbolic link.
+   * 4. The path must use '/' as the separator, including on Windows.
+   * 5. The path must be canonical; it cannot include empty components ('//'),
+   * or '.' or '..'.
+   * 
+ * + * string relative_path = 1 [json_name = "relativePath"]; + * @return The bytes for relativePath. + */ + com.google.protobuf.ByteString + getRelativePathBytes(); + + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + java.util.List + getOccurrencesList(); + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + org.scip_code.scip.Occurrence getOccurrences(int index); + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + int getOccurrencesCount(); + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + java.util.List + getOccurrencesOrBuilderList(); + /** + *
+   * Occurrences that appear in this file.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + org.scip_code.scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index); + + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + java.util.List + getSymbolsList(); + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + org.scip_code.scip.SymbolInformation getSymbols(int index); + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + int getSymbolsCount(); + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + java.util.List + getSymbolsOrBuilderList(); + /** + *
+   * Symbols that are "defined" within this document.
+   *
+   * This should include symbols which technically do not have any definition,
+   * but have a reference and are defined by some other symbol (see
+   * Relationship.is_definition).
+   * 
+ * + * repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"]; + */ + org.scip_code.scip.SymbolInformationOrBuilder getSymbolsOrBuilder( + int index); + + /** + *
+   * (optional) Text contents of this document. Indexers are not expected to
+   * include the text by default. It's preferable that clients read the text
+   * contents from the file system by resolving the absolute path from joining
+   * `Index.metadata.project_root` and `Document.relative_path`. This field
+   * can be useful for testing or when working with virtual/in-memory documents.
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The text. + */ + java.lang.String getText(); + /** + *
+   * (optional) Text contents of this document. Indexers are not expected to
+   * include the text by default. It's preferable that clients read the text
+   * contents from the file system by resolving the absolute path from joining
+   * `Index.metadata.project_root` and `Document.relative_path`. This field
+   * can be useful for testing or when working with virtual/in-memory documents.
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The bytes for text. + */ + com.google.protobuf.ByteString + getTextBytes(); + + /** + *
+   * Specifies the encoding used for source ranges in this Document.
+   *
+   * Usually, this will match the type used to index the string type
+   * in the indexer's implementation language in O(1) time.
+   * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+   * use UTF16CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Python,
+   * use UTF32CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Go, Rust or C++,
+   * use UTF8ByteOffsetFromLineStart.
+   * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @return The enum numeric value on the wire for positionEncoding. + */ + int getPositionEncodingValue(); + /** + *
+   * Specifies the encoding used for source ranges in this Document.
+   *
+   * Usually, this will match the type used to index the string type
+   * in the indexer's implementation language in O(1) time.
+   * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript,
+   * use UTF16CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Python,
+   * use UTF32CodeUnitOffsetFromLineStart.
+   * - For an indexer implemented in Go, Rust or C++,
+   * use UTF8ByteOffsetFromLineStart.
+   * 
+ * + * .scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"]; + * @return The positionEncoding. + */ + org.scip_code.scip.PositionEncoding getPositionEncoding(); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/Index.java b/bindings/java/src/main/java/org/scip_code/scip/Index.java new file mode 100644 index 00000000..20249318 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Index.java @@ -0,0 +1,1607 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Index represents a complete SCIP index for a workspace this is rooted at a
+ * single directory. An Index message payload can have a large memory footprint
+ * and it's therefore recommended to emit and consume an Index payload one field
+ * value at a time. To permit streaming consumption of an Index payload, the
+ * `metadata` field must appear at the start of the stream and must only appear
+ * once in the stream. Other field values may appear in any order.
+ * 
+ * + * Protobuf type {@code scip.Index} + */ +@com.google.protobuf.Generated +public final class Index extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Index) + IndexOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Index.class.getName()); + } + // Use Index.newBuilder() to construct. + private Index(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Index() { + documents_ = java.util.Collections.emptyList(); + externalSymbols_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Index_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Index_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Index.class, org.scip_code.scip.Index.Builder.class); + } + + private int bitField0_; + public static final int METADATA_FIELD_NUMBER = 1; + private org.scip_code.scip.Metadata metadata_; + /** + *
+   * Metadata about this index.
+   * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + * @return Whether the metadata field is set. + */ + @java.lang.Override + public boolean hasMetadata() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+   * Metadata about this index.
+   * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + * @return The metadata. + */ + @java.lang.Override + public org.scip_code.scip.Metadata getMetadata() { + return metadata_ == null ? org.scip_code.scip.Metadata.getDefaultInstance() : metadata_; + } + /** + *
+   * Metadata about this index.
+   * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + @java.lang.Override + public org.scip_code.scip.MetadataOrBuilder getMetadataOrBuilder() { + return metadata_ == null ? org.scip_code.scip.Metadata.getDefaultInstance() : metadata_; + } + + public static final int DOCUMENTS_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List documents_; + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + @java.lang.Override + public java.util.List getDocumentsList() { + return documents_; + } + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + @java.lang.Override + public java.util.List + getDocumentsOrBuilderList() { + return documents_; + } + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + @java.lang.Override + public int getDocumentsCount() { + return documents_.size(); + } + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + @java.lang.Override + public org.scip_code.scip.Document getDocuments(int index) { + return documents_.get(index); + } + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + @java.lang.Override + public org.scip_code.scip.DocumentOrBuilder getDocumentsOrBuilder( + int index) { + return documents_.get(index); + } + + public static final int EXTERNAL_SYMBOLS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private java.util.List externalSymbols_; + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + @java.lang.Override + public java.util.List getExternalSymbolsList() { + return externalSymbols_; + } + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + @java.lang.Override + public java.util.List + getExternalSymbolsOrBuilderList() { + return externalSymbols_; + } + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + @java.lang.Override + public int getExternalSymbolsCount() { + return externalSymbols_.size(); + } + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + @java.lang.Override + public org.scip_code.scip.SymbolInformation getExternalSymbols(int index) { + return externalSymbols_.get(index); + } + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + @java.lang.Override + public org.scip_code.scip.SymbolInformationOrBuilder getExternalSymbolsOrBuilder( + int index) { + return externalSymbols_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getMetadata()); + } + for (int i = 0; i < documents_.size(); i++) { + output.writeMessage(2, documents_.get(i)); + } + for (int i = 0; i < externalSymbols_.size(); i++) { + output.writeMessage(3, externalSymbols_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getMetadata()); + } + for (int i = 0; i < documents_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, documents_.get(i)); + } + for (int i = 0; i < externalSymbols_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, externalSymbols_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Index)) { + return super.equals(obj); + } + org.scip_code.scip.Index other = (org.scip_code.scip.Index) obj; + + if (hasMetadata() != other.hasMetadata()) return false; + if (hasMetadata()) { + if (!getMetadata() + .equals(other.getMetadata())) return false; + } + if (!getDocumentsList() + .equals(other.getDocumentsList())) return false; + if (!getExternalSymbolsList() + .equals(other.getExternalSymbolsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasMetadata()) { + hash = (37 * hash) + METADATA_FIELD_NUMBER; + hash = (53 * hash) + getMetadata().hashCode(); + } + if (getDocumentsCount() > 0) { + hash = (37 * hash) + DOCUMENTS_FIELD_NUMBER; + hash = (53 * hash) + getDocumentsList().hashCode(); + } + if (getExternalSymbolsCount() > 0) { + hash = (37 * hash) + EXTERNAL_SYMBOLS_FIELD_NUMBER; + hash = (53 * hash) + getExternalSymbolsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Index parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Index parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Index parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Index parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Index parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Index parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Index parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Index parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Index parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Index parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Index parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Index parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Index prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Index represents a complete SCIP index for a workspace this is rooted at a
+   * single directory. An Index message payload can have a large memory footprint
+   * and it's therefore recommended to emit and consume an Index payload one field
+   * value at a time. To permit streaming consumption of an Index payload, the
+   * `metadata` field must appear at the start of the stream and must only appear
+   * once in the stream. Other field values may appear in any order.
+   * 
+ * + * Protobuf type {@code scip.Index} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Index) + org.scip_code.scip.IndexOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Index_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Index_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Index.class, org.scip_code.scip.Index.Builder.class); + } + + // Construct using org.scip_code.scip.Index.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetMetadataFieldBuilder(); + internalGetDocumentsFieldBuilder(); + internalGetExternalSymbolsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + metadata_ = null; + if (metadataBuilder_ != null) { + metadataBuilder_.dispose(); + metadataBuilder_ = null; + } + if (documentsBuilder_ == null) { + documents_ = java.util.Collections.emptyList(); + } else { + documents_ = null; + documentsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + if (externalSymbolsBuilder_ == null) { + externalSymbols_ = java.util.Collections.emptyList(); + } else { + externalSymbols_ = null; + externalSymbolsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Index_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Index getDefaultInstanceForType() { + return org.scip_code.scip.Index.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Index build() { + org.scip_code.scip.Index result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Index buildPartial() { + org.scip_code.scip.Index result = new org.scip_code.scip.Index(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(org.scip_code.scip.Index result) { + if (documentsBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0)) { + documents_ = java.util.Collections.unmodifiableList(documents_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.documents_ = documents_; + } else { + result.documents_ = documentsBuilder_.build(); + } + if (externalSymbolsBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0)) { + externalSymbols_ = java.util.Collections.unmodifiableList(externalSymbols_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.externalSymbols_ = externalSymbols_; + } else { + result.externalSymbols_ = externalSymbolsBuilder_.build(); + } + } + + private void buildPartial0(org.scip_code.scip.Index result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.metadata_ = metadataBuilder_ == null + ? metadata_ + : metadataBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Index) { + return mergeFrom((org.scip_code.scip.Index)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Index other) { + if (other == org.scip_code.scip.Index.getDefaultInstance()) return this; + if (other.hasMetadata()) { + mergeMetadata(other.getMetadata()); + } + if (documentsBuilder_ == null) { + if (!other.documents_.isEmpty()) { + if (documents_.isEmpty()) { + documents_ = other.documents_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureDocumentsIsMutable(); + documents_.addAll(other.documents_); + } + onChanged(); + } + } else { + if (!other.documents_.isEmpty()) { + if (documentsBuilder_.isEmpty()) { + documentsBuilder_.dispose(); + documentsBuilder_ = null; + documents_ = other.documents_; + bitField0_ = (bitField0_ & ~0x00000002); + documentsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetDocumentsFieldBuilder() : null; + } else { + documentsBuilder_.addAllMessages(other.documents_); + } + } + } + if (externalSymbolsBuilder_ == null) { + if (!other.externalSymbols_.isEmpty()) { + if (externalSymbols_.isEmpty()) { + externalSymbols_ = other.externalSymbols_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureExternalSymbolsIsMutable(); + externalSymbols_.addAll(other.externalSymbols_); + } + onChanged(); + } + } else { + if (!other.externalSymbols_.isEmpty()) { + if (externalSymbolsBuilder_.isEmpty()) { + externalSymbolsBuilder_.dispose(); + externalSymbolsBuilder_ = null; + externalSymbols_ = other.externalSymbols_; + bitField0_ = (bitField0_ & ~0x00000004); + externalSymbolsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetExternalSymbolsFieldBuilder() : null; + } else { + externalSymbolsBuilder_.addAllMessages(other.externalSymbols_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + internalGetMetadataFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + org.scip_code.scip.Document m = + input.readMessage( + org.scip_code.scip.Document.parser(), + extensionRegistry); + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.add(m); + } else { + documentsBuilder_.addMessage(m); + } + break; + } // case 18 + case 26: { + org.scip_code.scip.SymbolInformation m = + input.readMessage( + org.scip_code.scip.SymbolInformation.parser(), + extensionRegistry); + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(m); + } else { + externalSymbolsBuilder_.addMessage(m); + } + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private org.scip_code.scip.Metadata metadata_; + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Metadata, org.scip_code.scip.Metadata.Builder, org.scip_code.scip.MetadataOrBuilder> metadataBuilder_; + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + * @return Whether the metadata field is set. + */ + public boolean hasMetadata() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + * @return The metadata. + */ + public org.scip_code.scip.Metadata getMetadata() { + if (metadataBuilder_ == null) { + return metadata_ == null ? org.scip_code.scip.Metadata.getDefaultInstance() : metadata_; + } else { + return metadataBuilder_.getMessage(); + } + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + public Builder setMetadata(org.scip_code.scip.Metadata value) { + if (metadataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + metadata_ = value; + } else { + metadataBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + public Builder setMetadata( + org.scip_code.scip.Metadata.Builder builderForValue) { + if (metadataBuilder_ == null) { + metadata_ = builderForValue.build(); + } else { + metadataBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + public Builder mergeMetadata(org.scip_code.scip.Metadata value) { + if (metadataBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && + metadata_ != null && + metadata_ != org.scip_code.scip.Metadata.getDefaultInstance()) { + getMetadataBuilder().mergeFrom(value); + } else { + metadata_ = value; + } + } else { + metadataBuilder_.mergeFrom(value); + } + if (metadata_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + public Builder clearMetadata() { + bitField0_ = (bitField0_ & ~0x00000001); + metadata_ = null; + if (metadataBuilder_ != null) { + metadataBuilder_.dispose(); + metadataBuilder_ = null; + } + onChanged(); + return this; + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + public org.scip_code.scip.Metadata.Builder getMetadataBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return internalGetMetadataFieldBuilder().getBuilder(); + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + public org.scip_code.scip.MetadataOrBuilder getMetadataOrBuilder() { + if (metadataBuilder_ != null) { + return metadataBuilder_.getMessageOrBuilder(); + } else { + return metadata_ == null ? + org.scip_code.scip.Metadata.getDefaultInstance() : metadata_; + } + } + /** + *
+     * Metadata about this index.
+     * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Metadata, org.scip_code.scip.Metadata.Builder, org.scip_code.scip.MetadataOrBuilder> + internalGetMetadataFieldBuilder() { + if (metadataBuilder_ == null) { + metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Metadata, org.scip_code.scip.Metadata.Builder, org.scip_code.scip.MetadataOrBuilder>( + getMetadata(), + getParentForChildren(), + isClean()); + metadata_ = null; + } + return metadataBuilder_; + } + + private java.util.List documents_ = + java.util.Collections.emptyList(); + private void ensureDocumentsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + documents_ = new java.util.ArrayList(documents_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Document, org.scip_code.scip.Document.Builder, org.scip_code.scip.DocumentOrBuilder> documentsBuilder_; + + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public java.util.List getDocumentsList() { + if (documentsBuilder_ == null) { + return java.util.Collections.unmodifiableList(documents_); + } else { + return documentsBuilder_.getMessageList(); + } + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public int getDocumentsCount() { + if (documentsBuilder_ == null) { + return documents_.size(); + } else { + return documentsBuilder_.getCount(); + } + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public org.scip_code.scip.Document getDocuments(int index) { + if (documentsBuilder_ == null) { + return documents_.get(index); + } else { + return documentsBuilder_.getMessage(index); + } + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder setDocuments( + int index, org.scip_code.scip.Document value) { + if (documentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentsIsMutable(); + documents_.set(index, value); + onChanged(); + } else { + documentsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder setDocuments( + int index, org.scip_code.scip.Document.Builder builderForValue) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.set(index, builderForValue.build()); + onChanged(); + } else { + documentsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder addDocuments(org.scip_code.scip.Document value) { + if (documentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentsIsMutable(); + documents_.add(value); + onChanged(); + } else { + documentsBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder addDocuments( + int index, org.scip_code.scip.Document value) { + if (documentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDocumentsIsMutable(); + documents_.add(index, value); + onChanged(); + } else { + documentsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder addDocuments( + org.scip_code.scip.Document.Builder builderForValue) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.add(builderForValue.build()); + onChanged(); + } else { + documentsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder addDocuments( + int index, org.scip_code.scip.Document.Builder builderForValue) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.add(index, builderForValue.build()); + onChanged(); + } else { + documentsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder addAllDocuments( + java.lang.Iterable values) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, documents_); + onChanged(); + } else { + documentsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder clearDocuments() { + if (documentsBuilder_ == null) { + documents_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + documentsBuilder_.clear(); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public Builder removeDocuments(int index) { + if (documentsBuilder_ == null) { + ensureDocumentsIsMutable(); + documents_.remove(index); + onChanged(); + } else { + documentsBuilder_.remove(index); + } + return this; + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public org.scip_code.scip.Document.Builder getDocumentsBuilder( + int index) { + return internalGetDocumentsFieldBuilder().getBuilder(index); + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public org.scip_code.scip.DocumentOrBuilder getDocumentsOrBuilder( + int index) { + if (documentsBuilder_ == null) { + return documents_.get(index); } else { + return documentsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public java.util.List + getDocumentsOrBuilderList() { + if (documentsBuilder_ != null) { + return documentsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(documents_); + } + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public org.scip_code.scip.Document.Builder addDocumentsBuilder() { + return internalGetDocumentsFieldBuilder().addBuilder( + org.scip_code.scip.Document.getDefaultInstance()); + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public org.scip_code.scip.Document.Builder addDocumentsBuilder( + int index) { + return internalGetDocumentsFieldBuilder().addBuilder( + index, org.scip_code.scip.Document.getDefaultInstance()); + } + /** + *
+     * Documents that belong to this index.
+     * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + public java.util.List + getDocumentsBuilderList() { + return internalGetDocumentsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Document, org.scip_code.scip.Document.Builder, org.scip_code.scip.DocumentOrBuilder> + internalGetDocumentsFieldBuilder() { + if (documentsBuilder_ == null) { + documentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Document, org.scip_code.scip.Document.Builder, org.scip_code.scip.DocumentOrBuilder>( + documents_, + ((bitField0_ & 0x00000002) != 0), + getParentForChildren(), + isClean()); + documents_ = null; + } + return documentsBuilder_; + } + + private java.util.List externalSymbols_ = + java.util.Collections.emptyList(); + private void ensureExternalSymbolsIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + externalSymbols_ = new java.util.ArrayList(externalSymbols_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.SymbolInformation, org.scip_code.scip.SymbolInformation.Builder, org.scip_code.scip.SymbolInformationOrBuilder> externalSymbolsBuilder_; + + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public java.util.List getExternalSymbolsList() { + if (externalSymbolsBuilder_ == null) { + return java.util.Collections.unmodifiableList(externalSymbols_); + } else { + return externalSymbolsBuilder_.getMessageList(); + } + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public int getExternalSymbolsCount() { + if (externalSymbolsBuilder_ == null) { + return externalSymbols_.size(); + } else { + return externalSymbolsBuilder_.getCount(); + } + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public org.scip_code.scip.SymbolInformation getExternalSymbols(int index) { + if (externalSymbolsBuilder_ == null) { + return externalSymbols_.get(index); + } else { + return externalSymbolsBuilder_.getMessage(index); + } + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder setExternalSymbols( + int index, org.scip_code.scip.SymbolInformation value) { + if (externalSymbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureExternalSymbolsIsMutable(); + externalSymbols_.set(index, value); + onChanged(); + } else { + externalSymbolsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder setExternalSymbols( + int index, org.scip_code.scip.SymbolInformation.Builder builderForValue) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.set(index, builderForValue.build()); + onChanged(); + } else { + externalSymbolsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder addExternalSymbols(org.scip_code.scip.SymbolInformation value) { + if (externalSymbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(value); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder addExternalSymbols( + int index, org.scip_code.scip.SymbolInformation value) { + if (externalSymbolsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(index, value); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder addExternalSymbols( + org.scip_code.scip.SymbolInformation.Builder builderForValue) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(builderForValue.build()); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder addExternalSymbols( + int index, org.scip_code.scip.SymbolInformation.Builder builderForValue) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.add(index, builderForValue.build()); + onChanged(); + } else { + externalSymbolsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder addAllExternalSymbols( + java.lang.Iterable values) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, externalSymbols_); + onChanged(); + } else { + externalSymbolsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder clearExternalSymbols() { + if (externalSymbolsBuilder_ == null) { + externalSymbols_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + externalSymbolsBuilder_.clear(); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public Builder removeExternalSymbols(int index) { + if (externalSymbolsBuilder_ == null) { + ensureExternalSymbolsIsMutable(); + externalSymbols_.remove(index); + onChanged(); + } else { + externalSymbolsBuilder_.remove(index); + } + return this; + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public org.scip_code.scip.SymbolInformation.Builder getExternalSymbolsBuilder( + int index) { + return internalGetExternalSymbolsFieldBuilder().getBuilder(index); + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public org.scip_code.scip.SymbolInformationOrBuilder getExternalSymbolsOrBuilder( + int index) { + if (externalSymbolsBuilder_ == null) { + return externalSymbols_.get(index); } else { + return externalSymbolsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public java.util.List + getExternalSymbolsOrBuilderList() { + if (externalSymbolsBuilder_ != null) { + return externalSymbolsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(externalSymbols_); + } + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public org.scip_code.scip.SymbolInformation.Builder addExternalSymbolsBuilder() { + return internalGetExternalSymbolsFieldBuilder().addBuilder( + org.scip_code.scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public org.scip_code.scip.SymbolInformation.Builder addExternalSymbolsBuilder( + int index) { + return internalGetExternalSymbolsFieldBuilder().addBuilder( + index, org.scip_code.scip.SymbolInformation.getDefaultInstance()); + } + /** + *
+     * (optional) Symbols that are referenced from this index but are defined in
+     * an external package (a separate `Index` message). Leave this field empty
+     * if you assume the external package will get indexed separately. If the
+     * external package won't get indexed for some reason then you can use this
+     * field to provide hover documentation for those external symbols.
+     * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + public java.util.List + getExternalSymbolsBuilderList() { + return internalGetExternalSymbolsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.SymbolInformation, org.scip_code.scip.SymbolInformation.Builder, org.scip_code.scip.SymbolInformationOrBuilder> + internalGetExternalSymbolsFieldBuilder() { + if (externalSymbolsBuilder_ == null) { + externalSymbolsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.SymbolInformation, org.scip_code.scip.SymbolInformation.Builder, org.scip_code.scip.SymbolInformationOrBuilder>( + externalSymbols_, + ((bitField0_ & 0x00000004) != 0), + getParentForChildren(), + isClean()); + externalSymbols_ = null; + } + return externalSymbolsBuilder_; + } + + // @@protoc_insertion_point(builder_scope:scip.Index) + } + + // @@protoc_insertion_point(class_scope:scip.Index) + private static final org.scip_code.scip.Index DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Index(); + } + + public static org.scip_code.scip.Index getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Index parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Index getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/IndexOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/IndexOrBuilder.java new file mode 100644 index 00000000..2d605ab1 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/IndexOrBuilder.java @@ -0,0 +1,147 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface IndexOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Index) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * Metadata about this index.
+   * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + * @return Whether the metadata field is set. + */ + boolean hasMetadata(); + /** + *
+   * Metadata about this index.
+   * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + * @return The metadata. + */ + org.scip_code.scip.Metadata getMetadata(); + /** + *
+   * Metadata about this index.
+   * 
+ * + * .scip.Metadata metadata = 1 [json_name = "metadata"]; + */ + org.scip_code.scip.MetadataOrBuilder getMetadataOrBuilder(); + + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + java.util.List + getDocumentsList(); + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + org.scip_code.scip.Document getDocuments(int index); + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + int getDocumentsCount(); + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + java.util.List + getDocumentsOrBuilderList(); + /** + *
+   * Documents that belong to this index.
+   * 
+ * + * repeated .scip.Document documents = 2 [json_name = "documents"]; + */ + org.scip_code.scip.DocumentOrBuilder getDocumentsOrBuilder( + int index); + + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + java.util.List + getExternalSymbolsList(); + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + org.scip_code.scip.SymbolInformation getExternalSymbols(int index); + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + int getExternalSymbolsCount(); + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + java.util.List + getExternalSymbolsOrBuilderList(); + /** + *
+   * (optional) Symbols that are referenced from this index but are defined in
+   * an external package (a separate `Index` message). Leave this field empty
+   * if you assume the external package will get indexed separately. If the
+   * external package won't get indexed for some reason then you can use this
+   * field to provide hover documentation for those external symbols.
+   * 
+ * + * repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"]; + */ + org.scip_code.scip.SymbolInformationOrBuilder getExternalSymbolsOrBuilder( + int index); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/Language.java b/bindings/java/src/main/java/org/scip_code/scip/Language.java new file mode 100644 index 00000000..3428ae46 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Language.java @@ -0,0 +1,1158 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Language standardises names of common programming languages that can be used
+ * for the `Document.language` field. The primary purpose of this enum is to
+ * prevent a situation where we have a single programming language ends up with
+ * multiple string representations. For example, the C++ language uses the name
+ * "CPP" in this enum and other names such as "cpp" are incompatible.
+ * Feel free to send a pull-request to add missing programming languages.
+ * 
+ * + * Protobuf enum {@code scip.Language} + */ +@com.google.protobuf.Generated +public enum Language + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedLanguage = 0; + */ + UnspecifiedLanguage(0), + /** + * ABAP = 60; + */ + ABAP(60), + /** + * Apex = 96; + */ + Apex(96), + /** + * APL = 49; + */ + APL(49), + /** + * Ada = 39; + */ + Ada(39), + /** + * Agda = 45; + */ + Agda(45), + /** + * AsciiDoc = 86; + */ + AsciiDoc(86), + /** + * Assembly = 58; + */ + Assembly(58), + /** + * Awk = 66; + */ + Awk(66), + /** + * Bat = 68; + */ + Bat(68), + /** + * BibTeX = 81; + */ + BibTeX(81), + /** + * C = 34; + */ + C(34), + /** + * COBOL = 59; + */ + COBOL(59), + /** + *
+   * C++ (the name "CPP" was chosen for consistency with LSP)
+   * 
+ * + * CPP = 35; + */ + CPP(35), + /** + * CSS = 26; + */ + CSS(26), + /** + * CSharp = 1; + */ + CSharp(1), + /** + * Clojure = 8; + */ + Clojure(8), + /** + * Coffeescript = 21; + */ + Coffeescript(21), + /** + * CommonLisp = 9; + */ + CommonLisp(9), + /** + * Coq = 47; + */ + Coq(47), + /** + * CUDA = 97; + */ + CUDA(97), + /** + * Dart = 3; + */ + Dart(3), + /** + * Delphi = 57; + */ + Delphi(57), + /** + * Diff = 88; + */ + Diff(88), + /** + * Dockerfile = 80; + */ + Dockerfile(80), + /** + * Dyalog = 50; + */ + Dyalog(50), + /** + * Elixir = 17; + */ + Elixir(17), + /** + * Erlang = 18; + */ + Erlang(18), + /** + * FSharp = 42; + */ + FSharp(42), + /** + * Fish = 65; + */ + Fish(65), + /** + * Flow = 24; + */ + Flow(24), + /** + * Fortran = 56; + */ + Fortran(56), + /** + * Git_Commit = 91; + */ + Git_Commit(91), + /** + * Git_Config = 89; + */ + Git_Config(89), + /** + * Git_Rebase = 92; + */ + Git_Rebase(92), + /** + * Go = 33; + */ + Go(33), + /** + * GraphQL = 98; + */ + GraphQL(98), + /** + * Groovy = 7; + */ + Groovy(7), + /** + * HTML = 30; + */ + HTML(30), + /** + * Hack = 20; + */ + Hack(20), + /** + * Handlebars = 90; + */ + Handlebars(90), + /** + * Haskell = 44; + */ + Haskell(44), + /** + * Idris = 46; + */ + Idris(46), + /** + * Ini = 72; + */ + Ini(72), + /** + * J = 51; + */ + J(51), + /** + * JSON = 75; + */ + JSON(75), + /** + * Java = 6; + */ + Java(6), + /** + * JavaScript = 22; + */ + JavaScript(22), + /** + * JavaScriptReact = 93; + */ + JavaScriptReact(93), + /** + * Jsonnet = 76; + */ + Jsonnet(76), + /** + * Julia = 55; + */ + Julia(55), + /** + * Justfile = 109; + */ + Justfile(109), + /** + * Kotlin = 4; + */ + Kotlin(4), + /** + * LaTeX = 83; + */ + LaTeX(83), + /** + * Lean = 48; + */ + Lean(48), + /** + * Less = 27; + */ + Less(27), + /** + * Lua = 12; + */ + Lua(12), + /** + * Luau = 108; + */ + Luau(108), + /** + * Makefile = 79; + */ + Makefile(79), + /** + * Markdown = 84; + */ + Markdown(84), + /** + * Matlab = 52; + */ + Matlab(52), + /** + *
+   * https://nickel-lang.org/
+   * 
+ * + * Nickel = 110; + */ + Nickel(110), + /** + * Nix = 77; + */ + Nix(77), + /** + * OCaml = 41; + */ + OCaml(41), + /** + * Objective_C = 36; + */ + Objective_C(36), + /** + * Objective_CPP = 37; + */ + Objective_CPP(37), + /** + * Pascal = 99; + */ + Pascal(99), + /** + * PHP = 19; + */ + PHP(19), + /** + * PLSQL = 70; + */ + PLSQL(70), + /** + * Perl = 13; + */ + Perl(13), + /** + * PowerShell = 67; + */ + PowerShell(67), + /** + * Prolog = 71; + */ + Prolog(71), + /** + * Protobuf = 100; + */ + Protobuf(100), + /** + * Python = 15; + */ + Python(15), + /** + * R = 54; + */ + R(54), + /** + * Racket = 11; + */ + Racket(11), + /** + * Raku = 14; + */ + Raku(14), + /** + * Razor = 62; + */ + Razor(62), + /** + *
+   * Internal language for testing SCIP
+   * 
+ * + * Repro = 102; + */ + Repro(102), + /** + * ReST = 85; + */ + ReST(85), + /** + * Ruby = 16; + */ + Ruby(16), + /** + * Rust = 40; + */ + Rust(40), + /** + * SAS = 61; + */ + SAS(61), + /** + * SCSS = 29; + */ + SCSS(29), + /** + * SML = 43; + */ + SML(43), + /** + * SQL = 69; + */ + SQL(69), + /** + * Sass = 28; + */ + Sass(28), + /** + * Scala = 5; + */ + Scala(5), + /** + * Scheme = 10; + */ + Scheme(10), + /** + *
+   * Bash
+   * 
+ * + * ShellScript = 64; + */ + ShellScript(64), + /** + * Skylark = 78; + */ + Skylark(78), + /** + * Slang = 107; + */ + Slang(107), + /** + * Solidity = 95; + */ + Solidity(95), + /** + * Svelte = 106; + */ + Svelte(106), + /** + * Swift = 2; + */ + Swift(2), + /** + * Tcl = 101; + */ + Tcl(101), + /** + * TOML = 73; + */ + TOML(73), + /** + * TeX = 82; + */ + TeX(82), + /** + * Thrift = 103; + */ + Thrift(103), + /** + * TypeScript = 23; + */ + TypeScript(23), + /** + * TypeScriptReact = 94; + */ + TypeScriptReact(94), + /** + * Verilog = 104; + */ + Verilog(104), + /** + * VHDL = 105; + */ + VHDL(105), + /** + * VisualBasic = 63; + */ + VisualBasic(63), + /** + * Vue = 25; + */ + Vue(25), + /** + * Wolfram = 53; + */ + Wolfram(53), + /** + * XML = 31; + */ + XML(31), + /** + * XSL = 32; + */ + XSL(32), + /** + * YAML = 74; + */ + YAML(74), + /** + *
+   * NextLanguage = 111;
+   * Steps add a new language:
+   * 1. Copy-paste the "NextLanguage = N" line above
+   * 2. Increment "NextLanguage = N" to "NextLanguage = N+1"
+   * 3. Replace "NextLanguage = N" with the name of the new language.
+   * 4. Move the new language to the correct line above using alphabetical order
+   * 5. (optional) Add a brief comment behind the language if the name is not self-explanatory
+   * 
+ * + * Zig = 38; + */ + Zig(38), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Language.class.getName()); + } + /** + * UnspecifiedLanguage = 0; + */ + public static final int UnspecifiedLanguage_VALUE = 0; + /** + * ABAP = 60; + */ + public static final int ABAP_VALUE = 60; + /** + * Apex = 96; + */ + public static final int Apex_VALUE = 96; + /** + * APL = 49; + */ + public static final int APL_VALUE = 49; + /** + * Ada = 39; + */ + public static final int Ada_VALUE = 39; + /** + * Agda = 45; + */ + public static final int Agda_VALUE = 45; + /** + * AsciiDoc = 86; + */ + public static final int AsciiDoc_VALUE = 86; + /** + * Assembly = 58; + */ + public static final int Assembly_VALUE = 58; + /** + * Awk = 66; + */ + public static final int Awk_VALUE = 66; + /** + * Bat = 68; + */ + public static final int Bat_VALUE = 68; + /** + * BibTeX = 81; + */ + public static final int BibTeX_VALUE = 81; + /** + * C = 34; + */ + public static final int C_VALUE = 34; + /** + * COBOL = 59; + */ + public static final int COBOL_VALUE = 59; + /** + *
+   * C++ (the name "CPP" was chosen for consistency with LSP)
+   * 
+ * + * CPP = 35; + */ + public static final int CPP_VALUE = 35; + /** + * CSS = 26; + */ + public static final int CSS_VALUE = 26; + /** + * CSharp = 1; + */ + public static final int CSharp_VALUE = 1; + /** + * Clojure = 8; + */ + public static final int Clojure_VALUE = 8; + /** + * Coffeescript = 21; + */ + public static final int Coffeescript_VALUE = 21; + /** + * CommonLisp = 9; + */ + public static final int CommonLisp_VALUE = 9; + /** + * Coq = 47; + */ + public static final int Coq_VALUE = 47; + /** + * CUDA = 97; + */ + public static final int CUDA_VALUE = 97; + /** + * Dart = 3; + */ + public static final int Dart_VALUE = 3; + /** + * Delphi = 57; + */ + public static final int Delphi_VALUE = 57; + /** + * Diff = 88; + */ + public static final int Diff_VALUE = 88; + /** + * Dockerfile = 80; + */ + public static final int Dockerfile_VALUE = 80; + /** + * Dyalog = 50; + */ + public static final int Dyalog_VALUE = 50; + /** + * Elixir = 17; + */ + public static final int Elixir_VALUE = 17; + /** + * Erlang = 18; + */ + public static final int Erlang_VALUE = 18; + /** + * FSharp = 42; + */ + public static final int FSharp_VALUE = 42; + /** + * Fish = 65; + */ + public static final int Fish_VALUE = 65; + /** + * Flow = 24; + */ + public static final int Flow_VALUE = 24; + /** + * Fortran = 56; + */ + public static final int Fortran_VALUE = 56; + /** + * Git_Commit = 91; + */ + public static final int Git_Commit_VALUE = 91; + /** + * Git_Config = 89; + */ + public static final int Git_Config_VALUE = 89; + /** + * Git_Rebase = 92; + */ + public static final int Git_Rebase_VALUE = 92; + /** + * Go = 33; + */ + public static final int Go_VALUE = 33; + /** + * GraphQL = 98; + */ + public static final int GraphQL_VALUE = 98; + /** + * Groovy = 7; + */ + public static final int Groovy_VALUE = 7; + /** + * HTML = 30; + */ + public static final int HTML_VALUE = 30; + /** + * Hack = 20; + */ + public static final int Hack_VALUE = 20; + /** + * Handlebars = 90; + */ + public static final int Handlebars_VALUE = 90; + /** + * Haskell = 44; + */ + public static final int Haskell_VALUE = 44; + /** + * Idris = 46; + */ + public static final int Idris_VALUE = 46; + /** + * Ini = 72; + */ + public static final int Ini_VALUE = 72; + /** + * J = 51; + */ + public static final int J_VALUE = 51; + /** + * JSON = 75; + */ + public static final int JSON_VALUE = 75; + /** + * Java = 6; + */ + public static final int Java_VALUE = 6; + /** + * JavaScript = 22; + */ + public static final int JavaScript_VALUE = 22; + /** + * JavaScriptReact = 93; + */ + public static final int JavaScriptReact_VALUE = 93; + /** + * Jsonnet = 76; + */ + public static final int Jsonnet_VALUE = 76; + /** + * Julia = 55; + */ + public static final int Julia_VALUE = 55; + /** + * Justfile = 109; + */ + public static final int Justfile_VALUE = 109; + /** + * Kotlin = 4; + */ + public static final int Kotlin_VALUE = 4; + /** + * LaTeX = 83; + */ + public static final int LaTeX_VALUE = 83; + /** + * Lean = 48; + */ + public static final int Lean_VALUE = 48; + /** + * Less = 27; + */ + public static final int Less_VALUE = 27; + /** + * Lua = 12; + */ + public static final int Lua_VALUE = 12; + /** + * Luau = 108; + */ + public static final int Luau_VALUE = 108; + /** + * Makefile = 79; + */ + public static final int Makefile_VALUE = 79; + /** + * Markdown = 84; + */ + public static final int Markdown_VALUE = 84; + /** + * Matlab = 52; + */ + public static final int Matlab_VALUE = 52; + /** + *
+   * https://nickel-lang.org/
+   * 
+ * + * Nickel = 110; + */ + public static final int Nickel_VALUE = 110; + /** + * Nix = 77; + */ + public static final int Nix_VALUE = 77; + /** + * OCaml = 41; + */ + public static final int OCaml_VALUE = 41; + /** + * Objective_C = 36; + */ + public static final int Objective_C_VALUE = 36; + /** + * Objective_CPP = 37; + */ + public static final int Objective_CPP_VALUE = 37; + /** + * Pascal = 99; + */ + public static final int Pascal_VALUE = 99; + /** + * PHP = 19; + */ + public static final int PHP_VALUE = 19; + /** + * PLSQL = 70; + */ + public static final int PLSQL_VALUE = 70; + /** + * Perl = 13; + */ + public static final int Perl_VALUE = 13; + /** + * PowerShell = 67; + */ + public static final int PowerShell_VALUE = 67; + /** + * Prolog = 71; + */ + public static final int Prolog_VALUE = 71; + /** + * Protobuf = 100; + */ + public static final int Protobuf_VALUE = 100; + /** + * Python = 15; + */ + public static final int Python_VALUE = 15; + /** + * R = 54; + */ + public static final int R_VALUE = 54; + /** + * Racket = 11; + */ + public static final int Racket_VALUE = 11; + /** + * Raku = 14; + */ + public static final int Raku_VALUE = 14; + /** + * Razor = 62; + */ + public static final int Razor_VALUE = 62; + /** + *
+   * Internal language for testing SCIP
+   * 
+ * + * Repro = 102; + */ + public static final int Repro_VALUE = 102; + /** + * ReST = 85; + */ + public static final int ReST_VALUE = 85; + /** + * Ruby = 16; + */ + public static final int Ruby_VALUE = 16; + /** + * Rust = 40; + */ + public static final int Rust_VALUE = 40; + /** + * SAS = 61; + */ + public static final int SAS_VALUE = 61; + /** + * SCSS = 29; + */ + public static final int SCSS_VALUE = 29; + /** + * SML = 43; + */ + public static final int SML_VALUE = 43; + /** + * SQL = 69; + */ + public static final int SQL_VALUE = 69; + /** + * Sass = 28; + */ + public static final int Sass_VALUE = 28; + /** + * Scala = 5; + */ + public static final int Scala_VALUE = 5; + /** + * Scheme = 10; + */ + public static final int Scheme_VALUE = 10; + /** + *
+   * Bash
+   * 
+ * + * ShellScript = 64; + */ + public static final int ShellScript_VALUE = 64; + /** + * Skylark = 78; + */ + public static final int Skylark_VALUE = 78; + /** + * Slang = 107; + */ + public static final int Slang_VALUE = 107; + /** + * Solidity = 95; + */ + public static final int Solidity_VALUE = 95; + /** + * Svelte = 106; + */ + public static final int Svelte_VALUE = 106; + /** + * Swift = 2; + */ + public static final int Swift_VALUE = 2; + /** + * Tcl = 101; + */ + public static final int Tcl_VALUE = 101; + /** + * TOML = 73; + */ + public static final int TOML_VALUE = 73; + /** + * TeX = 82; + */ + public static final int TeX_VALUE = 82; + /** + * Thrift = 103; + */ + public static final int Thrift_VALUE = 103; + /** + * TypeScript = 23; + */ + public static final int TypeScript_VALUE = 23; + /** + * TypeScriptReact = 94; + */ + public static final int TypeScriptReact_VALUE = 94; + /** + * Verilog = 104; + */ + public static final int Verilog_VALUE = 104; + /** + * VHDL = 105; + */ + public static final int VHDL_VALUE = 105; + /** + * VisualBasic = 63; + */ + public static final int VisualBasic_VALUE = 63; + /** + * Vue = 25; + */ + public static final int Vue_VALUE = 25; + /** + * Wolfram = 53; + */ + public static final int Wolfram_VALUE = 53; + /** + * XML = 31; + */ + public static final int XML_VALUE = 31; + /** + * XSL = 32; + */ + public static final int XSL_VALUE = 32; + /** + * YAML = 74; + */ + public static final int YAML_VALUE = 74; + /** + *
+   * NextLanguage = 111;
+   * Steps add a new language:
+   * 1. Copy-paste the "NextLanguage = N" line above
+   * 2. Increment "NextLanguage = N" to "NextLanguage = N+1"
+   * 3. Replace "NextLanguage = N" with the name of the new language.
+   * 4. Move the new language to the correct line above using alphabetical order
+   * 5. (optional) Add a brief comment behind the language if the name is not self-explanatory
+   * 
+ * + * Zig = 38; + */ + public static final int Zig_VALUE = 38; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Language valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Language forNumber(int value) { + switch (value) { + case 0: return UnspecifiedLanguage; + case 60: return ABAP; + case 96: return Apex; + case 49: return APL; + case 39: return Ada; + case 45: return Agda; + case 86: return AsciiDoc; + case 58: return Assembly; + case 66: return Awk; + case 68: return Bat; + case 81: return BibTeX; + case 34: return C; + case 59: return COBOL; + case 35: return CPP; + case 26: return CSS; + case 1: return CSharp; + case 8: return Clojure; + case 21: return Coffeescript; + case 9: return CommonLisp; + case 47: return Coq; + case 97: return CUDA; + case 3: return Dart; + case 57: return Delphi; + case 88: return Diff; + case 80: return Dockerfile; + case 50: return Dyalog; + case 17: return Elixir; + case 18: return Erlang; + case 42: return FSharp; + case 65: return Fish; + case 24: return Flow; + case 56: return Fortran; + case 91: return Git_Commit; + case 89: return Git_Config; + case 92: return Git_Rebase; + case 33: return Go; + case 98: return GraphQL; + case 7: return Groovy; + case 30: return HTML; + case 20: return Hack; + case 90: return Handlebars; + case 44: return Haskell; + case 46: return Idris; + case 72: return Ini; + case 51: return J; + case 75: return JSON; + case 6: return Java; + case 22: return JavaScript; + case 93: return JavaScriptReact; + case 76: return Jsonnet; + case 55: return Julia; + case 109: return Justfile; + case 4: return Kotlin; + case 83: return LaTeX; + case 48: return Lean; + case 27: return Less; + case 12: return Lua; + case 108: return Luau; + case 79: return Makefile; + case 84: return Markdown; + case 52: return Matlab; + case 110: return Nickel; + case 77: return Nix; + case 41: return OCaml; + case 36: return Objective_C; + case 37: return Objective_CPP; + case 99: return Pascal; + case 19: return PHP; + case 70: return PLSQL; + case 13: return Perl; + case 67: return PowerShell; + case 71: return Prolog; + case 100: return Protobuf; + case 15: return Python; + case 54: return R; + case 11: return Racket; + case 14: return Raku; + case 62: return Razor; + case 102: return Repro; + case 85: return ReST; + case 16: return Ruby; + case 40: return Rust; + case 61: return SAS; + case 29: return SCSS; + case 43: return SML; + case 69: return SQL; + case 28: return Sass; + case 5: return Scala; + case 10: return Scheme; + case 64: return ShellScript; + case 78: return Skylark; + case 107: return Slang; + case 95: return Solidity; + case 106: return Svelte; + case 2: return Swift; + case 101: return Tcl; + case 73: return TOML; + case 82: return TeX; + case 103: return Thrift; + case 23: return TypeScript; + case 94: return TypeScriptReact; + case 104: return Verilog; + case 105: return VHDL; + case 63: return VisualBasic; + case 25: return Vue; + case 53: return Wolfram; + case 31: return XML; + case 32: return XSL; + case 74: return YAML; + case 38: return Zig; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Language> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Language findValueByNumber(int number) { + return Language.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(7); + } + + private static final Language[] VALUES = values(); + + public static Language valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Language(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.Language) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/Metadata.java b/bindings/java/src/main/java/org/scip_code/scip/Metadata.java new file mode 100644 index 00000000..496cbf16 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Metadata.java @@ -0,0 +1,1039 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf type {@code scip.Metadata} + */ +@com.google.protobuf.Generated +public final class Metadata extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Metadata) + MetadataOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Metadata.class.getName()); + } + // Use Metadata.newBuilder() to construct. + private Metadata(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Metadata() { + version_ = 0; + projectRoot_ = ""; + textDocumentEncoding_ = 0; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Metadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Metadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Metadata.class, org.scip_code.scip.Metadata.Builder.class); + } + + private int bitField0_; + public static final int VERSION_FIELD_NUMBER = 1; + private int version_ = 0; + /** + *
+   * Which version of this protocol was used to generate this index?
+   * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @return The enum numeric value on the wire for version. + */ + @java.lang.Override public int getVersionValue() { + return version_; + } + /** + *
+   * Which version of this protocol was used to generate this index?
+   * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @return The version. + */ + @java.lang.Override public org.scip_code.scip.ProtocolVersion getVersion() { + org.scip_code.scip.ProtocolVersion result = org.scip_code.scip.ProtocolVersion.forNumber(version_); + return result == null ? org.scip_code.scip.ProtocolVersion.UNRECOGNIZED : result; + } + + public static final int TOOL_INFO_FIELD_NUMBER = 2; + private org.scip_code.scip.ToolInfo toolInfo_; + /** + *
+   * Information about the tool that produced this index.
+   * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + * @return Whether the toolInfo field is set. + */ + @java.lang.Override + public boolean hasToolInfo() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+   * Information about the tool that produced this index.
+   * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + * @return The toolInfo. + */ + @java.lang.Override + public org.scip_code.scip.ToolInfo getToolInfo() { + return toolInfo_ == null ? org.scip_code.scip.ToolInfo.getDefaultInstance() : toolInfo_; + } + /** + *
+   * Information about the tool that produced this index.
+   * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + @java.lang.Override + public org.scip_code.scip.ToolInfoOrBuilder getToolInfoOrBuilder() { + return toolInfo_ == null ? org.scip_code.scip.ToolInfo.getDefaultInstance() : toolInfo_; + } + + public static final int PROJECT_ROOT_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private volatile java.lang.Object projectRoot_ = ""; + /** + *
+   * URI-encoded absolute path to the root directory of this index. All
+   * documents in this index must appear in a subdirectory of this root
+   * directory.
+   * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @return The projectRoot. + */ + @java.lang.Override + public java.lang.String getProjectRoot() { + java.lang.Object ref = projectRoot_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + projectRoot_ = s; + return s; + } + } + /** + *
+   * URI-encoded absolute path to the root directory of this index. All
+   * documents in this index must appear in a subdirectory of this root
+   * directory.
+   * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @return The bytes for projectRoot. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getProjectRootBytes() { + java.lang.Object ref = projectRoot_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + projectRoot_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TEXT_DOCUMENT_ENCODING_FIELD_NUMBER = 4; + private int textDocumentEncoding_ = 0; + /** + *
+   * Text encoding of the source files on disk that are referenced from
+   * `Document.relative_path`. This value is unrelated to the `Document.text`
+   * field, which is a Protobuf string and hence must be UTF-8 encoded.
+   * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @return The enum numeric value on the wire for textDocumentEncoding. + */ + @java.lang.Override public int getTextDocumentEncodingValue() { + return textDocumentEncoding_; + } + /** + *
+   * Text encoding of the source files on disk that are referenced from
+   * `Document.relative_path`. This value is unrelated to the `Document.text`
+   * field, which is a Protobuf string and hence must be UTF-8 encoded.
+   * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @return The textDocumentEncoding. + */ + @java.lang.Override public org.scip_code.scip.TextEncoding getTextDocumentEncoding() { + org.scip_code.scip.TextEncoding result = org.scip_code.scip.TextEncoding.forNumber(textDocumentEncoding_); + return result == null ? org.scip_code.scip.TextEncoding.UNRECOGNIZED : result; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (version_ != org.scip_code.scip.ProtocolVersion.UnspecifiedProtocolVersion.getNumber()) { + output.writeEnum(1, version_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getToolInfo()); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(projectRoot_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, projectRoot_); + } + if (textDocumentEncoding_ != org.scip_code.scip.TextEncoding.UnspecifiedTextEncoding.getNumber()) { + output.writeEnum(4, textDocumentEncoding_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (version_ != org.scip_code.scip.ProtocolVersion.UnspecifiedProtocolVersion.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, version_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getToolInfo()); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(projectRoot_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(3, projectRoot_); + } + if (textDocumentEncoding_ != org.scip_code.scip.TextEncoding.UnspecifiedTextEncoding.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, textDocumentEncoding_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Metadata)) { + return super.equals(obj); + } + org.scip_code.scip.Metadata other = (org.scip_code.scip.Metadata) obj; + + if (version_ != other.version_) return false; + if (hasToolInfo() != other.hasToolInfo()) return false; + if (hasToolInfo()) { + if (!getToolInfo() + .equals(other.getToolInfo())) return false; + } + if (!getProjectRoot() + .equals(other.getProjectRoot())) return false; + if (textDocumentEncoding_ != other.textDocumentEncoding_) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + version_; + if (hasToolInfo()) { + hash = (37 * hash) + TOOL_INFO_FIELD_NUMBER; + hash = (53 * hash) + getToolInfo().hashCode(); + } + hash = (37 * hash) + PROJECT_ROOT_FIELD_NUMBER; + hash = (53 * hash) + getProjectRoot().hashCode(); + hash = (37 * hash) + TEXT_DOCUMENT_ENCODING_FIELD_NUMBER; + hash = (53 * hash) + textDocumentEncoding_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Metadata parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Metadata parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Metadata parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Metadata parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Metadata parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Metadata parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Metadata parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Metadata parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Metadata parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Metadata parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Metadata parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Metadata parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Metadata prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.Metadata} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Metadata) + org.scip_code.scip.MetadataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Metadata_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Metadata_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Metadata.class, org.scip_code.scip.Metadata.Builder.class); + } + + // Construct using org.scip_code.scip.Metadata.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetToolInfoFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + version_ = 0; + toolInfo_ = null; + if (toolInfoBuilder_ != null) { + toolInfoBuilder_.dispose(); + toolInfoBuilder_ = null; + } + projectRoot_ = ""; + textDocumentEncoding_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Metadata_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Metadata getDefaultInstanceForType() { + return org.scip_code.scip.Metadata.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Metadata build() { + org.scip_code.scip.Metadata result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Metadata buildPartial() { + org.scip_code.scip.Metadata result = new org.scip_code.scip.Metadata(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(org.scip_code.scip.Metadata result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.version_ = version_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.toolInfo_ = toolInfoBuilder_ == null + ? toolInfo_ + : toolInfoBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.projectRoot_ = projectRoot_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.textDocumentEncoding_ = textDocumentEncoding_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Metadata) { + return mergeFrom((org.scip_code.scip.Metadata)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Metadata other) { + if (other == org.scip_code.scip.Metadata.getDefaultInstance()) return this; + if (other.version_ != 0) { + setVersionValue(other.getVersionValue()); + } + if (other.hasToolInfo()) { + mergeToolInfo(other.getToolInfo()); + } + if (!other.getProjectRoot().isEmpty()) { + projectRoot_ = other.projectRoot_; + bitField0_ |= 0x00000004; + onChanged(); + } + if (other.textDocumentEncoding_ != 0) { + setTextDocumentEncodingValue(other.getTextDocumentEncodingValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + version_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 18: { + input.readMessage( + internalGetToolInfoFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + projectRoot_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + case 32: { + textDocumentEncoding_ = input.readEnum(); + bitField0_ |= 0x00000008; + break; + } // case 32 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int version_ = 0; + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @return The enum numeric value on the wire for version. + */ + @java.lang.Override public int getVersionValue() { + return version_; + } + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @param value The enum numeric value on the wire for version to set. + * @return This builder for chaining. + */ + public Builder setVersionValue(int value) { + version_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @return The version. + */ + @java.lang.Override + public org.scip_code.scip.ProtocolVersion getVersion() { + org.scip_code.scip.ProtocolVersion result = org.scip_code.scip.ProtocolVersion.forNumber(version_); + return result == null ? org.scip_code.scip.ProtocolVersion.UNRECOGNIZED : result; + } + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @param value The version to set. + * @return This builder for chaining. + */ + public Builder setVersion(org.scip_code.scip.ProtocolVersion value) { + if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000001; + version_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+     * Which version of this protocol was used to generate this index?
+     * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @return This builder for chaining. + */ + public Builder clearVersion() { + bitField0_ = (bitField0_ & ~0x00000001); + version_ = 0; + onChanged(); + return this; + } + + private org.scip_code.scip.ToolInfo toolInfo_; + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.ToolInfo, org.scip_code.scip.ToolInfo.Builder, org.scip_code.scip.ToolInfoOrBuilder> toolInfoBuilder_; + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + * @return Whether the toolInfo field is set. + */ + public boolean hasToolInfo() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + * @return The toolInfo. + */ + public org.scip_code.scip.ToolInfo getToolInfo() { + if (toolInfoBuilder_ == null) { + return toolInfo_ == null ? org.scip_code.scip.ToolInfo.getDefaultInstance() : toolInfo_; + } else { + return toolInfoBuilder_.getMessage(); + } + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + public Builder setToolInfo(org.scip_code.scip.ToolInfo value) { + if (toolInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + toolInfo_ = value; + } else { + toolInfoBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + public Builder setToolInfo( + org.scip_code.scip.ToolInfo.Builder builderForValue) { + if (toolInfoBuilder_ == null) { + toolInfo_ = builderForValue.build(); + } else { + toolInfoBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + public Builder mergeToolInfo(org.scip_code.scip.ToolInfo value) { + if (toolInfoBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && + toolInfo_ != null && + toolInfo_ != org.scip_code.scip.ToolInfo.getDefaultInstance()) { + getToolInfoBuilder().mergeFrom(value); + } else { + toolInfo_ = value; + } + } else { + toolInfoBuilder_.mergeFrom(value); + } + if (toolInfo_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + public Builder clearToolInfo() { + bitField0_ = (bitField0_ & ~0x00000002); + toolInfo_ = null; + if (toolInfoBuilder_ != null) { + toolInfoBuilder_.dispose(); + toolInfoBuilder_ = null; + } + onChanged(); + return this; + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + public org.scip_code.scip.ToolInfo.Builder getToolInfoBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return internalGetToolInfoFieldBuilder().getBuilder(); + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + public org.scip_code.scip.ToolInfoOrBuilder getToolInfoOrBuilder() { + if (toolInfoBuilder_ != null) { + return toolInfoBuilder_.getMessageOrBuilder(); + } else { + return toolInfo_ == null ? + org.scip_code.scip.ToolInfo.getDefaultInstance() : toolInfo_; + } + } + /** + *
+     * Information about the tool that produced this index.
+     * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.ToolInfo, org.scip_code.scip.ToolInfo.Builder, org.scip_code.scip.ToolInfoOrBuilder> + internalGetToolInfoFieldBuilder() { + if (toolInfoBuilder_ == null) { + toolInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.ToolInfo, org.scip_code.scip.ToolInfo.Builder, org.scip_code.scip.ToolInfoOrBuilder>( + getToolInfo(), + getParentForChildren(), + isClean()); + toolInfo_ = null; + } + return toolInfoBuilder_; + } + + private java.lang.Object projectRoot_ = ""; + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @return The projectRoot. + */ + public java.lang.String getProjectRoot() { + java.lang.Object ref = projectRoot_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + projectRoot_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @return The bytes for projectRoot. + */ + public com.google.protobuf.ByteString + getProjectRootBytes() { + java.lang.Object ref = projectRoot_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + projectRoot_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @param value The projectRoot to set. + * @return This builder for chaining. + */ + public Builder setProjectRoot( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + projectRoot_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @return This builder for chaining. + */ + public Builder clearProjectRoot() { + projectRoot_ = getDefaultInstance().getProjectRoot(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + *
+     * URI-encoded absolute path to the root directory of this index. All
+     * documents in this index must appear in a subdirectory of this root
+     * directory.
+     * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @param value The bytes for projectRoot to set. + * @return This builder for chaining. + */ + public Builder setProjectRootBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + projectRoot_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + private int textDocumentEncoding_ = 0; + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @return The enum numeric value on the wire for textDocumentEncoding. + */ + @java.lang.Override public int getTextDocumentEncodingValue() { + return textDocumentEncoding_; + } + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @param value The enum numeric value on the wire for textDocumentEncoding to set. + * @return This builder for chaining. + */ + public Builder setTextDocumentEncodingValue(int value) { + textDocumentEncoding_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @return The textDocumentEncoding. + */ + @java.lang.Override + public org.scip_code.scip.TextEncoding getTextDocumentEncoding() { + org.scip_code.scip.TextEncoding result = org.scip_code.scip.TextEncoding.forNumber(textDocumentEncoding_); + return result == null ? org.scip_code.scip.TextEncoding.UNRECOGNIZED : result; + } + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @param value The textDocumentEncoding to set. + * @return This builder for chaining. + */ + public Builder setTextDocumentEncoding(org.scip_code.scip.TextEncoding value) { + if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000008; + textDocumentEncoding_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+     * Text encoding of the source files on disk that are referenced from
+     * `Document.relative_path`. This value is unrelated to the `Document.text`
+     * field, which is a Protobuf string and hence must be UTF-8 encoded.
+     * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @return This builder for chaining. + */ + public Builder clearTextDocumentEncoding() { + bitField0_ = (bitField0_ & ~0x00000008); + textDocumentEncoding_ = 0; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.Metadata) + } + + // @@protoc_insertion_point(class_scope:scip.Metadata) + private static final org.scip_code.scip.Metadata DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Metadata(); + } + + public static org.scip_code.scip.Metadata getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Metadata parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Metadata getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/MetadataOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/MetadataOrBuilder.java new file mode 100644 index 00000000..83212b96 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/MetadataOrBuilder.java @@ -0,0 +1,105 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface MetadataOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Metadata) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * Which version of this protocol was used to generate this index?
+   * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @return The enum numeric value on the wire for version. + */ + int getVersionValue(); + /** + *
+   * Which version of this protocol was used to generate this index?
+   * 
+ * + * .scip.ProtocolVersion version = 1 [json_name = "version"]; + * @return The version. + */ + org.scip_code.scip.ProtocolVersion getVersion(); + + /** + *
+   * Information about the tool that produced this index.
+   * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + * @return Whether the toolInfo field is set. + */ + boolean hasToolInfo(); + /** + *
+   * Information about the tool that produced this index.
+   * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + * @return The toolInfo. + */ + org.scip_code.scip.ToolInfo getToolInfo(); + /** + *
+   * Information about the tool that produced this index.
+   * 
+ * + * .scip.ToolInfo tool_info = 2 [json_name = "toolInfo"]; + */ + org.scip_code.scip.ToolInfoOrBuilder getToolInfoOrBuilder(); + + /** + *
+   * URI-encoded absolute path to the root directory of this index. All
+   * documents in this index must appear in a subdirectory of this root
+   * directory.
+   * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @return The projectRoot. + */ + java.lang.String getProjectRoot(); + /** + *
+   * URI-encoded absolute path to the root directory of this index. All
+   * documents in this index must appear in a subdirectory of this root
+   * directory.
+   * 
+ * + * string project_root = 3 [json_name = "projectRoot"]; + * @return The bytes for projectRoot. + */ + com.google.protobuf.ByteString + getProjectRootBytes(); + + /** + *
+   * Text encoding of the source files on disk that are referenced from
+   * `Document.relative_path`. This value is unrelated to the `Document.text`
+   * field, which is a Protobuf string and hence must be UTF-8 encoded.
+   * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @return The enum numeric value on the wire for textDocumentEncoding. + */ + int getTextDocumentEncodingValue(); + /** + *
+   * Text encoding of the source files on disk that are referenced from
+   * `Document.relative_path`. This value is unrelated to the `Document.text`
+   * field, which is a Protobuf string and hence must be UTF-8 encoded.
+   * 
+ * + * .scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"]; + * @return The textDocumentEncoding. + */ + org.scip_code.scip.TextEncoding getTextDocumentEncoding(); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/Occurrence.java b/bindings/java/src/main/java/org/scip_code/scip/Occurrence.java new file mode 100644 index 00000000..c80833f4 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Occurrence.java @@ -0,0 +1,2696 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Occurrence associates a source position with a symbol and/or highlighting
+ * information.
+ *
+ * If possible, indexers should try to bundle logically related information
+ * across occurrences into a single occurrence to reduce payload sizes.
+ * 
+ * + * Protobuf type {@code scip.Occurrence} + */ +@com.google.protobuf.Generated +public final class Occurrence extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Occurrence) + OccurrenceOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Occurrence.class.getName()); + } + // Use Occurrence.newBuilder() to construct. + private Occurrence(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Occurrence() { + range_ = emptyIntList(); + symbol_ = ""; + overrideDocumentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + syntaxKind_ = 0; + diagnostics_ = java.util.Collections.emptyList(); + enclosingRange_ = emptyIntList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Occurrence_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Occurrence_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Occurrence.class, org.scip_code.scip.Occurrence.Builder.class); + } + + public static final int RANGE_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private com.google.protobuf.Internal.IntList range_ = + emptyIntList(); + /** + *
+   * Half-open [start, end) range of this occurrence. Must be exactly three or four
+   * elements:
+   *
+   * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+   * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+   * is inferred to have the same value as the start line.
+   *
+   * It is allowed for the range to be empty (i.e. start==end).
+   *
+   * Line numbers and characters are always 0-based. Make sure to increment the
+   * line/character values before displaying them in an editor-like UI because
+   * editors conventionally use 1-based numbers.
+   *
+   * The 'character' value is interpreted based on the PositionEncoding for
+   * the Document.
+   *
+   * Historical note: the original draft of this schema had a `Range` message
+   * type with `start` and `end` fields of type `Position`, mirroring LSP.
+   * Benchmarks revealed that this encoding was inefficient and that we could
+   * reduce the total payload size of an index by 50% by using `repeated int32`
+   * instead. The `repeated int32` encoding is admittedly more embarrassing to
+   * work with in some programming languages but we hope the performance
+   * improvements make up for it.
+   * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @return A list containing the range. + */ + @java.lang.Override + public java.util.List + getRangeList() { + return range_; + } + /** + *
+   * Half-open [start, end) range of this occurrence. Must be exactly three or four
+   * elements:
+   *
+   * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+   * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+   * is inferred to have the same value as the start line.
+   *
+   * It is allowed for the range to be empty (i.e. start==end).
+   *
+   * Line numbers and characters are always 0-based. Make sure to increment the
+   * line/character values before displaying them in an editor-like UI because
+   * editors conventionally use 1-based numbers.
+   *
+   * The 'character' value is interpreted based on the PositionEncoding for
+   * the Document.
+   *
+   * Historical note: the original draft of this schema had a `Range` message
+   * type with `start` and `end` fields of type `Position`, mirroring LSP.
+   * Benchmarks revealed that this encoding was inefficient and that we could
+   * reduce the total payload size of an index by 50% by using `repeated int32`
+   * instead. The `repeated int32` encoding is admittedly more embarrassing to
+   * work with in some programming languages but we hope the performance
+   * improvements make up for it.
+   * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @return The count of range. + */ + public int getRangeCount() { + return range_.size(); + } + /** + *
+   * Half-open [start, end) range of this occurrence. Must be exactly three or four
+   * elements:
+   *
+   * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+   * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+   * is inferred to have the same value as the start line.
+   *
+   * It is allowed for the range to be empty (i.e. start==end).
+   *
+   * Line numbers and characters are always 0-based. Make sure to increment the
+   * line/character values before displaying them in an editor-like UI because
+   * editors conventionally use 1-based numbers.
+   *
+   * The 'character' value is interpreted based on the PositionEncoding for
+   * the Document.
+   *
+   * Historical note: the original draft of this schema had a `Range` message
+   * type with `start` and `end` fields of type `Position`, mirroring LSP.
+   * Benchmarks revealed that this encoding was inefficient and that we could
+   * reduce the total payload size of an index by 50% by using `repeated int32`
+   * instead. The `repeated int32` encoding is admittedly more embarrassing to
+   * work with in some programming languages but we hope the performance
+   * improvements make up for it.
+   * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @param index The index of the element to return. + * @return The range at the given index. + */ + public int getRange(int index) { + return range_.getInt(index); + } + private int rangeMemoizedSerializedSize = -1; + + public static final int SYMBOL_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object symbol_ = ""; + /** + *
+   * (optional) The symbol that appears at this position. See
+   * `SymbolInformation.symbol` for how to format symbols as strings.
+   * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @return The symbol. + */ + @java.lang.Override + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } + } + /** + *
+   * (optional) The symbol that appears at this position. See
+   * `SymbolInformation.symbol` for how to format symbols as strings.
+   * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SYMBOL_ROLES_FIELD_NUMBER = 3; + private int symbolRoles_ = 0; + /** + *
+   * (optional) Bitset containing `SymbolRole`s in this occurrence.
+   * See `SymbolRole`'s documentation for how to read and write this field.
+   * 
+ * + * int32 symbol_roles = 3 [json_name = "symbolRoles"]; + * @return The symbolRoles. + */ + @java.lang.Override + public int getSymbolRoles() { + return symbolRoles_; + } + + public static final int OVERRIDE_DOCUMENTATION_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringArrayList overrideDocumentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @return A list containing the overrideDocumentation. + */ + public com.google.protobuf.ProtocolStringList + getOverrideDocumentationList() { + return overrideDocumentation_; + } + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @return The count of overrideDocumentation. + */ + public int getOverrideDocumentationCount() { + return overrideDocumentation_.size(); + } + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param index The index of the element to return. + * @return The overrideDocumentation at the given index. + */ + public java.lang.String getOverrideDocumentation(int index) { + return overrideDocumentation_.get(index); + } + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param index The index of the value to return. + * @return The bytes of the overrideDocumentation at the given index. + */ + public com.google.protobuf.ByteString + getOverrideDocumentationBytes(int index) { + return overrideDocumentation_.getByteString(index); + } + + public static final int SYNTAX_KIND_FIELD_NUMBER = 5; + private int syntaxKind_ = 0; + /** + *
+   * (optional) What syntax highlighting class should be used for this range?
+   * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @return The enum numeric value on the wire for syntaxKind. + */ + @java.lang.Override public int getSyntaxKindValue() { + return syntaxKind_; + } + /** + *
+   * (optional) What syntax highlighting class should be used for this range?
+   * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @return The syntaxKind. + */ + @java.lang.Override public org.scip_code.scip.SyntaxKind getSyntaxKind() { + org.scip_code.scip.SyntaxKind result = org.scip_code.scip.SyntaxKind.forNumber(syntaxKind_); + return result == null ? org.scip_code.scip.SyntaxKind.UNRECOGNIZED : result; + } + + public static final int DIAGNOSTICS_FIELD_NUMBER = 6; + @SuppressWarnings("serial") + private java.util.List diagnostics_; + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + @java.lang.Override + public java.util.List getDiagnosticsList() { + return diagnostics_; + } + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + @java.lang.Override + public java.util.List + getDiagnosticsOrBuilderList() { + return diagnostics_; + } + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + @java.lang.Override + public int getDiagnosticsCount() { + return diagnostics_.size(); + } + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + @java.lang.Override + public org.scip_code.scip.Diagnostic getDiagnostics(int index) { + return diagnostics_.get(index); + } + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + @java.lang.Override + public org.scip_code.scip.DiagnosticOrBuilder getDiagnosticsOrBuilder( + int index) { + return diagnostics_.get(index); + } + + public static final int ENCLOSING_RANGE_FIELD_NUMBER = 7; + @SuppressWarnings("serial") + private com.google.protobuf.Internal.IntList enclosingRange_ = + emptyIntList(); + /** + *
+   * (optional) Using the same encoding as the sibling `range` field, half-open
+   * source range of the nearest non-trivial enclosing AST node. This range must
+   * enclose the `range` field. Example applications that make use of the
+   * enclosing_range field:
+   *
+   * - Call hierarchies: to determine what symbols are references from the body
+   * of a function
+   * - Symbol outline: to display breadcrumbs from the cursor position to the
+   * root of the file
+   * - Expand selection: to select the nearest enclosing AST node.
+   * - Highlight range: to indicate the AST expression that is associated with a
+   * hover popover
+   *
+   * For definition occurrences, the enclosing range should indicate the
+   * start/end bounds of the entire definition AST node, including
+   * documentation.
+   * ```
+   * const n = 3
+   * ^ range
+   * ^^^^^^^^^^^ enclosing_range
+   *
+   * /** Parses the string into something */
+   * ^ enclosing_range start --------------------------------------|
+   * function parse(input string): string {                        |
+   * ^^^^^ range                                          |
+   * return input.slice(n)                                     |
+   * }                                                             |
+   * ^ enclosing_range end <---------------------------------------|
+   * ```
+   *
+   * Any attributes/decorators/attached macros should also be part of the
+   * enclosing range.
+   *
+   * ```python
+   * @cache
+   * ^ enclosing_range start---------------------|
+   * def factorial(n):                           |
+   * return n * factorial(n-1) if n else 1   |
+   * < enclosing_range end-----------------------|
+   *
+   * ```
+   *
+   * For reference occurrences, the enclosing range should indicate the start/end
+   * bounds of the parent expression.
+   * ```
+   * const a = a.b
+   * ^ range
+   * ^^^ enclosing_range
+   * const b = a.b(41).f(42).g(43)
+   * ^ range
+   * ^^^^^^^^^^^^^ enclosing_range
+   * ```
+   * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @return A list containing the enclosingRange. + */ + @java.lang.Override + public java.util.List + getEnclosingRangeList() { + return enclosingRange_; + } + /** + *
+   * (optional) Using the same encoding as the sibling `range` field, half-open
+   * source range of the nearest non-trivial enclosing AST node. This range must
+   * enclose the `range` field. Example applications that make use of the
+   * enclosing_range field:
+   *
+   * - Call hierarchies: to determine what symbols are references from the body
+   * of a function
+   * - Symbol outline: to display breadcrumbs from the cursor position to the
+   * root of the file
+   * - Expand selection: to select the nearest enclosing AST node.
+   * - Highlight range: to indicate the AST expression that is associated with a
+   * hover popover
+   *
+   * For definition occurrences, the enclosing range should indicate the
+   * start/end bounds of the entire definition AST node, including
+   * documentation.
+   * ```
+   * const n = 3
+   * ^ range
+   * ^^^^^^^^^^^ enclosing_range
+   *
+   * /** Parses the string into something */
+   * ^ enclosing_range start --------------------------------------|
+   * function parse(input string): string {                        |
+   * ^^^^^ range                                          |
+   * return input.slice(n)                                     |
+   * }                                                             |
+   * ^ enclosing_range end <---------------------------------------|
+   * ```
+   *
+   * Any attributes/decorators/attached macros should also be part of the
+   * enclosing range.
+   *
+   * ```python
+   * @cache
+   * ^ enclosing_range start---------------------|
+   * def factorial(n):                           |
+   * return n * factorial(n-1) if n else 1   |
+   * < enclosing_range end-----------------------|
+   *
+   * ```
+   *
+   * For reference occurrences, the enclosing range should indicate the start/end
+   * bounds of the parent expression.
+   * ```
+   * const a = a.b
+   * ^ range
+   * ^^^ enclosing_range
+   * const b = a.b(41).f(42).g(43)
+   * ^ range
+   * ^^^^^^^^^^^^^ enclosing_range
+   * ```
+   * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @return The count of enclosingRange. + */ + public int getEnclosingRangeCount() { + return enclosingRange_.size(); + } + /** + *
+   * (optional) Using the same encoding as the sibling `range` field, half-open
+   * source range of the nearest non-trivial enclosing AST node. This range must
+   * enclose the `range` field. Example applications that make use of the
+   * enclosing_range field:
+   *
+   * - Call hierarchies: to determine what symbols are references from the body
+   * of a function
+   * - Symbol outline: to display breadcrumbs from the cursor position to the
+   * root of the file
+   * - Expand selection: to select the nearest enclosing AST node.
+   * - Highlight range: to indicate the AST expression that is associated with a
+   * hover popover
+   *
+   * For definition occurrences, the enclosing range should indicate the
+   * start/end bounds of the entire definition AST node, including
+   * documentation.
+   * ```
+   * const n = 3
+   * ^ range
+   * ^^^^^^^^^^^ enclosing_range
+   *
+   * /** Parses the string into something */
+   * ^ enclosing_range start --------------------------------------|
+   * function parse(input string): string {                        |
+   * ^^^^^ range                                          |
+   * return input.slice(n)                                     |
+   * }                                                             |
+   * ^ enclosing_range end <---------------------------------------|
+   * ```
+   *
+   * Any attributes/decorators/attached macros should also be part of the
+   * enclosing range.
+   *
+   * ```python
+   * @cache
+   * ^ enclosing_range start---------------------|
+   * def factorial(n):                           |
+   * return n * factorial(n-1) if n else 1   |
+   * < enclosing_range end-----------------------|
+   *
+   * ```
+   *
+   * For reference occurrences, the enclosing range should indicate the start/end
+   * bounds of the parent expression.
+   * ```
+   * const a = a.b
+   * ^ range
+   * ^^^ enclosing_range
+   * const b = a.b(41).f(42).g(43)
+   * ^ range
+   * ^^^^^^^^^^^^^ enclosing_range
+   * ```
+   * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @param index The index of the element to return. + * @return The enclosingRange at the given index. + */ + public int getEnclosingRange(int index) { + return enclosingRange_.getInt(index); + } + private int enclosingRangeMemoizedSerializedSize = -1; + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (getRangeList().size() > 0) { + output.writeUInt32NoTag(10); + output.writeUInt32NoTag(rangeMemoizedSerializedSize); + } + for (int i = 0; i < range_.size(); i++) { + output.writeInt32NoTag(range_.getInt(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(symbol_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, symbol_); + } + if (symbolRoles_ != 0) { + output.writeInt32(3, symbolRoles_); + } + for (int i = 0; i < overrideDocumentation_.size(); i++) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, overrideDocumentation_.getRaw(i)); + } + if (syntaxKind_ != org.scip_code.scip.SyntaxKind.UnspecifiedSyntaxKind.getNumber()) { + output.writeEnum(5, syntaxKind_); + } + for (int i = 0; i < diagnostics_.size(); i++) { + output.writeMessage(6, diagnostics_.get(i)); + } + if (getEnclosingRangeList().size() > 0) { + output.writeUInt32NoTag(58); + output.writeUInt32NoTag(enclosingRangeMemoizedSerializedSize); + } + for (int i = 0; i < enclosingRange_.size(); i++) { + output.writeInt32NoTag(enclosingRange_.getInt(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < range_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(range_.getInt(i)); + } + size += dataSize; + if (!getRangeList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + rangeMemoizedSerializedSize = dataSize; + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(symbol_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, symbol_); + } + if (symbolRoles_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, symbolRoles_); + } + { + int dataSize = 0; + for (int i = 0; i < overrideDocumentation_.size(); i++) { + dataSize += computeStringSizeNoTag(overrideDocumentation_.getRaw(i)); + } + size += dataSize; + size += 1 * getOverrideDocumentationList().size(); + } + if (syntaxKind_ != org.scip_code.scip.SyntaxKind.UnspecifiedSyntaxKind.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, syntaxKind_); + } + for (int i = 0; i < diagnostics_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, diagnostics_.get(i)); + } + { + int dataSize = 0; + for (int i = 0; i < enclosingRange_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(enclosingRange_.getInt(i)); + } + size += dataSize; + if (!getEnclosingRangeList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + enclosingRangeMemoizedSerializedSize = dataSize; + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Occurrence)) { + return super.equals(obj); + } + org.scip_code.scip.Occurrence other = (org.scip_code.scip.Occurrence) obj; + + if (!getRangeList() + .equals(other.getRangeList())) return false; + if (!getSymbol() + .equals(other.getSymbol())) return false; + if (getSymbolRoles() + != other.getSymbolRoles()) return false; + if (!getOverrideDocumentationList() + .equals(other.getOverrideDocumentationList())) return false; + if (syntaxKind_ != other.syntaxKind_) return false; + if (!getDiagnosticsList() + .equals(other.getDiagnosticsList())) return false; + if (!getEnclosingRangeList() + .equals(other.getEnclosingRangeList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getRangeCount() > 0) { + hash = (37 * hash) + RANGE_FIELD_NUMBER; + hash = (53 * hash) + getRangeList().hashCode(); + } + hash = (37 * hash) + SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getSymbol().hashCode(); + hash = (37 * hash) + SYMBOL_ROLES_FIELD_NUMBER; + hash = (53 * hash) + getSymbolRoles(); + if (getOverrideDocumentationCount() > 0) { + hash = (37 * hash) + OVERRIDE_DOCUMENTATION_FIELD_NUMBER; + hash = (53 * hash) + getOverrideDocumentationList().hashCode(); + } + hash = (37 * hash) + SYNTAX_KIND_FIELD_NUMBER; + hash = (53 * hash) + syntaxKind_; + if (getDiagnosticsCount() > 0) { + hash = (37 * hash) + DIAGNOSTICS_FIELD_NUMBER; + hash = (53 * hash) + getDiagnosticsList().hashCode(); + } + if (getEnclosingRangeCount() > 0) { + hash = (37 * hash) + ENCLOSING_RANGE_FIELD_NUMBER; + hash = (53 * hash) + getEnclosingRangeList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Occurrence parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Occurrence parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Occurrence parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Occurrence parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Occurrence parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Occurrence parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Occurrence parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Occurrence parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Occurrence parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Occurrence parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Occurrence parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Occurrence parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Occurrence prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Occurrence associates a source position with a symbol and/or highlighting
+   * information.
+   *
+   * If possible, indexers should try to bundle logically related information
+   * across occurrences into a single occurrence to reduce payload sizes.
+   * 
+ * + * Protobuf type {@code scip.Occurrence} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Occurrence) + org.scip_code.scip.OccurrenceOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Occurrence_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Occurrence_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Occurrence.class, org.scip_code.scip.Occurrence.Builder.class); + } + + // Construct using org.scip_code.scip.Occurrence.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + range_ = emptyIntList(); + symbol_ = ""; + symbolRoles_ = 0; + overrideDocumentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + syntaxKind_ = 0; + if (diagnosticsBuilder_ == null) { + diagnostics_ = java.util.Collections.emptyList(); + } else { + diagnostics_ = null; + diagnosticsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); + enclosingRange_ = emptyIntList(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Occurrence_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Occurrence getDefaultInstanceForType() { + return org.scip_code.scip.Occurrence.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Occurrence build() { + org.scip_code.scip.Occurrence result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Occurrence buildPartial() { + org.scip_code.scip.Occurrence result = new org.scip_code.scip.Occurrence(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(org.scip_code.scip.Occurrence result) { + if (diagnosticsBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0)) { + diagnostics_ = java.util.Collections.unmodifiableList(diagnostics_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.diagnostics_ = diagnostics_; + } else { + result.diagnostics_ = diagnosticsBuilder_.build(); + } + } + + private void buildPartial0(org.scip_code.scip.Occurrence result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + range_.makeImmutable(); + result.range_ = range_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.symbol_ = symbol_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.symbolRoles_ = symbolRoles_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + overrideDocumentation_.makeImmutable(); + result.overrideDocumentation_ = overrideDocumentation_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.syntaxKind_ = syntaxKind_; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + enclosingRange_.makeImmutable(); + result.enclosingRange_ = enclosingRange_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Occurrence) { + return mergeFrom((org.scip_code.scip.Occurrence)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Occurrence other) { + if (other == org.scip_code.scip.Occurrence.getDefaultInstance()) return this; + if (!other.range_.isEmpty()) { + if (range_.isEmpty()) { + range_ = other.range_; + range_.makeImmutable(); + bitField0_ |= 0x00000001; + } else { + ensureRangeIsMutable(); + range_.addAll(other.range_); + } + onChanged(); + } + if (!other.getSymbol().isEmpty()) { + symbol_ = other.symbol_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (other.getSymbolRoles() != 0) { + setSymbolRoles(other.getSymbolRoles()); + } + if (!other.overrideDocumentation_.isEmpty()) { + if (overrideDocumentation_.isEmpty()) { + overrideDocumentation_ = other.overrideDocumentation_; + bitField0_ |= 0x00000008; + } else { + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.addAll(other.overrideDocumentation_); + } + onChanged(); + } + if (other.syntaxKind_ != 0) { + setSyntaxKindValue(other.getSyntaxKindValue()); + } + if (diagnosticsBuilder_ == null) { + if (!other.diagnostics_.isEmpty()) { + if (diagnostics_.isEmpty()) { + diagnostics_ = other.diagnostics_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureDiagnosticsIsMutable(); + diagnostics_.addAll(other.diagnostics_); + } + onChanged(); + } + } else { + if (!other.diagnostics_.isEmpty()) { + if (diagnosticsBuilder_.isEmpty()) { + diagnosticsBuilder_.dispose(); + diagnosticsBuilder_ = null; + diagnostics_ = other.diagnostics_; + bitField0_ = (bitField0_ & ~0x00000020); + diagnosticsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetDiagnosticsFieldBuilder() : null; + } else { + diagnosticsBuilder_.addAllMessages(other.diagnostics_); + } + } + } + if (!other.enclosingRange_.isEmpty()) { + if (enclosingRange_.isEmpty()) { + enclosingRange_ = other.enclosingRange_; + enclosingRange_.makeImmutable(); + bitField0_ |= 0x00000040; + } else { + ensureEnclosingRangeIsMutable(); + enclosingRange_.addAll(other.enclosingRange_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int v = input.readInt32(); + ensureRangeIsMutable(); + range_.addInt(v); + break; + } // case 8 + case 10: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + ensureRangeIsMutable(); + while (input.getBytesUntilLimit() > 0) { + range_.addInt(input.readInt32()); + } + input.popLimit(limit); + break; + } // case 10 + case 18: { + symbol_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 24: { + symbolRoles_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: { + java.lang.String s = input.readStringRequireUtf8(); + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.add(s); + break; + } // case 34 + case 40: { + syntaxKind_ = input.readEnum(); + bitField0_ |= 0x00000010; + break; + } // case 40 + case 50: { + org.scip_code.scip.Diagnostic m = + input.readMessage( + org.scip_code.scip.Diagnostic.parser(), + extensionRegistry); + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.add(m); + } else { + diagnosticsBuilder_.addMessage(m); + } + break; + } // case 50 + case 56: { + int v = input.readInt32(); + ensureEnclosingRangeIsMutable(); + enclosingRange_.addInt(v); + break; + } // case 56 + case 58: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + ensureEnclosingRangeIsMutable(); + while (input.getBytesUntilLimit() > 0) { + enclosingRange_.addInt(input.readInt32()); + } + input.popLimit(limit); + break; + } // case 58 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private com.google.protobuf.Internal.IntList range_ = emptyIntList(); + private void ensureRangeIsMutable() { + if (!range_.isModifiable()) { + range_ = makeMutableCopy(range_); + } + bitField0_ |= 0x00000001; + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     *
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     * is inferred to have the same value as the start line.
+     *
+     * It is allowed for the range to be empty (i.e. start==end).
+     *
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     *
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     *
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @return A list containing the range. + */ + public java.util.List + getRangeList() { + range_.makeImmutable(); + return range_; + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     *
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     * is inferred to have the same value as the start line.
+     *
+     * It is allowed for the range to be empty (i.e. start==end).
+     *
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     *
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     *
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @return The count of range. + */ + public int getRangeCount() { + return range_.size(); + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     *
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     * is inferred to have the same value as the start line.
+     *
+     * It is allowed for the range to be empty (i.e. start==end).
+     *
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     *
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     *
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @param index The index of the element to return. + * @return The range at the given index. + */ + public int getRange(int index) { + return range_.getInt(index); + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     *
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     * is inferred to have the same value as the start line.
+     *
+     * It is allowed for the range to be empty (i.e. start==end).
+     *
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     *
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     *
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @param index The index to set the value at. + * @param value The range to set. + * @return This builder for chaining. + */ + public Builder setRange( + int index, int value) { + + ensureRangeIsMutable(); + range_.setInt(index, value); + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     *
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     * is inferred to have the same value as the start line.
+     *
+     * It is allowed for the range to be empty (i.e. start==end).
+     *
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     *
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     *
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @param value The range to add. + * @return This builder for chaining. + */ + public Builder addRange(int value) { + + ensureRangeIsMutable(); + range_.addInt(value); + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     *
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     * is inferred to have the same value as the start line.
+     *
+     * It is allowed for the range to be empty (i.e. start==end).
+     *
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     *
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     *
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @param values The range to add. + * @return This builder for chaining. + */ + public Builder addAllRange( + java.lang.Iterable values) { + ensureRangeIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, range_); + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Half-open [start, end) range of this occurrence. Must be exactly three or four
+     * elements:
+     *
+     * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+     * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+     * is inferred to have the same value as the start line.
+     *
+     * It is allowed for the range to be empty (i.e. start==end).
+     *
+     * Line numbers and characters are always 0-based. Make sure to increment the
+     * line/character values before displaying them in an editor-like UI because
+     * editors conventionally use 1-based numbers.
+     *
+     * The 'character' value is interpreted based on the PositionEncoding for
+     * the Document.
+     *
+     * Historical note: the original draft of this schema had a `Range` message
+     * type with `start` and `end` fields of type `Position`, mirroring LSP.
+     * Benchmarks revealed that this encoding was inefficient and that we could
+     * reduce the total payload size of an index by 50% by using `repeated int32`
+     * instead. The `repeated int32` encoding is admittedly more embarrassing to
+     * work with in some programming languages but we hope the performance
+     * improvements make up for it.
+     * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @return This builder for chaining. + */ + public Builder clearRange() { + range_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + private java.lang.Object symbol_ = ""; + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @return The symbol. + */ + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @param value The symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbol( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + symbol_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @return This builder for chaining. + */ + public Builder clearSymbol() { + symbol_ = getDefaultInstance().getSymbol(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+     * (optional) The symbol that appears at this position. See
+     * `SymbolInformation.symbol` for how to format symbols as strings.
+     * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @param value The bytes for symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + symbol_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private int symbolRoles_ ; + /** + *
+     * (optional) Bitset containing `SymbolRole`s in this occurrence.
+     * See `SymbolRole`'s documentation for how to read and write this field.
+     * 
+ * + * int32 symbol_roles = 3 [json_name = "symbolRoles"]; + * @return The symbolRoles. + */ + @java.lang.Override + public int getSymbolRoles() { + return symbolRoles_; + } + /** + *
+     * (optional) Bitset containing `SymbolRole`s in this occurrence.
+     * See `SymbolRole`'s documentation for how to read and write this field.
+     * 
+ * + * int32 symbol_roles = 3 [json_name = "symbolRoles"]; + * @param value The symbolRoles to set. + * @return This builder for chaining. + */ + public Builder setSymbolRoles(int value) { + + symbolRoles_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * (optional) Bitset containing `SymbolRole`s in this occurrence.
+     * See `SymbolRole`'s documentation for how to read and write this field.
+     * 
+ * + * int32 symbol_roles = 3 [json_name = "symbolRoles"]; + * @return This builder for chaining. + */ + public Builder clearSymbolRoles() { + bitField0_ = (bitField0_ & ~0x00000004); + symbolRoles_ = 0; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringArrayList overrideDocumentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + private void ensureOverrideDocumentationIsMutable() { + if (!overrideDocumentation_.isModifiable()) { + overrideDocumentation_ = new com.google.protobuf.LazyStringArrayList(overrideDocumentation_); + } + bitField0_ |= 0x00000008; + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @return A list containing the overrideDocumentation. + */ + public com.google.protobuf.ProtocolStringList + getOverrideDocumentationList() { + overrideDocumentation_.makeImmutable(); + return overrideDocumentation_; + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @return The count of overrideDocumentation. + */ + public int getOverrideDocumentationCount() { + return overrideDocumentation_.size(); + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param index The index of the element to return. + * @return The overrideDocumentation at the given index. + */ + public java.lang.String getOverrideDocumentation(int index) { + return overrideDocumentation_.get(index); + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param index The index of the value to return. + * @return The bytes of the overrideDocumentation at the given index. + */ + public com.google.protobuf.ByteString + getOverrideDocumentationBytes(int index) { + return overrideDocumentation_.getByteString(index); + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param index The index to set the value at. + * @param value The overrideDocumentation to set. + * @return This builder for chaining. + */ + public Builder setOverrideDocumentation( + int index, java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.set(index, value); + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param value The overrideDocumentation to add. + * @return This builder for chaining. + */ + public Builder addOverrideDocumentation( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.add(value); + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param values The overrideDocumentation to add. + * @return This builder for chaining. + */ + public Builder addAllOverrideDocumentation( + java.lang.Iterable values) { + ensureOverrideDocumentationIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, overrideDocumentation_); + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @return This builder for chaining. + */ + public Builder clearOverrideDocumentation() { + overrideDocumentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008);; + onChanged(); + return this; + } + /** + *
+     * (optional) CommonMark-formatted documentation for this specific range. If
+     * empty, the `Symbol.documentation` field is used instead. One example
+     * where this field might be useful is when the symbol represents a generic
+     * function (with abstract type parameters such as `List<T>`) and at this
+     * occurrence we know the exact values (such as `List<String>`).
+     *
+     * This field can also be used for dynamically or gradually typed languages,
+     * which commonly allow for type-changing assignment.
+     * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param value The bytes of the overrideDocumentation to add. + * @return This builder for chaining. + */ + public Builder addOverrideDocumentationBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + ensureOverrideDocumentationIsMutable(); + overrideDocumentation_.add(value); + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + private int syntaxKind_ = 0; + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @return The enum numeric value on the wire for syntaxKind. + */ + @java.lang.Override public int getSyntaxKindValue() { + return syntaxKind_; + } + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @param value The enum numeric value on the wire for syntaxKind to set. + * @return This builder for chaining. + */ + public Builder setSyntaxKindValue(int value) { + syntaxKind_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @return The syntaxKind. + */ + @java.lang.Override + public org.scip_code.scip.SyntaxKind getSyntaxKind() { + org.scip_code.scip.SyntaxKind result = org.scip_code.scip.SyntaxKind.forNumber(syntaxKind_); + return result == null ? org.scip_code.scip.SyntaxKind.UNRECOGNIZED : result; + } + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @param value The syntaxKind to set. + * @return This builder for chaining. + */ + public Builder setSyntaxKind(org.scip_code.scip.SyntaxKind value) { + if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000010; + syntaxKind_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+     * (optional) What syntax highlighting class should be used for this range?
+     * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @return This builder for chaining. + */ + public Builder clearSyntaxKind() { + bitField0_ = (bitField0_ & ~0x00000010); + syntaxKind_ = 0; + onChanged(); + return this; + } + + private java.util.List diagnostics_ = + java.util.Collections.emptyList(); + private void ensureDiagnosticsIsMutable() { + if (!((bitField0_ & 0x00000020) != 0)) { + diagnostics_ = new java.util.ArrayList(diagnostics_); + bitField0_ |= 0x00000020; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Diagnostic, org.scip_code.scip.Diagnostic.Builder, org.scip_code.scip.DiagnosticOrBuilder> diagnosticsBuilder_; + + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public java.util.List getDiagnosticsList() { + if (diagnosticsBuilder_ == null) { + return java.util.Collections.unmodifiableList(diagnostics_); + } else { + return diagnosticsBuilder_.getMessageList(); + } + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public int getDiagnosticsCount() { + if (diagnosticsBuilder_ == null) { + return diagnostics_.size(); + } else { + return diagnosticsBuilder_.getCount(); + } + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public org.scip_code.scip.Diagnostic getDiagnostics(int index) { + if (diagnosticsBuilder_ == null) { + return diagnostics_.get(index); + } else { + return diagnosticsBuilder_.getMessage(index); + } + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder setDiagnostics( + int index, org.scip_code.scip.Diagnostic value) { + if (diagnosticsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDiagnosticsIsMutable(); + diagnostics_.set(index, value); + onChanged(); + } else { + diagnosticsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder setDiagnostics( + int index, org.scip_code.scip.Diagnostic.Builder builderForValue) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.set(index, builderForValue.build()); + onChanged(); + } else { + diagnosticsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder addDiagnostics(org.scip_code.scip.Diagnostic value) { + if (diagnosticsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDiagnosticsIsMutable(); + diagnostics_.add(value); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder addDiagnostics( + int index, org.scip_code.scip.Diagnostic value) { + if (diagnosticsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDiagnosticsIsMutable(); + diagnostics_.add(index, value); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder addDiagnostics( + org.scip_code.scip.Diagnostic.Builder builderForValue) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.add(builderForValue.build()); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder addDiagnostics( + int index, org.scip_code.scip.Diagnostic.Builder builderForValue) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.add(index, builderForValue.build()); + onChanged(); + } else { + diagnosticsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder addAllDiagnostics( + java.lang.Iterable values) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, diagnostics_); + onChanged(); + } else { + diagnosticsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder clearDiagnostics() { + if (diagnosticsBuilder_ == null) { + diagnostics_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + } else { + diagnosticsBuilder_.clear(); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public Builder removeDiagnostics(int index) { + if (diagnosticsBuilder_ == null) { + ensureDiagnosticsIsMutable(); + diagnostics_.remove(index); + onChanged(); + } else { + diagnosticsBuilder_.remove(index); + } + return this; + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public org.scip_code.scip.Diagnostic.Builder getDiagnosticsBuilder( + int index) { + return internalGetDiagnosticsFieldBuilder().getBuilder(index); + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public org.scip_code.scip.DiagnosticOrBuilder getDiagnosticsOrBuilder( + int index) { + if (diagnosticsBuilder_ == null) { + return diagnostics_.get(index); } else { + return diagnosticsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public java.util.List + getDiagnosticsOrBuilderList() { + if (diagnosticsBuilder_ != null) { + return diagnosticsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(diagnostics_); + } + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public org.scip_code.scip.Diagnostic.Builder addDiagnosticsBuilder() { + return internalGetDiagnosticsFieldBuilder().addBuilder( + org.scip_code.scip.Diagnostic.getDefaultInstance()); + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public org.scip_code.scip.Diagnostic.Builder addDiagnosticsBuilder( + int index) { + return internalGetDiagnosticsFieldBuilder().addBuilder( + index, org.scip_code.scip.Diagnostic.getDefaultInstance()); + } + /** + *
+     * (optional) Diagnostics that have been reported for this specific range.
+     * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + public java.util.List + getDiagnosticsBuilderList() { + return internalGetDiagnosticsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Diagnostic, org.scip_code.scip.Diagnostic.Builder, org.scip_code.scip.DiagnosticOrBuilder> + internalGetDiagnosticsFieldBuilder() { + if (diagnosticsBuilder_ == null) { + diagnosticsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Diagnostic, org.scip_code.scip.Diagnostic.Builder, org.scip_code.scip.DiagnosticOrBuilder>( + diagnostics_, + ((bitField0_ & 0x00000020) != 0), + getParentForChildren(), + isClean()); + diagnostics_ = null; + } + return diagnosticsBuilder_; + } + + private com.google.protobuf.Internal.IntList enclosingRange_ = emptyIntList(); + private void ensureEnclosingRangeIsMutable() { + if (!enclosingRange_.isModifiable()) { + enclosingRange_ = makeMutableCopy(enclosingRange_); + } + bitField0_ |= 0x00000040; + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     *
+     * - Call hierarchies: to determine what symbols are references from the body
+     * of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     * root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     * hover popover
+     *
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     * ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     *
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     * ^^^^^ range                                          |
+     * return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     *
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     *
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     * return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     *
+     * ```
+     *
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     * ^ range
+     * ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     * ^ range
+     * ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @return A list containing the enclosingRange. + */ + public java.util.List + getEnclosingRangeList() { + enclosingRange_.makeImmutable(); + return enclosingRange_; + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     *
+     * - Call hierarchies: to determine what symbols are references from the body
+     * of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     * root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     * hover popover
+     *
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     * ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     *
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     * ^^^^^ range                                          |
+     * return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     *
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     *
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     * return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     *
+     * ```
+     *
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     * ^ range
+     * ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     * ^ range
+     * ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @return The count of enclosingRange. + */ + public int getEnclosingRangeCount() { + return enclosingRange_.size(); + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     *
+     * - Call hierarchies: to determine what symbols are references from the body
+     * of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     * root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     * hover popover
+     *
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     * ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     *
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     * ^^^^^ range                                          |
+     * return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     *
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     *
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     * return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     *
+     * ```
+     *
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     * ^ range
+     * ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     * ^ range
+     * ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @param index The index of the element to return. + * @return The enclosingRange at the given index. + */ + public int getEnclosingRange(int index) { + return enclosingRange_.getInt(index); + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     *
+     * - Call hierarchies: to determine what symbols are references from the body
+     * of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     * root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     * hover popover
+     *
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     * ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     *
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     * ^^^^^ range                                          |
+     * return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     *
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     *
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     * return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     *
+     * ```
+     *
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     * ^ range
+     * ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     * ^ range
+     * ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @param index The index to set the value at. + * @param value The enclosingRange to set. + * @return This builder for chaining. + */ + public Builder setEnclosingRange( + int index, int value) { + + ensureEnclosingRangeIsMutable(); + enclosingRange_.setInt(index, value); + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     *
+     * - Call hierarchies: to determine what symbols are references from the body
+     * of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     * root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     * hover popover
+     *
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     * ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     *
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     * ^^^^^ range                                          |
+     * return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     *
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     *
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     * return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     *
+     * ```
+     *
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     * ^ range
+     * ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     * ^ range
+     * ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @param value The enclosingRange to add. + * @return This builder for chaining. + */ + public Builder addEnclosingRange(int value) { + + ensureEnclosingRangeIsMutable(); + enclosingRange_.addInt(value); + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     *
+     * - Call hierarchies: to determine what symbols are references from the body
+     * of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     * root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     * hover popover
+     *
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     * ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     *
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     * ^^^^^ range                                          |
+     * return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     *
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     *
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     * return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     *
+     * ```
+     *
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     * ^ range
+     * ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     * ^ range
+     * ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @param values The enclosingRange to add. + * @return This builder for chaining. + */ + public Builder addAllEnclosingRange( + java.lang.Iterable values) { + ensureEnclosingRangeIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, enclosingRange_); + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
+     * (optional) Using the same encoding as the sibling `range` field, half-open
+     * source range of the nearest non-trivial enclosing AST node. This range must
+     * enclose the `range` field. Example applications that make use of the
+     * enclosing_range field:
+     *
+     * - Call hierarchies: to determine what symbols are references from the body
+     * of a function
+     * - Symbol outline: to display breadcrumbs from the cursor position to the
+     * root of the file
+     * - Expand selection: to select the nearest enclosing AST node.
+     * - Highlight range: to indicate the AST expression that is associated with a
+     * hover popover
+     *
+     * For definition occurrences, the enclosing range should indicate the
+     * start/end bounds of the entire definition AST node, including
+     * documentation.
+     * ```
+     * const n = 3
+     * ^ range
+     * ^^^^^^^^^^^ enclosing_range
+     *
+     * /** Parses the string into something */
+     * ^ enclosing_range start --------------------------------------|
+     * function parse(input string): string {                        |
+     * ^^^^^ range                                          |
+     * return input.slice(n)                                     |
+     * }                                                             |
+     * ^ enclosing_range end <---------------------------------------|
+     * ```
+     *
+     * Any attributes/decorators/attached macros should also be part of the
+     * enclosing range.
+     *
+     * ```python
+     * @cache
+     * ^ enclosing_range start---------------------|
+     * def factorial(n):                           |
+     * return n * factorial(n-1) if n else 1   |
+     * < enclosing_range end-----------------------|
+     *
+     * ```
+     *
+     * For reference occurrences, the enclosing range should indicate the start/end
+     * bounds of the parent expression.
+     * ```
+     * const a = a.b
+     * ^ range
+     * ^^^ enclosing_range
+     * const b = a.b(41).f(42).g(43)
+     * ^ range
+     * ^^^^^^^^^^^^^ enclosing_range
+     * ```
+     * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @return This builder for chaining. + */ + public Builder clearEnclosingRange() { + enclosingRange_ = emptyIntList(); + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.Occurrence) + } + + // @@protoc_insertion_point(class_scope:scip.Occurrence) + private static final org.scip_code.scip.Occurrence DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Occurrence(); + } + + public static org.scip_code.scip.Occurrence getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Occurrence parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Occurrence getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/OccurrenceOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/OccurrenceOrBuilder.java new file mode 100644 index 00000000..4a2d8251 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/OccurrenceOrBuilder.java @@ -0,0 +1,454 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface OccurrenceOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Occurrence) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * Half-open [start, end) range of this occurrence. Must be exactly three or four
+   * elements:
+   *
+   * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+   * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+   * is inferred to have the same value as the start line.
+   *
+   * It is allowed for the range to be empty (i.e. start==end).
+   *
+   * Line numbers and characters are always 0-based. Make sure to increment the
+   * line/character values before displaying them in an editor-like UI because
+   * editors conventionally use 1-based numbers.
+   *
+   * The 'character' value is interpreted based on the PositionEncoding for
+   * the Document.
+   *
+   * Historical note: the original draft of this schema had a `Range` message
+   * type with `start` and `end` fields of type `Position`, mirroring LSP.
+   * Benchmarks revealed that this encoding was inefficient and that we could
+   * reduce the total payload size of an index by 50% by using `repeated int32`
+   * instead. The `repeated int32` encoding is admittedly more embarrassing to
+   * work with in some programming languages but we hope the performance
+   * improvements make up for it.
+   * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @return A list containing the range. + */ + java.util.List getRangeList(); + /** + *
+   * Half-open [start, end) range of this occurrence. Must be exactly three or four
+   * elements:
+   *
+   * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+   * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+   * is inferred to have the same value as the start line.
+   *
+   * It is allowed for the range to be empty (i.e. start==end).
+   *
+   * Line numbers and characters are always 0-based. Make sure to increment the
+   * line/character values before displaying them in an editor-like UI because
+   * editors conventionally use 1-based numbers.
+   *
+   * The 'character' value is interpreted based on the PositionEncoding for
+   * the Document.
+   *
+   * Historical note: the original draft of this schema had a `Range` message
+   * type with `start` and `end` fields of type `Position`, mirroring LSP.
+   * Benchmarks revealed that this encoding was inefficient and that we could
+   * reduce the total payload size of an index by 50% by using `repeated int32`
+   * instead. The `repeated int32` encoding is admittedly more embarrassing to
+   * work with in some programming languages but we hope the performance
+   * improvements make up for it.
+   * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @return The count of range. + */ + int getRangeCount(); + /** + *
+   * Half-open [start, end) range of this occurrence. Must be exactly three or four
+   * elements:
+   *
+   * - Four elements: `[startLine, startCharacter, endLine, endCharacter]`
+   * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line
+   * is inferred to have the same value as the start line.
+   *
+   * It is allowed for the range to be empty (i.e. start==end).
+   *
+   * Line numbers and characters are always 0-based. Make sure to increment the
+   * line/character values before displaying them in an editor-like UI because
+   * editors conventionally use 1-based numbers.
+   *
+   * The 'character' value is interpreted based on the PositionEncoding for
+   * the Document.
+   *
+   * Historical note: the original draft of this schema had a `Range` message
+   * type with `start` and `end` fields of type `Position`, mirroring LSP.
+   * Benchmarks revealed that this encoding was inefficient and that we could
+   * reduce the total payload size of an index by 50% by using `repeated int32`
+   * instead. The `repeated int32` encoding is admittedly more embarrassing to
+   * work with in some programming languages but we hope the performance
+   * improvements make up for it.
+   * 
+ * + * repeated int32 range = 1 [json_name = "range"]; + * @param index The index of the element to return. + * @return The range at the given index. + */ + int getRange(int index); + + /** + *
+   * (optional) The symbol that appears at this position. See
+   * `SymbolInformation.symbol` for how to format symbols as strings.
+   * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @return The symbol. + */ + java.lang.String getSymbol(); + /** + *
+   * (optional) The symbol that appears at this position. See
+   * `SymbolInformation.symbol` for how to format symbols as strings.
+   * 
+ * + * string symbol = 2 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + com.google.protobuf.ByteString + getSymbolBytes(); + + /** + *
+   * (optional) Bitset containing `SymbolRole`s in this occurrence.
+   * See `SymbolRole`'s documentation for how to read and write this field.
+   * 
+ * + * int32 symbol_roles = 3 [json_name = "symbolRoles"]; + * @return The symbolRoles. + */ + int getSymbolRoles(); + + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @return A list containing the overrideDocumentation. + */ + java.util.List + getOverrideDocumentationList(); + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @return The count of overrideDocumentation. + */ + int getOverrideDocumentationCount(); + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param index The index of the element to return. + * @return The overrideDocumentation at the given index. + */ + java.lang.String getOverrideDocumentation(int index); + /** + *
+   * (optional) CommonMark-formatted documentation for this specific range. If
+   * empty, the `Symbol.documentation` field is used instead. One example
+   * where this field might be useful is when the symbol represents a generic
+   * function (with abstract type parameters such as `List<T>`) and at this
+   * occurrence we know the exact values (such as `List<String>`).
+   *
+   * This field can also be used for dynamically or gradually typed languages,
+   * which commonly allow for type-changing assignment.
+   * 
+ * + * repeated string override_documentation = 4 [json_name = "overrideDocumentation"]; + * @param index The index of the value to return. + * @return The bytes of the overrideDocumentation at the given index. + */ + com.google.protobuf.ByteString + getOverrideDocumentationBytes(int index); + + /** + *
+   * (optional) What syntax highlighting class should be used for this range?
+   * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @return The enum numeric value on the wire for syntaxKind. + */ + int getSyntaxKindValue(); + /** + *
+   * (optional) What syntax highlighting class should be used for this range?
+   * 
+ * + * .scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"]; + * @return The syntaxKind. + */ + org.scip_code.scip.SyntaxKind getSyntaxKind(); + + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + java.util.List + getDiagnosticsList(); + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + org.scip_code.scip.Diagnostic getDiagnostics(int index); + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + int getDiagnosticsCount(); + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + java.util.List + getDiagnosticsOrBuilderList(); + /** + *
+   * (optional) Diagnostics that have been reported for this specific range.
+   * 
+ * + * repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"]; + */ + org.scip_code.scip.DiagnosticOrBuilder getDiagnosticsOrBuilder( + int index); + + /** + *
+   * (optional) Using the same encoding as the sibling `range` field, half-open
+   * source range of the nearest non-trivial enclosing AST node. This range must
+   * enclose the `range` field. Example applications that make use of the
+   * enclosing_range field:
+   *
+   * - Call hierarchies: to determine what symbols are references from the body
+   * of a function
+   * - Symbol outline: to display breadcrumbs from the cursor position to the
+   * root of the file
+   * - Expand selection: to select the nearest enclosing AST node.
+   * - Highlight range: to indicate the AST expression that is associated with a
+   * hover popover
+   *
+   * For definition occurrences, the enclosing range should indicate the
+   * start/end bounds of the entire definition AST node, including
+   * documentation.
+   * ```
+   * const n = 3
+   * ^ range
+   * ^^^^^^^^^^^ enclosing_range
+   *
+   * /** Parses the string into something */
+   * ^ enclosing_range start --------------------------------------|
+   * function parse(input string): string {                        |
+   * ^^^^^ range                                          |
+   * return input.slice(n)                                     |
+   * }                                                             |
+   * ^ enclosing_range end <---------------------------------------|
+   * ```
+   *
+   * Any attributes/decorators/attached macros should also be part of the
+   * enclosing range.
+   *
+   * ```python
+   * @cache
+   * ^ enclosing_range start---------------------|
+   * def factorial(n):                           |
+   * return n * factorial(n-1) if n else 1   |
+   * < enclosing_range end-----------------------|
+   *
+   * ```
+   *
+   * For reference occurrences, the enclosing range should indicate the start/end
+   * bounds of the parent expression.
+   * ```
+   * const a = a.b
+   * ^ range
+   * ^^^ enclosing_range
+   * const b = a.b(41).f(42).g(43)
+   * ^ range
+   * ^^^^^^^^^^^^^ enclosing_range
+   * ```
+   * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @return A list containing the enclosingRange. + */ + java.util.List getEnclosingRangeList(); + /** + *
+   * (optional) Using the same encoding as the sibling `range` field, half-open
+   * source range of the nearest non-trivial enclosing AST node. This range must
+   * enclose the `range` field. Example applications that make use of the
+   * enclosing_range field:
+   *
+   * - Call hierarchies: to determine what symbols are references from the body
+   * of a function
+   * - Symbol outline: to display breadcrumbs from the cursor position to the
+   * root of the file
+   * - Expand selection: to select the nearest enclosing AST node.
+   * - Highlight range: to indicate the AST expression that is associated with a
+   * hover popover
+   *
+   * For definition occurrences, the enclosing range should indicate the
+   * start/end bounds of the entire definition AST node, including
+   * documentation.
+   * ```
+   * const n = 3
+   * ^ range
+   * ^^^^^^^^^^^ enclosing_range
+   *
+   * /** Parses the string into something */
+   * ^ enclosing_range start --------------------------------------|
+   * function parse(input string): string {                        |
+   * ^^^^^ range                                          |
+   * return input.slice(n)                                     |
+   * }                                                             |
+   * ^ enclosing_range end <---------------------------------------|
+   * ```
+   *
+   * Any attributes/decorators/attached macros should also be part of the
+   * enclosing range.
+   *
+   * ```python
+   * @cache
+   * ^ enclosing_range start---------------------|
+   * def factorial(n):                           |
+   * return n * factorial(n-1) if n else 1   |
+   * < enclosing_range end-----------------------|
+   *
+   * ```
+   *
+   * For reference occurrences, the enclosing range should indicate the start/end
+   * bounds of the parent expression.
+   * ```
+   * const a = a.b
+   * ^ range
+   * ^^^ enclosing_range
+   * const b = a.b(41).f(42).g(43)
+   * ^ range
+   * ^^^^^^^^^^^^^ enclosing_range
+   * ```
+   * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @return The count of enclosingRange. + */ + int getEnclosingRangeCount(); + /** + *
+   * (optional) Using the same encoding as the sibling `range` field, half-open
+   * source range of the nearest non-trivial enclosing AST node. This range must
+   * enclose the `range` field. Example applications that make use of the
+   * enclosing_range field:
+   *
+   * - Call hierarchies: to determine what symbols are references from the body
+   * of a function
+   * - Symbol outline: to display breadcrumbs from the cursor position to the
+   * root of the file
+   * - Expand selection: to select the nearest enclosing AST node.
+   * - Highlight range: to indicate the AST expression that is associated with a
+   * hover popover
+   *
+   * For definition occurrences, the enclosing range should indicate the
+   * start/end bounds of the entire definition AST node, including
+   * documentation.
+   * ```
+   * const n = 3
+   * ^ range
+   * ^^^^^^^^^^^ enclosing_range
+   *
+   * /** Parses the string into something */
+   * ^ enclosing_range start --------------------------------------|
+   * function parse(input string): string {                        |
+   * ^^^^^ range                                          |
+   * return input.slice(n)                                     |
+   * }                                                             |
+   * ^ enclosing_range end <---------------------------------------|
+   * ```
+   *
+   * Any attributes/decorators/attached macros should also be part of the
+   * enclosing range.
+   *
+   * ```python
+   * @cache
+   * ^ enclosing_range start---------------------|
+   * def factorial(n):                           |
+   * return n * factorial(n-1) if n else 1   |
+   * < enclosing_range end-----------------------|
+   *
+   * ```
+   *
+   * For reference occurrences, the enclosing range should indicate the start/end
+   * bounds of the parent expression.
+   * ```
+   * const a = a.b
+   * ^ range
+   * ^^^ enclosing_range
+   * const b = a.b(41).f(42).g(43)
+   * ^ range
+   * ^^^^^^^^^^^^^ enclosing_range
+   * ```
+   * 
+ * + * repeated int32 enclosing_range = 7 [json_name = "enclosingRange"]; + * @param index The index of the element to return. + * @return The enclosingRange at the given index. + */ + int getEnclosingRange(int index); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/Package.java b/bindings/java/src/main/java/org/scip_code/scip/Package.java new file mode 100644 index 00000000..9898f798 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Package.java @@ -0,0 +1,786 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Unit of packaging and distribution.
+ *
+ * NOTE: This corresponds to a module in Go and JVM languages.
+ * 
+ * + * Protobuf type {@code scip.Package} + */ +@com.google.protobuf.Generated +public final class Package extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Package) + PackageOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Package.class.getName()); + } + // Use Package.newBuilder() to construct. + private Package(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Package() { + manager_ = ""; + name_ = ""; + version_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Package_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Package_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Package.class, org.scip_code.scip.Package.Builder.class); + } + + public static final int MANAGER_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object manager_ = ""; + /** + * string manager = 1 [json_name = "manager"]; + * @return The manager. + */ + @java.lang.Override + public java.lang.String getManager() { + java.lang.Object ref = manager_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + manager_ = s; + return s; + } + } + /** + * string manager = 1 [json_name = "manager"]; + * @return The bytes for manager. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getManagerBytes() { + java.lang.Object ref = manager_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + manager_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int NAME_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + /** + * string name = 2 [json_name = "name"]; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + * string name = 2 [json_name = "name"]; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int VERSION_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private volatile java.lang.Object version_ = ""; + /** + * string version = 3 [json_name = "version"]; + * @return The version. + */ + @java.lang.Override + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } + } + /** + * string version = 3 [json_name = "version"]; + * @return The bytes for version. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(manager_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, manager_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, version_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(manager_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, manager_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(3, version_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Package)) { + return super.equals(obj); + } + org.scip_code.scip.Package other = (org.scip_code.scip.Package) obj; + + if (!getManager() + .equals(other.getManager())) return false; + if (!getName() + .equals(other.getName())) return false; + if (!getVersion() + .equals(other.getVersion())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + MANAGER_FIELD_NUMBER; + hash = (53 * hash) + getManager().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + getVersion().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Package parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Package parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Package parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Package parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Package parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Package parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Package parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Package parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Package parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Package parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Package parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Package parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Package prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Unit of packaging and distribution.
+   *
+   * NOTE: This corresponds to a module in Go and JVM languages.
+   * 
+ * + * Protobuf type {@code scip.Package} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Package) + org.scip_code.scip.PackageOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Package_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Package_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Package.class, org.scip_code.scip.Package.Builder.class); + } + + // Construct using org.scip_code.scip.Package.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + manager_ = ""; + name_ = ""; + version_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Package_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Package getDefaultInstanceForType() { + return org.scip_code.scip.Package.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Package build() { + org.scip_code.scip.Package result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Package buildPartial() { + org.scip_code.scip.Package result = new org.scip_code.scip.Package(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(org.scip_code.scip.Package result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.manager_ = manager_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.version_ = version_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Package) { + return mergeFrom((org.scip_code.scip.Package)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Package other) { + if (other == org.scip_code.scip.Package.getDefaultInstance()) return this; + if (!other.getManager().isEmpty()) { + manager_ = other.manager_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.getVersion().isEmpty()) { + version_ = other.version_; + bitField0_ |= 0x00000004; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + manager_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + version_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000004; + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object manager_ = ""; + /** + * string manager = 1 [json_name = "manager"]; + * @return The manager. + */ + public java.lang.String getManager() { + java.lang.Object ref = manager_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + manager_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string manager = 1 [json_name = "manager"]; + * @return The bytes for manager. + */ + public com.google.protobuf.ByteString + getManagerBytes() { + java.lang.Object ref = manager_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + manager_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string manager = 1 [json_name = "manager"]; + * @param value The manager to set. + * @return This builder for chaining. + */ + public Builder setManager( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + manager_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string manager = 1 [json_name = "manager"]; + * @return This builder for chaining. + */ + public Builder clearManager() { + manager_ = getDefaultInstance().getManager(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string manager = 1 [json_name = "manager"]; + * @param value The bytes for manager to set. + * @return This builder for chaining. + */ + public Builder setManagerBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + manager_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object name_ = ""; + /** + * string name = 2 [json_name = "name"]; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string name = 2 [json_name = "name"]; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string name = 2 [json_name = "name"]; + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + name_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * string name = 2 [json_name = "name"]; + * @return This builder for chaining. + */ + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * string name = 2 [json_name = "name"]; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.lang.Object version_ = ""; + /** + * string version = 3 [json_name = "version"]; + * @return The version. + */ + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string version = 3 [json_name = "version"]; + * @return The bytes for version. + */ + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string version = 3 [json_name = "version"]; + * @param value The version to set. + * @return This builder for chaining. + */ + public Builder setVersion( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + version_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * string version = 3 [json_name = "version"]; + * @return This builder for chaining. + */ + public Builder clearVersion() { + version_ = getDefaultInstance().getVersion(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + * string version = 3 [json_name = "version"]; + * @param value The bytes for version to set. + * @return This builder for chaining. + */ + public Builder setVersionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + version_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.Package) + } + + // @@protoc_insertion_point(class_scope:scip.Package) + private static final org.scip_code.scip.Package DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Package(); + } + + public static org.scip_code.scip.Package getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Package parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Package getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/PackageOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/PackageOrBuilder.java new file mode 100644 index 00000000..3fc03231 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/PackageOrBuilder.java @@ -0,0 +1,48 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface PackageOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Package) + com.google.protobuf.MessageOrBuilder { + + /** + * string manager = 1 [json_name = "manager"]; + * @return The manager. + */ + java.lang.String getManager(); + /** + * string manager = 1 [json_name = "manager"]; + * @return The bytes for manager. + */ + com.google.protobuf.ByteString + getManagerBytes(); + + /** + * string name = 2 [json_name = "name"]; + * @return The name. + */ + java.lang.String getName(); + /** + * string name = 2 [json_name = "name"]; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + * string version = 3 [json_name = "version"]; + * @return The version. + */ + java.lang.String getVersion(); + /** + * string version = 3 [json_name = "version"]; + * @return The bytes for version. + */ + com.google.protobuf.ByteString + getVersionBytes(); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/PositionEncoding.java b/bindings/java/src/main/java/org/scip_code/scip/PositionEncoding.java new file mode 100644 index 00000000..47e46f71 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/PositionEncoding.java @@ -0,0 +1,209 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Encoding used to interpret the 'character' value in source ranges.
+ * 
+ * + * Protobuf enum {@code scip.PositionEncoding} + */ +@com.google.protobuf.Generated +public enum PositionEncoding + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+   * Default value. This value should not be used by new SCIP indexers
+   * so that a consumer can process the SCIP index without ambiguity.
+   * 
+ * + * UnspecifiedPositionEncoding = 0; + */ + UnspecifiedPositionEncoding(0), + /** + *
+   * The 'character' value is interpreted as an offset in terms
+   * of UTF-8 code units (i.e. bytes).
+   *
+   * Example: For the string "🚀 Woo" in UTF-8, the bytes are
+   * [240, 159, 154, 128, 32, 87, 111, 111], so the offset for 'W'
+   * would be 5.
+   * 
+ * + * UTF8CodeUnitOffsetFromLineStart = 1; + */ + UTF8CodeUnitOffsetFromLineStart(1), + /** + *
+   * The 'character' value is interpreted as an offset in terms
+   * of UTF-16 code units (each is 2 bytes).
+   *
+   * Example: For the string "🚀 Woo", the UTF-16 code units are
+   * ['\ud83d', '\ude80', ' ', 'W', 'o', 'o'], so the offset for 'W'
+   * would be 3.
+   * 
+ * + * UTF16CodeUnitOffsetFromLineStart = 2; + */ + UTF16CodeUnitOffsetFromLineStart(2), + /** + *
+   * The 'character' value is interpreted as an offset in terms
+   * of UTF-32 code units (each is 4 bytes).
+   *
+   * Example: For the string "🚀 Woo", the UTF-32 code units are
+   * ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2.
+   * 
+ * + * UTF32CodeUnitOffsetFromLineStart = 3; + */ + UTF32CodeUnitOffsetFromLineStart(3), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + PositionEncoding.class.getName()); + } + /** + *
+   * Default value. This value should not be used by new SCIP indexers
+   * so that a consumer can process the SCIP index without ambiguity.
+   * 
+ * + * UnspecifiedPositionEncoding = 0; + */ + public static final int UnspecifiedPositionEncoding_VALUE = 0; + /** + *
+   * The 'character' value is interpreted as an offset in terms
+   * of UTF-8 code units (i.e. bytes).
+   *
+   * Example: For the string "🚀 Woo" in UTF-8, the bytes are
+   * [240, 159, 154, 128, 32, 87, 111, 111], so the offset for 'W'
+   * would be 5.
+   * 
+ * + * UTF8CodeUnitOffsetFromLineStart = 1; + */ + public static final int UTF8CodeUnitOffsetFromLineStart_VALUE = 1; + /** + *
+   * The 'character' value is interpreted as an offset in terms
+   * of UTF-16 code units (each is 2 bytes).
+   *
+   * Example: For the string "🚀 Woo", the UTF-16 code units are
+   * ['\ud83d', '\ude80', ' ', 'W', 'o', 'o'], so the offset for 'W'
+   * would be 3.
+   * 
+ * + * UTF16CodeUnitOffsetFromLineStart = 2; + */ + public static final int UTF16CodeUnitOffsetFromLineStart_VALUE = 2; + /** + *
+   * The 'character' value is interpreted as an offset in terms
+   * of UTF-32 code units (each is 4 bytes).
+   *
+   * Example: For the string "🚀 Woo", the UTF-32 code units are
+   * ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2.
+   * 
+ * + * UTF32CodeUnitOffsetFromLineStart = 3; + */ + public static final int UTF32CodeUnitOffsetFromLineStart_VALUE = 3; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static PositionEncoding valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static PositionEncoding forNumber(int value) { + switch (value) { + case 0: return UnspecifiedPositionEncoding; + case 1: return UTF8CodeUnitOffsetFromLineStart; + case 2: return UTF16CodeUnitOffsetFromLineStart; + case 3: return UTF32CodeUnitOffsetFromLineStart; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + PositionEncoding> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public PositionEncoding findValueByNumber(int number) { + return PositionEncoding.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(2); + } + + private static final PositionEncoding[] VALUES = values(); + + public static PositionEncoding valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private PositionEncoding(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.PositionEncoding) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/ProtocolVersion.java b/bindings/java/src/main/java/org/scip_code/scip/ProtocolVersion.java new file mode 100644 index 00000000..4e975c2b --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/ProtocolVersion.java @@ -0,0 +1,116 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf enum {@code scip.ProtocolVersion} + */ +@com.google.protobuf.Generated +public enum ProtocolVersion + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedProtocolVersion = 0; + */ + UnspecifiedProtocolVersion(0), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + ProtocolVersion.class.getName()); + } + /** + * UnspecifiedProtocolVersion = 0; + */ + public static final int UnspecifiedProtocolVersion_VALUE = 0; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ProtocolVersion valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static ProtocolVersion forNumber(int value) { + switch (value) { + case 0: return UnspecifiedProtocolVersion; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + ProtocolVersion> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ProtocolVersion findValueByNumber(int number) { + return ProtocolVersion.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(0); + } + + private static final ProtocolVersion[] VALUES = values(); + + public static ProtocolVersion valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private ProtocolVersion(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.ProtocolVersion) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/Relationship.java b/bindings/java/src/main/java/org/scip_code/scip/Relationship.java new file mode 100644 index 00000000..6b1db513 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Relationship.java @@ -0,0 +1,998 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf type {@code scip.Relationship} + */ +@com.google.protobuf.Generated +public final class Relationship extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Relationship) + RelationshipOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Relationship.class.getName()); + } + // Use Relationship.newBuilder() to construct. + private Relationship(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Relationship() { + symbol_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Relationship_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Relationship_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Relationship.class, org.scip_code.scip.Relationship.Builder.class); + } + + public static final int SYMBOL_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object symbol_ = ""; + /** + * string symbol = 1 [json_name = "symbol"]; + * @return The symbol. + */ + @java.lang.Override + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } + } + /** + * string symbol = 1 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int IS_REFERENCE_FIELD_NUMBER = 2; + private boolean isReference_ = false; + /** + *
+   * When resolving "Find references", this field documents what other symbols
+   * should be included together with this symbol. For example, consider the
+   * following TypeScript code that defines two symbols `Animal#sound()` and
+   * `Dog#sound()`:
+   * ```ts
+   * interface Animal {
+   * ^^^^^^ definition Animal#
+   * sound(): string
+   * ^^^^^ definition Animal#sound()
+   * }
+   * class Dog implements Animal {
+   * ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+   * public sound(): string { return "woof" }
+   * ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+   * }
+   * const animal: Animal = new Dog()
+   * ^^^^^^ reference Animal#
+   * console.log(animal.sound())
+   * ^^^^^ reference Animal#sound()
+   * ```
+   * Doing "Find references" on the symbol `Animal#sound()` should return
+   * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+   * references" on the `Dog#sound()` method should include references to the
+   * `Animal#sound()` method as well.
+   * 
+ * + * bool is_reference = 2 [json_name = "isReference"]; + * @return The isReference. + */ + @java.lang.Override + public boolean getIsReference() { + return isReference_; + } + + public static final int IS_IMPLEMENTATION_FIELD_NUMBER = 3; + private boolean isImplementation_ = false; + /** + *
+   * Similar to `is_reference` but for "Find implementations".
+   * It's common for `is_implementation` and `is_reference` to both be true but
+   * it's not always the case.
+   * In the TypeScript example above, observe that `Dog#` has an
+   * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+   * This is because "Find references" on the "Animal#" symbol should not return
+   * "Dog#". We only want "Dog#" to return as a result for "Find
+   * implementations" on the "Animal#" symbol.
+   * 
+ * + * bool is_implementation = 3 [json_name = "isImplementation"]; + * @return The isImplementation. + */ + @java.lang.Override + public boolean getIsImplementation() { + return isImplementation_; + } + + public static final int IS_TYPE_DEFINITION_FIELD_NUMBER = 4; + private boolean isTypeDefinition_ = false; + /** + *
+   * Similar to `references_symbols` but for "Go to type definition".
+   * 
+ * + * bool is_type_definition = 4 [json_name = "isTypeDefinition"]; + * @return The isTypeDefinition. + */ + @java.lang.Override + public boolean getIsTypeDefinition() { + return isTypeDefinition_; + } + + public static final int IS_DEFINITION_FIELD_NUMBER = 5; + private boolean isDefinition_ = false; + /** + *
+   * Allows overriding the behavior of "Go to definition" and "Find references"
+   * for symbols which do not have a definition of their own or could
+   * potentially have multiple definitions.
+   *
+   * For example, in a language with single inheritance and no field overriding,
+   * inherited fields can reuse the same symbol as the ancestor which declares
+   * the field. In such a situation, is_definition is not needed.
+   *
+   * On the other hand, in languages with single inheritance and some form
+   * of mixins, you can use is_definition to relate the symbol to the
+   * matching symbol in ancestor classes, and is_reference to relate the
+   * symbol to the matching symbol in mixins.
+   * 
+ * + * bool is_definition = 5 [json_name = "isDefinition"]; + * @return The isDefinition. + */ + @java.lang.Override + public boolean getIsDefinition() { + return isDefinition_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(symbol_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, symbol_); + } + if (isReference_ != false) { + output.writeBool(2, isReference_); + } + if (isImplementation_ != false) { + output.writeBool(3, isImplementation_); + } + if (isTypeDefinition_ != false) { + output.writeBool(4, isTypeDefinition_); + } + if (isDefinition_ != false) { + output.writeBool(5, isDefinition_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(symbol_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, symbol_); + } + if (isReference_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, isReference_); + } + if (isImplementation_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, isImplementation_); + } + if (isTypeDefinition_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, isTypeDefinition_); + } + if (isDefinition_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(5, isDefinition_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Relationship)) { + return super.equals(obj); + } + org.scip_code.scip.Relationship other = (org.scip_code.scip.Relationship) obj; + + if (!getSymbol() + .equals(other.getSymbol())) return false; + if (getIsReference() + != other.getIsReference()) return false; + if (getIsImplementation() + != other.getIsImplementation()) return false; + if (getIsTypeDefinition() + != other.getIsTypeDefinition()) return false; + if (getIsDefinition() + != other.getIsDefinition()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getSymbol().hashCode(); + hash = (37 * hash) + IS_REFERENCE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsReference()); + hash = (37 * hash) + IS_IMPLEMENTATION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsImplementation()); + hash = (37 * hash) + IS_TYPE_DEFINITION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsTypeDefinition()); + hash = (37 * hash) + IS_DEFINITION_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getIsDefinition()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Relationship parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Relationship parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Relationship parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Relationship parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Relationship parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Relationship parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Relationship parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Relationship parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Relationship parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Relationship parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Relationship parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Relationship parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Relationship prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.Relationship} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Relationship) + org.scip_code.scip.RelationshipOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Relationship_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Relationship_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Relationship.class, org.scip_code.scip.Relationship.Builder.class); + } + + // Construct using org.scip_code.scip.Relationship.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + symbol_ = ""; + isReference_ = false; + isImplementation_ = false; + isTypeDefinition_ = false; + isDefinition_ = false; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Relationship_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Relationship getDefaultInstanceForType() { + return org.scip_code.scip.Relationship.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Relationship build() { + org.scip_code.scip.Relationship result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Relationship buildPartial() { + org.scip_code.scip.Relationship result = new org.scip_code.scip.Relationship(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(org.scip_code.scip.Relationship result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.symbol_ = symbol_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.isReference_ = isReference_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.isImplementation_ = isImplementation_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.isTypeDefinition_ = isTypeDefinition_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.isDefinition_ = isDefinition_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Relationship) { + return mergeFrom((org.scip_code.scip.Relationship)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Relationship other) { + if (other == org.scip_code.scip.Relationship.getDefaultInstance()) return this; + if (!other.getSymbol().isEmpty()) { + symbol_ = other.symbol_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.getIsReference() != false) { + setIsReference(other.getIsReference()); + } + if (other.getIsImplementation() != false) { + setIsImplementation(other.getIsImplementation()); + } + if (other.getIsTypeDefinition() != false) { + setIsTypeDefinition(other.getIsTypeDefinition()); + } + if (other.getIsDefinition() != false) { + setIsDefinition(other.getIsDefinition()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + symbol_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: { + isReference_ = input.readBool(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + isImplementation_ = input.readBool(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 32: { + isTypeDefinition_ = input.readBool(); + bitField0_ |= 0x00000008; + break; + } // case 32 + case 40: { + isDefinition_ = input.readBool(); + bitField0_ |= 0x00000010; + break; + } // case 40 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object symbol_ = ""; + /** + * string symbol = 1 [json_name = "symbol"]; + * @return The symbol. + */ + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string symbol = 1 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string symbol = 1 [json_name = "symbol"]; + * @param value The symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbol( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + symbol_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string symbol = 1 [json_name = "symbol"]; + * @return This builder for chaining. + */ + public Builder clearSymbol() { + symbol_ = getDefaultInstance().getSymbol(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string symbol = 1 [json_name = "symbol"]; + * @param value The bytes for symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + symbol_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private boolean isReference_ ; + /** + *
+     * When resolving "Find references", this field documents what other symbols
+     * should be included together with this symbol. For example, consider the
+     * following TypeScript code that defines two symbols `Animal#sound()` and
+     * `Dog#sound()`:
+     * ```ts
+     * interface Animal {
+     * ^^^^^^ definition Animal#
+     * sound(): string
+     * ^^^^^ definition Animal#sound()
+     * }
+     * class Dog implements Animal {
+     * ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+     * public sound(): string { return "woof" }
+     * ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+     * }
+     * const animal: Animal = new Dog()
+     * ^^^^^^ reference Animal#
+     * console.log(animal.sound())
+     * ^^^^^ reference Animal#sound()
+     * ```
+     * Doing "Find references" on the symbol `Animal#sound()` should return
+     * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+     * references" on the `Dog#sound()` method should include references to the
+     * `Animal#sound()` method as well.
+     * 
+ * + * bool is_reference = 2 [json_name = "isReference"]; + * @return The isReference. + */ + @java.lang.Override + public boolean getIsReference() { + return isReference_; + } + /** + *
+     * When resolving "Find references", this field documents what other symbols
+     * should be included together with this symbol. For example, consider the
+     * following TypeScript code that defines two symbols `Animal#sound()` and
+     * `Dog#sound()`:
+     * ```ts
+     * interface Animal {
+     * ^^^^^^ definition Animal#
+     * sound(): string
+     * ^^^^^ definition Animal#sound()
+     * }
+     * class Dog implements Animal {
+     * ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+     * public sound(): string { return "woof" }
+     * ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+     * }
+     * const animal: Animal = new Dog()
+     * ^^^^^^ reference Animal#
+     * console.log(animal.sound())
+     * ^^^^^ reference Animal#sound()
+     * ```
+     * Doing "Find references" on the symbol `Animal#sound()` should return
+     * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+     * references" on the `Dog#sound()` method should include references to the
+     * `Animal#sound()` method as well.
+     * 
+ * + * bool is_reference = 2 [json_name = "isReference"]; + * @param value The isReference to set. + * @return This builder for chaining. + */ + public Builder setIsReference(boolean value) { + + isReference_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * When resolving "Find references", this field documents what other symbols
+     * should be included together with this symbol. For example, consider the
+     * following TypeScript code that defines two symbols `Animal#sound()` and
+     * `Dog#sound()`:
+     * ```ts
+     * interface Animal {
+     * ^^^^^^ definition Animal#
+     * sound(): string
+     * ^^^^^ definition Animal#sound()
+     * }
+     * class Dog implements Animal {
+     * ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+     * public sound(): string { return "woof" }
+     * ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+     * }
+     * const animal: Animal = new Dog()
+     * ^^^^^^ reference Animal#
+     * console.log(animal.sound())
+     * ^^^^^ reference Animal#sound()
+     * ```
+     * Doing "Find references" on the symbol `Animal#sound()` should return
+     * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+     * references" on the `Dog#sound()` method should include references to the
+     * `Animal#sound()` method as well.
+     * 
+ * + * bool is_reference = 2 [json_name = "isReference"]; + * @return This builder for chaining. + */ + public Builder clearIsReference() { + bitField0_ = (bitField0_ & ~0x00000002); + isReference_ = false; + onChanged(); + return this; + } + + private boolean isImplementation_ ; + /** + *
+     * Similar to `is_reference` but for "Find implementations".
+     * It's common for `is_implementation` and `is_reference` to both be true but
+     * it's not always the case.
+     * In the TypeScript example above, observe that `Dog#` has an
+     * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+     * This is because "Find references" on the "Animal#" symbol should not return
+     * "Dog#". We only want "Dog#" to return as a result for "Find
+     * implementations" on the "Animal#" symbol.
+     * 
+ * + * bool is_implementation = 3 [json_name = "isImplementation"]; + * @return The isImplementation. + */ + @java.lang.Override + public boolean getIsImplementation() { + return isImplementation_; + } + /** + *
+     * Similar to `is_reference` but for "Find implementations".
+     * It's common for `is_implementation` and `is_reference` to both be true but
+     * it's not always the case.
+     * In the TypeScript example above, observe that `Dog#` has an
+     * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+     * This is because "Find references" on the "Animal#" symbol should not return
+     * "Dog#". We only want "Dog#" to return as a result for "Find
+     * implementations" on the "Animal#" symbol.
+     * 
+ * + * bool is_implementation = 3 [json_name = "isImplementation"]; + * @param value The isImplementation to set. + * @return This builder for chaining. + */ + public Builder setIsImplementation(boolean value) { + + isImplementation_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * Similar to `is_reference` but for "Find implementations".
+     * It's common for `is_implementation` and `is_reference` to both be true but
+     * it's not always the case.
+     * In the TypeScript example above, observe that `Dog#` has an
+     * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+     * This is because "Find references" on the "Animal#" symbol should not return
+     * "Dog#". We only want "Dog#" to return as a result for "Find
+     * implementations" on the "Animal#" symbol.
+     * 
+ * + * bool is_implementation = 3 [json_name = "isImplementation"]; + * @return This builder for chaining. + */ + public Builder clearIsImplementation() { + bitField0_ = (bitField0_ & ~0x00000004); + isImplementation_ = false; + onChanged(); + return this; + } + + private boolean isTypeDefinition_ ; + /** + *
+     * Similar to `references_symbols` but for "Go to type definition".
+     * 
+ * + * bool is_type_definition = 4 [json_name = "isTypeDefinition"]; + * @return The isTypeDefinition. + */ + @java.lang.Override + public boolean getIsTypeDefinition() { + return isTypeDefinition_; + } + /** + *
+     * Similar to `references_symbols` but for "Go to type definition".
+     * 
+ * + * bool is_type_definition = 4 [json_name = "isTypeDefinition"]; + * @param value The isTypeDefinition to set. + * @return This builder for chaining. + */ + public Builder setIsTypeDefinition(boolean value) { + + isTypeDefinition_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * Similar to `references_symbols` but for "Go to type definition".
+     * 
+ * + * bool is_type_definition = 4 [json_name = "isTypeDefinition"]; + * @return This builder for chaining. + */ + public Builder clearIsTypeDefinition() { + bitField0_ = (bitField0_ & ~0x00000008); + isTypeDefinition_ = false; + onChanged(); + return this; + } + + private boolean isDefinition_ ; + /** + *
+     * Allows overriding the behavior of "Go to definition" and "Find references"
+     * for symbols which do not have a definition of their own or could
+     * potentially have multiple definitions.
+     *
+     * For example, in a language with single inheritance and no field overriding,
+     * inherited fields can reuse the same symbol as the ancestor which declares
+     * the field. In such a situation, is_definition is not needed.
+     *
+     * On the other hand, in languages with single inheritance and some form
+     * of mixins, you can use is_definition to relate the symbol to the
+     * matching symbol in ancestor classes, and is_reference to relate the
+     * symbol to the matching symbol in mixins.
+     * 
+ * + * bool is_definition = 5 [json_name = "isDefinition"]; + * @return The isDefinition. + */ + @java.lang.Override + public boolean getIsDefinition() { + return isDefinition_; + } + /** + *
+     * Allows overriding the behavior of "Go to definition" and "Find references"
+     * for symbols which do not have a definition of their own or could
+     * potentially have multiple definitions.
+     *
+     * For example, in a language with single inheritance and no field overriding,
+     * inherited fields can reuse the same symbol as the ancestor which declares
+     * the field. In such a situation, is_definition is not needed.
+     *
+     * On the other hand, in languages with single inheritance and some form
+     * of mixins, you can use is_definition to relate the symbol to the
+     * matching symbol in ancestor classes, and is_reference to relate the
+     * symbol to the matching symbol in mixins.
+     * 
+ * + * bool is_definition = 5 [json_name = "isDefinition"]; + * @param value The isDefinition to set. + * @return This builder for chaining. + */ + public Builder setIsDefinition(boolean value) { + + isDefinition_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + *
+     * Allows overriding the behavior of "Go to definition" and "Find references"
+     * for symbols which do not have a definition of their own or could
+     * potentially have multiple definitions.
+     *
+     * For example, in a language with single inheritance and no field overriding,
+     * inherited fields can reuse the same symbol as the ancestor which declares
+     * the field. In such a situation, is_definition is not needed.
+     *
+     * On the other hand, in languages with single inheritance and some form
+     * of mixins, you can use is_definition to relate the symbol to the
+     * matching symbol in ancestor classes, and is_reference to relate the
+     * symbol to the matching symbol in mixins.
+     * 
+ * + * bool is_definition = 5 [json_name = "isDefinition"]; + * @return This builder for chaining. + */ + public Builder clearIsDefinition() { + bitField0_ = (bitField0_ & ~0x00000010); + isDefinition_ = false; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.Relationship) + } + + // @@protoc_insertion_point(class_scope:scip.Relationship) + private static final org.scip_code.scip.Relationship DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Relationship(); + } + + public static org.scip_code.scip.Relationship getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Relationship parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Relationship getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/RelationshipOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/RelationshipOrBuilder.java new file mode 100644 index 00000000..419dccc4 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/RelationshipOrBuilder.java @@ -0,0 +1,105 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface RelationshipOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Relationship) + com.google.protobuf.MessageOrBuilder { + + /** + * string symbol = 1 [json_name = "symbol"]; + * @return The symbol. + */ + java.lang.String getSymbol(); + /** + * string symbol = 1 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + com.google.protobuf.ByteString + getSymbolBytes(); + + /** + *
+   * When resolving "Find references", this field documents what other symbols
+   * should be included together with this symbol. For example, consider the
+   * following TypeScript code that defines two symbols `Animal#sound()` and
+   * `Dog#sound()`:
+   * ```ts
+   * interface Animal {
+   * ^^^^^^ definition Animal#
+   * sound(): string
+   * ^^^^^ definition Animal#sound()
+   * }
+   * class Dog implements Animal {
+   * ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}]
+   * public sound(): string { return "woof" }
+   * ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}]
+   * }
+   * const animal: Animal = new Dog()
+   * ^^^^^^ reference Animal#
+   * console.log(animal.sound())
+   * ^^^^^ reference Animal#sound()
+   * ```
+   * Doing "Find references" on the symbol `Animal#sound()` should return
+   * references to the `Dog#sound()` method as well. Vice-versa, doing "Find
+   * references" on the `Dog#sound()` method should include references to the
+   * `Animal#sound()` method as well.
+   * 
+ * + * bool is_reference = 2 [json_name = "isReference"]; + * @return The isReference. + */ + boolean getIsReference(); + + /** + *
+   * Similar to `is_reference` but for "Find implementations".
+   * It's common for `is_implementation` and `is_reference` to both be true but
+   * it's not always the case.
+   * In the TypeScript example above, observe that `Dog#` has an
+   * `is_implementation` relationship with `"Animal#"` but not `is_reference`.
+   * This is because "Find references" on the "Animal#" symbol should not return
+   * "Dog#". We only want "Dog#" to return as a result for "Find
+   * implementations" on the "Animal#" symbol.
+   * 
+ * + * bool is_implementation = 3 [json_name = "isImplementation"]; + * @return The isImplementation. + */ + boolean getIsImplementation(); + + /** + *
+   * Similar to `references_symbols` but for "Go to type definition".
+   * 
+ * + * bool is_type_definition = 4 [json_name = "isTypeDefinition"]; + * @return The isTypeDefinition. + */ + boolean getIsTypeDefinition(); + + /** + *
+   * Allows overriding the behavior of "Go to definition" and "Find references"
+   * for symbols which do not have a definition of their own or could
+   * potentially have multiple definitions.
+   *
+   * For example, in a language with single inheritance and no field overriding,
+   * inherited fields can reuse the same symbol as the ancestor which declares
+   * the field. In such a situation, is_definition is not needed.
+   *
+   * On the other hand, in languages with single inheritance and some form
+   * of mixins, you can use is_definition to relate the symbol to the
+   * matching symbol in ancestor classes, and is_reference to relate the
+   * symbol to the matching symbol in mixins.
+   * 
+ * + * bool is_definition = 5 [json_name = "isDefinition"]; + * @return The isDefinition. + */ + boolean getIsDefinition(); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/ScipProto.java b/bindings/java/src/main/java/org/scip_code/scip/ScipProto.java new file mode 100644 index 00000000..37286743 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/ScipProto.java @@ -0,0 +1,344 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public final class ScipProto extends com.google.protobuf.GeneratedFile { + private ScipProto() {} + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + ScipProto.class.getName()); + } + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Index_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Index_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Metadata_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Metadata_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_ToolInfo_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_ToolInfo_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Document_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Document_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Symbol_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Symbol_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Package_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Package_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Descriptor_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Descriptor_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Signature_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Signature_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_SymbolInformation_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_SymbolInformation_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Relationship_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Relationship_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Occurrence_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Occurrence_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_scip_Diagnostic_descriptor; + static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_scip_Diagnostic_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\nscip.proto\022\004scip\"\245\001\n\005Index\022*\n\010metadata" + + "\030\001 \001(\0132\016.scip.MetadataR\010metadata\022,\n\tdocu" + + "ments\030\002 \003(\0132\016.scip.DocumentR\tdocuments\022B" + + "\n\020external_symbols\030\003 \003(\0132\027.scip.SymbolIn" + + "formationR\017externalSymbols\"\325\001\n\010Metadata\022" + + "/\n\007version\030\001 \001(\0162\025.scip.ProtocolVersionR" + + "\007version\022+\n\ttool_info\030\002 \001(\0132\016.scip.ToolI" + + "nfoR\010toolInfo\022!\n\014project_root\030\003 \001(\tR\013pro" + + "jectRoot\022H\n\026text_document_encoding\030\004 \001(\016" + + "2\022.scip.TextEncodingR\024textDocumentEncodi" + + "ng\"V\n\010ToolInfo\022\022\n\004name\030\001 \001(\tR\004name\022\030\n\007ve" + + "rsion\030\002 \001(\tR\007version\022\034\n\targuments\030\003 \003(\tR" + + "\targuments\"\213\002\n\010Document\022\032\n\010language\030\004 \001(" + + "\tR\010language\022#\n\rrelative_path\030\001 \001(\tR\014rela" + + "tivePath\0222\n\013occurrences\030\002 \003(\0132\020.scip.Occ" + + "urrenceR\013occurrences\0221\n\007symbols\030\003 \003(\0132\027." + + "scip.SymbolInformationR\007symbols\022\022\n\004text\030" + + "\005 \001(\tR\004text\022C\n\021position_encoding\030\006 \001(\0162\026" + + ".scip.PositionEncodingR\020positionEncoding" + + "\"}\n\006Symbol\022\026\n\006scheme\030\001 \001(\tR\006scheme\022\'\n\007pa" + + "ckage\030\002 \001(\0132\r.scip.PackageR\007package\0222\n\013d" + + "escriptors\030\003 \003(\0132\020.scip.DescriptorR\013desc" + + "riptors\"Q\n\007Package\022\030\n\007manager\030\001 \001(\tR\007man" + + "ager\022\022\n\004name\030\002 \001(\tR\004name\022\030\n\007version\030\003 \001(" + + "\tR\007version\"\237\002\n\nDescriptor\022\022\n\004name\030\001 \001(\tR" + + "\004name\022$\n\rdisambiguator\030\002 \001(\tR\rdisambigua" + + "tor\022/\n\006suffix\030\003 \001(\0162\027.scip.Descriptor.Su" + + "ffixR\006suffix\"\245\001\n\006Suffix\022\025\n\021UnspecifiedSu" + + "ffix\020\000\022\r\n\tNamespace\020\001\022\017\n\007Package\020\001\032\002\010\001\022\010" + + "\n\004Type\020\002\022\010\n\004Term\020\003\022\n\n\006Method\020\004\022\021\n\rTypePa" + + "rameter\020\005\022\r\n\tParameter\020\006\022\010\n\004Meta\020\007\022\t\n\005Lo" + + "cal\020\010\022\t\n\005Macro\020\t\032\002\020\001\"\201\001\n\tSignature\022\032\n\010la" + + "nguage\030\004 \001(\tR\010language\022\022\n\004text\030\005 \001(\tR\004te" + + "xt\0222\n\013occurrences\030\002 \003(\0132\020.scip.Occurrenc" + + "eR\013occurrencesJ\004\010\001\020\002J\004\010\003\020\004J\004\010\006\020\007\"\323\014\n\021Sym" + + "bolInformation\022\026\n\006symbol\030\001 \001(\tR\006symbol\022$" + + "\n\rdocumentation\030\003 \003(\tR\rdocumentation\0228\n\r" + + "relationships\030\004 \003(\0132\022.scip.RelationshipR" + + "\rrelationships\0220\n\004kind\030\005 \001(\0162\034.scip.Symb" + + "olInformation.KindR\004kind\022!\n\014display_name" + + "\030\006 \001(\tR\013displayName\022H\n\027signature_documen" + + "tation\030\007 \001(\0132\017.scip.SignatureR\026signature" + + "Documentation\022)\n\020enclosing_symbol\030\010 \001(\tR" + + "\017enclosingSymbol\"\373\t\n\004Kind\022\023\n\017Unspecified" + + "Kind\020\000\022\022\n\016AbstractMethod\020B\022\014\n\010Accessor\020H" + + "\022\t\n\005Array\020\001\022\r\n\tAssertion\020\002\022\022\n\016Associated" + + "Type\020\003\022\r\n\tAttribute\020\004\022\t\n\005Axiom\020\005\022\013\n\007Bool" + + "ean\020\006\022\t\n\005Class\020\007\022\013\n\007Concept\020V\022\014\n\010Constan" + + "t\020\010\022\017\n\013Constructor\020\t\022\014\n\010Contract\020>\022\016\n\nDa" + + "taFamily\020\n\022\014\n\010Delegate\020I\022\010\n\004Enum\020\013\022\016\n\nEn" + + "umMember\020\014\022\t\n\005Error\020?\022\t\n\005Event\020\r\022\r\n\tExte" + + "nsion\020T\022\010\n\004Fact\020\016\022\t\n\005Field\020\017\022\010\n\004File\020\020\022\014" + + "\n\010Function\020\021\022\n\n\006Getter\020\022\022\013\n\007Grammar\020\023\022\014\n" + + "\010Instance\020\024\022\r\n\tInterface\020\025\022\007\n\003Key\020\026\022\010\n\004L" + + "ang\020\027\022\t\n\005Lemma\020\030\022\013\n\007Library\020@\022\t\n\005Macro\020\031" + + "\022\n\n\006Method\020\032\022\017\n\013MethodAlias\020J\022\022\n\016MethodR" + + "eceiver\020\033\022\027\n\023MethodSpecification\020C\022\013\n\007Me" + + "ssage\020\034\022\t\n\005Mixin\020U\022\014\n\010Modifier\020A\022\n\n\006Modu" + + "le\020\035\022\r\n\tNamespace\020\036\022\010\n\004Null\020\037\022\n\n\006Number\020" + + " \022\n\n\006Object\020!\022\014\n\010Operator\020\"\022\013\n\007Package\020#" + + "\022\021\n\rPackageObject\020$\022\r\n\tParameter\020%\022\022\n\016Pa" + + "rameterLabel\020&\022\013\n\007Pattern\020\'\022\r\n\tPredicate" + + "\020(\022\014\n\010Property\020)\022\014\n\010Protocol\020*\022\022\n\016Protoc" + + "olMethod\020D\022\025\n\021PureVirtualMethod\020E\022\017\n\013Qua" + + "siquoter\020+\022\021\n\rSelfParameter\020,\022\n\n\006Setter\020" + + "-\022\r\n\tSignature\020.\022\022\n\016SingletonClass\020K\022\023\n\017" + + "SingletonMethod\020L\022\024\n\020StaticDataMember\020M\022" + + "\017\n\013StaticEvent\020N\022\017\n\013StaticField\020O\022\020\n\014Sta" + + "ticMethod\020P\022\022\n\016StaticProperty\020Q\022\022\n\016Stati" + + "cVariable\020R\022\n\n\006String\0200\022\n\n\006Struct\0201\022\r\n\tS" + + "ubscript\020/\022\n\n\006Tactic\0202\022\013\n\007Theorem\0203\022\021\n\rT" + + "hisParameter\0204\022\t\n\005Trait\0205\022\017\n\013TraitMethod" + + "\020F\022\010\n\004Type\0206\022\r\n\tTypeAlias\0207\022\r\n\tTypeClass" + + "\0208\022\023\n\017TypeClassMethod\020G\022\016\n\nTypeFamily\0209\022" + + "\021\n\rTypeParameter\020:\022\t\n\005Union\020;\022\t\n\005Value\020<" + + "\022\014\n\010Variable\020=\"\311\001\n\014Relationship\022\026\n\006symbo" + + "l\030\001 \001(\tR\006symbol\022!\n\014is_reference\030\002 \001(\010R\013i" + + "sReference\022+\n\021is_implementation\030\003 \001(\010R\020i" + + "sImplementation\022,\n\022is_type_definition\030\004 " + + "\001(\010R\020isTypeDefinition\022#\n\ris_definition\030\005" + + " \001(\010R\014isDefinition\"\244\002\n\nOccurrence\022\024\n\005ran" + + "ge\030\001 \003(\005R\005range\022\026\n\006symbol\030\002 \001(\tR\006symbol\022" + + "!\n\014symbol_roles\030\003 \001(\005R\013symbolRoles\0225\n\026ov" + + "erride_documentation\030\004 \003(\tR\025overrideDocu" + + "mentation\0221\n\013syntax_kind\030\005 \001(\0162\020.scip.Sy" + + "ntaxKindR\nsyntaxKind\0222\n\013diagnostics\030\006 \003(" + + "\0132\020.scip.DiagnosticR\013diagnostics\022\'\n\017encl" + + "osing_range\030\007 \003(\005R\016enclosingRange\"\247\001\n\nDi" + + "agnostic\022*\n\010severity\030\001 \001(\0162\016.scip.Severi" + + "tyR\010severity\022\022\n\004code\030\002 \001(\tR\004code\022\030\n\007mess" + + "age\030\003 \001(\tR\007message\022\026\n\006source\030\004 \001(\tR\006sour" + + "ce\022\'\n\004tags\030\005 \003(\0162\023.scip.DiagnosticTagR\004t" + + "ags*1\n\017ProtocolVersion\022\036\n\032UnspecifiedPro" + + "tocolVersion\020\000*@\n\014TextEncoding\022\033\n\027Unspec" + + "ifiedTextEncoding\020\000\022\010\n\004UTF8\020\001\022\t\n\005UTF16\020\002" + + "*\244\001\n\020PositionEncoding\022\037\n\033UnspecifiedPosi" + + "tionEncoding\020\000\022#\n\037UTF8CodeUnitOffsetFrom" + + "LineStart\020\001\022$\n UTF16CodeUnitOffsetFromLi" + + "neStart\020\002\022$\n UTF32CodeUnitOffsetFromLine" + + "Start\020\003*\224\001\n\nSymbolRole\022\031\n\025UnspecifiedSym" + + "bolRole\020\000\022\016\n\nDefinition\020\001\022\n\n\006Import\020\002\022\017\n" + + "\013WriteAccess\020\004\022\016\n\nReadAccess\020\010\022\r\n\tGenera" + + "ted\020\020\022\010\n\004Test\020 \022\025\n\021ForwardDefinition\020@*\352" + + "\006\n\nSyntaxKind\022\031\n\025UnspecifiedSyntaxKind\020\000" + + "\022\013\n\007Comment\020\001\022\030\n\024PunctuationDelimiter\020\002\022" + + "\026\n\022PunctuationBracket\020\003\022\013\n\007Keyword\020\004\022\031\n\021" + + "IdentifierKeyword\020\004\032\002\010\001\022\026\n\022IdentifierOpe" + + "rator\020\005\022\016\n\nIdentifier\020\006\022\025\n\021IdentifierBui" + + "ltin\020\007\022\022\n\016IdentifierNull\020\010\022\026\n\022Identifier" + + "Constant\020\t\022\033\n\027IdentifierMutableGlobal\020\n\022" + + "\027\n\023IdentifierParameter\020\013\022\023\n\017IdentifierLo" + + "cal\020\014\022\026\n\022IdentifierShadowed\020\r\022\027\n\023Identif" + + "ierNamespace\020\016\022\030\n\020IdentifierModule\020\016\032\002\010\001" + + "\022\026\n\022IdentifierFunction\020\017\022 \n\034IdentifierFu" + + "nctionDefinition\020\020\022\023\n\017IdentifierMacro\020\021\022" + + "\035\n\031IdentifierMacroDefinition\020\022\022\022\n\016Identi" + + "fierType\020\023\022\031\n\025IdentifierBuiltinType\020\024\022\027\n" + + "\023IdentifierAttribute\020\025\022\017\n\013RegexEscape\020\026\022" + + "\021\n\rRegexRepeated\020\027\022\021\n\rRegexWildcard\020\030\022\022\n" + + "\016RegexDelimiter\020\031\022\r\n\tRegexJoin\020\032\022\021\n\rStri" + + "ngLiteral\020\033\022\027\n\023StringLiteralEscape\020\034\022\030\n\024" + + "StringLiteralSpecial\020\035\022\024\n\020StringLiteralK" + + "ey\020\036\022\024\n\020CharacterLiteral\020\037\022\022\n\016NumericLit" + + "eral\020 \022\022\n\016BooleanLiteral\020!\022\007\n\003Tag\020\"\022\020\n\014T" + + "agAttribute\020#\022\020\n\014TagDelimiter\020$\032\002\020\001*V\n\010S" + + "everity\022\027\n\023UnspecifiedSeverity\020\000\022\t\n\005Erro" + + "r\020\001\022\013\n\007Warning\020\002\022\017\n\013Information\020\003\022\010\n\004Hin" + + "t\020\004*N\n\rDiagnosticTag\022\034\n\030UnspecifiedDiagn" + + "osticTag\020\000\022\017\n\013Unnecessary\020\001\022\016\n\nDeprecate" + + "d\020\002*\233\n\n\010Language\022\027\n\023UnspecifiedLanguage\020" + + "\000\022\010\n\004ABAP\020<\022\010\n\004Apex\020`\022\007\n\003APL\0201\022\007\n\003Ada\020\'\022" + + "\010\n\004Agda\020-\022\014\n\010AsciiDoc\020V\022\014\n\010Assembly\020:\022\007\n" + + "\003Awk\020B\022\007\n\003Bat\020D\022\n\n\006BibTeX\020Q\022\005\n\001C\020\"\022\t\n\005CO" + + "BOL\020;\022\007\n\003CPP\020#\022\007\n\003CSS\020\032\022\n\n\006CSharp\020\001\022\013\n\007C" + + "lojure\020\010\022\020\n\014Coffeescript\020\025\022\016\n\nCommonLisp" + + "\020\t\022\007\n\003Coq\020/\022\010\n\004CUDA\020a\022\010\n\004Dart\020\003\022\n\n\006Delph" + + "i\0209\022\010\n\004Diff\020X\022\016\n\nDockerfile\020P\022\n\n\006Dyalog\020" + + "2\022\n\n\006Elixir\020\021\022\n\n\006Erlang\020\022\022\n\n\006FSharp\020*\022\010\n" + + "\004Fish\020A\022\010\n\004Flow\020\030\022\013\n\007Fortran\0208\022\016\n\nGit_Co" + + "mmit\020[\022\016\n\nGit_Config\020Y\022\016\n\nGit_Rebase\020\\\022\006" + + "\n\002Go\020!\022\013\n\007GraphQL\020b\022\n\n\006Groovy\020\007\022\010\n\004HTML\020" + + "\036\022\010\n\004Hack\020\024\022\016\n\nHandlebars\020Z\022\013\n\007Haskell\020," + + "\022\t\n\005Idris\020.\022\007\n\003Ini\020H\022\005\n\001J\0203\022\010\n\004JSON\020K\022\010\n" + + "\004Java\020\006\022\016\n\nJavaScript\020\026\022\023\n\017JavaScriptRea" + + "ct\020]\022\013\n\007Jsonnet\020L\022\t\n\005Julia\0207\022\014\n\010Justfile" + + "\020m\022\n\n\006Kotlin\020\004\022\t\n\005LaTeX\020S\022\010\n\004Lean\0200\022\010\n\004L" + + "ess\020\033\022\007\n\003Lua\020\014\022\010\n\004Luau\020l\022\014\n\010Makefile\020O\022\014" + + "\n\010Markdown\020T\022\n\n\006Matlab\0204\022\n\n\006Nickel\020n\022\007\n\003" + + "Nix\020M\022\t\n\005OCaml\020)\022\017\n\013Objective_C\020$\022\021\n\rObj" + + "ective_CPP\020%\022\n\n\006Pascal\020c\022\007\n\003PHP\020\023\022\t\n\005PLS" + + "QL\020F\022\010\n\004Perl\020\r\022\016\n\nPowerShell\020C\022\n\n\006Prolog" + + "\020G\022\014\n\010Protobuf\020d\022\n\n\006Python\020\017\022\005\n\001R\0206\022\n\n\006R" + + "acket\020\013\022\010\n\004Raku\020\016\022\t\n\005Razor\020>\022\t\n\005Repro\020f\022" + + "\010\n\004ReST\020U\022\010\n\004Ruby\020\020\022\010\n\004Rust\020(\022\007\n\003SAS\020=\022\010" + + "\n\004SCSS\020\035\022\007\n\003SML\020+\022\007\n\003SQL\020E\022\010\n\004Sass\020\034\022\t\n\005" + + "Scala\020\005\022\n\n\006Scheme\020\n\022\017\n\013ShellScript\020@\022\013\n\007" + + "Skylark\020N\022\t\n\005Slang\020k\022\014\n\010Solidity\020_\022\n\n\006Sv" + + "elte\020j\022\t\n\005Swift\020\002\022\007\n\003Tcl\020e\022\010\n\004TOML\020I\022\007\n\003" + + "TeX\020R\022\n\n\006Thrift\020g\022\016\n\nTypeScript\020\027\022\023\n\017Typ" + + "eScriptReact\020^\022\013\n\007Verilog\020h\022\010\n\004VHDL\020i\022\017\n" + + "\013VisualBasic\020?\022\007\n\003Vue\020\031\022\013\n\007Wolfram\0205\022\007\n\003" + + "XML\020\037\022\007\n\003XSL\020 \022\010\n\004YAML\020J\022\007\n\003Zig\020&BN\n\022org" + + ".scip_code.scipB\tScipProtoP\001Z+github.com" + + "/scip-code/scip/bindings/go/scip/b\006proto" + + "3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_scip_Index_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_scip_Index_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Index_descriptor, + new java.lang.String[] { "Metadata", "Documents", "ExternalSymbols", }); + internal_static_scip_Metadata_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_scip_Metadata_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Metadata_descriptor, + new java.lang.String[] { "Version", "ToolInfo", "ProjectRoot", "TextDocumentEncoding", }); + internal_static_scip_ToolInfo_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_scip_ToolInfo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_ToolInfo_descriptor, + new java.lang.String[] { "Name", "Version", "Arguments", }); + internal_static_scip_Document_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_scip_Document_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Document_descriptor, + new java.lang.String[] { "Language", "RelativePath", "Occurrences", "Symbols", "Text", "PositionEncoding", }); + internal_static_scip_Symbol_descriptor = + getDescriptor().getMessageTypes().get(4); + internal_static_scip_Symbol_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Symbol_descriptor, + new java.lang.String[] { "Scheme", "Package", "Descriptors", }); + internal_static_scip_Package_descriptor = + getDescriptor().getMessageTypes().get(5); + internal_static_scip_Package_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Package_descriptor, + new java.lang.String[] { "Manager", "Name", "Version", }); + internal_static_scip_Descriptor_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_scip_Descriptor_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Descriptor_descriptor, + new java.lang.String[] { "Name", "Disambiguator", "Suffix", }); + internal_static_scip_Signature_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_scip_Signature_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Signature_descriptor, + new java.lang.String[] { "Language", "Text", "Occurrences", }); + internal_static_scip_SymbolInformation_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_scip_SymbolInformation_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_SymbolInformation_descriptor, + new java.lang.String[] { "Symbol", "Documentation", "Relationships", "Kind", "DisplayName", "SignatureDocumentation", "EnclosingSymbol", }); + internal_static_scip_Relationship_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_scip_Relationship_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Relationship_descriptor, + new java.lang.String[] { "Symbol", "IsReference", "IsImplementation", "IsTypeDefinition", "IsDefinition", }); + internal_static_scip_Occurrence_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_scip_Occurrence_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Occurrence_descriptor, + new java.lang.String[] { "Range", "Symbol", "SymbolRoles", "OverrideDocumentation", "SyntaxKind", "Diagnostics", "EnclosingRange", }); + internal_static_scip_Diagnostic_descriptor = + getDescriptor().getMessageTypes().get(11); + internal_static_scip_Diagnostic_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_scip_Diagnostic_descriptor, + new java.lang.String[] { "Severity", "Code", "Message", "Source", "Tags", }); + descriptor.resolveAllFeaturesImmutable(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/Severity.java b/bindings/java/src/main/java/org/scip_code/scip/Severity.java new file mode 100644 index 00000000..a9d5164a --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Severity.java @@ -0,0 +1,152 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf enum {@code scip.Severity} + */ +@com.google.protobuf.Generated +public enum Severity + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedSeverity = 0; + */ + UnspecifiedSeverity(0), + /** + * Error = 1; + */ + Error(1), + /** + * Warning = 2; + */ + Warning(2), + /** + * Information = 3; + */ + Information(3), + /** + * Hint = 4; + */ + Hint(4), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Severity.class.getName()); + } + /** + * UnspecifiedSeverity = 0; + */ + public static final int UnspecifiedSeverity_VALUE = 0; + /** + * Error = 1; + */ + public static final int Error_VALUE = 1; + /** + * Warning = 2; + */ + public static final int Warning_VALUE = 2; + /** + * Information = 3; + */ + public static final int Information_VALUE = 3; + /** + * Hint = 4; + */ + public static final int Hint_VALUE = 4; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Severity valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Severity forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSeverity; + case 1: return Error; + case 2: return Warning; + case 3: return Information; + case 4: return Hint; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Severity> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Severity findValueByNumber(int number) { + return Severity.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(5); + } + + private static final Severity[] VALUES = values(); + + public static Severity valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Severity(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.Severity) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/Signature.java b/bindings/java/src/main/java/org/scip_code/scip/Signature.java new file mode 100644 index 00000000..bde4efbd --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Signature.java @@ -0,0 +1,1200 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Signature represents the signature of a symbol as it's displayed in API
+ * documentation or hover tooltips. It uses a subset of Document's fields with
+ * the same field numbers for wire compatibility with older indexes that encoded
+ * signatures using the Document message type.
+ * 
+ * + * Protobuf type {@code scip.Signature} + */ +@com.google.protobuf.Generated +public final class Signature extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Signature) + SignatureOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Signature.class.getName()); + } + // Use Signature.newBuilder() to construct. + private Signature(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Signature() { + language_ = ""; + text_ = ""; + occurrences_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Signature_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Signature_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Signature.class, org.scip_code.scip.Signature.Builder.class); + } + + public static final int LANGUAGE_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile java.lang.Object language_ = ""; + /** + *
+   * The language of the signature, e.g. "java", "go", "python".
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The language. + */ + @java.lang.Override + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } + } + /** + *
+   * The language of the signature, e.g. "java", "go", "python".
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The bytes for language. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TEXT_FIELD_NUMBER = 5; + @SuppressWarnings("serial") + private volatile java.lang.Object text_ = ""; + /** + *
+   * The text content of the signature, e.g. "void add(int a, int b)".
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The text. + */ + @java.lang.Override + public java.lang.String getText() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } + } + /** + *
+   * The text content of the signature, e.g. "void add(int a, int b)".
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The bytes for text. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int OCCURRENCES_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List occurrences_; + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public java.util.List getOccurrencesList() { + return occurrences_; + } + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public java.util.List + getOccurrencesOrBuilderList() { + return occurrences_; + } + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public int getOccurrencesCount() { + return occurrences_.size(); + } + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public org.scip_code.scip.Occurrence getOccurrences(int index) { + return occurrences_.get(index); + } + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + @java.lang.Override + public org.scip_code.scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index) { + return occurrences_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < occurrences_.size(); i++) { + output.writeMessage(2, occurrences_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(language_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 4, language_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 5, text_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < occurrences_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, occurrences_.get(i)); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(language_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(4, language_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(text_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(5, text_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Signature)) { + return super.equals(obj); + } + org.scip_code.scip.Signature other = (org.scip_code.scip.Signature) obj; + + if (!getLanguage() + .equals(other.getLanguage())) return false; + if (!getText() + .equals(other.getText())) return false; + if (!getOccurrencesList() + .equals(other.getOccurrencesList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LANGUAGE_FIELD_NUMBER; + hash = (53 * hash) + getLanguage().hashCode(); + hash = (37 * hash) + TEXT_FIELD_NUMBER; + hash = (53 * hash) + getText().hashCode(); + if (getOccurrencesCount() > 0) { + hash = (37 * hash) + OCCURRENCES_FIELD_NUMBER; + hash = (53 * hash) + getOccurrencesList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Signature parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Signature parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Signature parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Signature parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Signature parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Signature parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Signature parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Signature parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Signature parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Signature parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Signature parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Signature parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Signature prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Signature represents the signature of a symbol as it's displayed in API
+   * documentation or hover tooltips. It uses a subset of Document's fields with
+   * the same field numbers for wire compatibility with older indexes that encoded
+   * signatures using the Document message type.
+   * 
+ * + * Protobuf type {@code scip.Signature} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Signature) + org.scip_code.scip.SignatureOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Signature_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Signature_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Signature.class, org.scip_code.scip.Signature.Builder.class); + } + + // Construct using org.scip_code.scip.Signature.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + language_ = ""; + text_ = ""; + if (occurrencesBuilder_ == null) { + occurrences_ = java.util.Collections.emptyList(); + } else { + occurrences_ = null; + occurrencesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Signature_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Signature getDefaultInstanceForType() { + return org.scip_code.scip.Signature.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Signature build() { + org.scip_code.scip.Signature result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Signature buildPartial() { + org.scip_code.scip.Signature result = new org.scip_code.scip.Signature(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(org.scip_code.scip.Signature result) { + if (occurrencesBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0)) { + occurrences_ = java.util.Collections.unmodifiableList(occurrences_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.occurrences_ = occurrences_; + } else { + result.occurrences_ = occurrencesBuilder_.build(); + } + } + + private void buildPartial0(org.scip_code.scip.Signature result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.language_ = language_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.text_ = text_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Signature) { + return mergeFrom((org.scip_code.scip.Signature)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Signature other) { + if (other == org.scip_code.scip.Signature.getDefaultInstance()) return this; + if (!other.getLanguage().isEmpty()) { + language_ = other.language_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getText().isEmpty()) { + text_ = other.text_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (occurrencesBuilder_ == null) { + if (!other.occurrences_.isEmpty()) { + if (occurrences_.isEmpty()) { + occurrences_ = other.occurrences_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureOccurrencesIsMutable(); + occurrences_.addAll(other.occurrences_); + } + onChanged(); + } + } else { + if (!other.occurrences_.isEmpty()) { + if (occurrencesBuilder_.isEmpty()) { + occurrencesBuilder_.dispose(); + occurrencesBuilder_ = null; + occurrences_ = other.occurrences_; + bitField0_ = (bitField0_ & ~0x00000004); + occurrencesBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetOccurrencesFieldBuilder() : null; + } else { + occurrencesBuilder_.addAllMessages(other.occurrences_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 18: { + org.scip_code.scip.Occurrence m = + input.readMessage( + org.scip_code.scip.Occurrence.parser(), + extensionRegistry); + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(m); + } else { + occurrencesBuilder_.addMessage(m); + } + break; + } // case 18 + case 34: { + language_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 34 + case 42: { + text_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 42 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object language_ = ""; + /** + *
+     * The language of the signature, e.g. "java", "go", "python".
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @return The language. + */ + public java.lang.String getLanguage() { + java.lang.Object ref = language_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + language_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * The language of the signature, e.g. "java", "go", "python".
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @return The bytes for language. + */ + public com.google.protobuf.ByteString + getLanguageBytes() { + java.lang.Object ref = language_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + language_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * The language of the signature, e.g. "java", "go", "python".
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @param value The language to set. + * @return This builder for chaining. + */ + public Builder setLanguage( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + language_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * The language of the signature, e.g. "java", "go", "python".
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @return This builder for chaining. + */ + public Builder clearLanguage() { + language_ = getDefaultInstance().getLanguage(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+     * The language of the signature, e.g. "java", "go", "python".
+     * 
+ * + * string language = 4 [json_name = "language"]; + * @param value The bytes for language to set. + * @return This builder for chaining. + */ + public Builder setLanguageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + language_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object text_ = ""; + /** + *
+     * The text content of the signature, e.g. "void add(int a, int b)".
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @return The text. + */ + public java.lang.String getText() { + java.lang.Object ref = text_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * The text content of the signature, e.g. "void add(int a, int b)".
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @return The bytes for text. + */ + public com.google.protobuf.ByteString + getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * The text content of the signature, e.g. "void add(int a, int b)".
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @param value The text to set. + * @return This builder for chaining. + */ + public Builder setText( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + text_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * The text content of the signature, e.g. "void add(int a, int b)".
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @return This builder for chaining. + */ + public Builder clearText() { + text_ = getDefaultInstance().getText(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+     * The text content of the signature, e.g. "void add(int a, int b)".
+     * 
+ * + * string text = 5 [json_name = "text"]; + * @param value The bytes for text to set. + * @return This builder for chaining. + */ + public Builder setTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + text_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.util.List occurrences_ = + java.util.Collections.emptyList(); + private void ensureOccurrencesIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + occurrences_ = new java.util.ArrayList(occurrences_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Occurrence, org.scip_code.scip.Occurrence.Builder, org.scip_code.scip.OccurrenceOrBuilder> occurrencesBuilder_; + + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public java.util.List getOccurrencesList() { + if (occurrencesBuilder_ == null) { + return java.util.Collections.unmodifiableList(occurrences_); + } else { + return occurrencesBuilder_.getMessageList(); + } + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public int getOccurrencesCount() { + if (occurrencesBuilder_ == null) { + return occurrences_.size(); + } else { + return occurrencesBuilder_.getCount(); + } + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence getOccurrences(int index) { + if (occurrencesBuilder_ == null) { + return occurrences_.get(index); + } else { + return occurrencesBuilder_.getMessage(index); + } + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder setOccurrences( + int index, org.scip_code.scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.set(index, value); + onChanged(); + } else { + occurrencesBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder setOccurrences( + int index, org.scip_code.scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.set(index, builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences(org.scip_code.scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.add(value); + onChanged(); + } else { + occurrencesBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences( + int index, org.scip_code.scip.Occurrence value) { + if (occurrencesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureOccurrencesIsMutable(); + occurrences_.add(index, value); + onChanged(); + } else { + occurrencesBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences( + org.scip_code.scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addOccurrences( + int index, org.scip_code.scip.Occurrence.Builder builderForValue) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.add(index, builderForValue.build()); + onChanged(); + } else { + occurrencesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder addAllOccurrences( + java.lang.Iterable values) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, occurrences_); + onChanged(); + } else { + occurrencesBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder clearOccurrences() { + if (occurrencesBuilder_ == null) { + occurrences_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + occurrencesBuilder_.clear(); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public Builder removeOccurrences(int index) { + if (occurrencesBuilder_ == null) { + ensureOccurrencesIsMutable(); + occurrences_.remove(index); + onChanged(); + } else { + occurrencesBuilder_.remove(index); + } + return this; + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence.Builder getOccurrencesBuilder( + int index) { + return internalGetOccurrencesFieldBuilder().getBuilder(index); + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index) { + if (occurrencesBuilder_ == null) { + return occurrences_.get(index); } else { + return occurrencesBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public java.util.List + getOccurrencesOrBuilderList() { + if (occurrencesBuilder_ != null) { + return occurrencesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(occurrences_); + } + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence.Builder addOccurrencesBuilder() { + return internalGetOccurrencesFieldBuilder().addBuilder( + org.scip_code.scip.Occurrence.getDefaultInstance()); + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public org.scip_code.scip.Occurrence.Builder addOccurrencesBuilder( + int index) { + return internalGetOccurrencesFieldBuilder().addBuilder( + index, org.scip_code.scip.Occurrence.getDefaultInstance()); + } + /** + *
+     * (optional) Occurrences within the signature text that reference other
+     * symbols, enabling hyperlinking of types in the signature. Ranges are
+     * relative to the `text` field.
+     * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + public java.util.List + getOccurrencesBuilderList() { + return internalGetOccurrencesFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Occurrence, org.scip_code.scip.Occurrence.Builder, org.scip_code.scip.OccurrenceOrBuilder> + internalGetOccurrencesFieldBuilder() { + if (occurrencesBuilder_ == null) { + occurrencesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Occurrence, org.scip_code.scip.Occurrence.Builder, org.scip_code.scip.OccurrenceOrBuilder>( + occurrences_, + ((bitField0_ & 0x00000004) != 0), + getParentForChildren(), + isClean()); + occurrences_ = null; + } + return occurrencesBuilder_; + } + + // @@protoc_insertion_point(builder_scope:scip.Signature) + } + + // @@protoc_insertion_point(class_scope:scip.Signature) + private static final org.scip_code.scip.Signature DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Signature(); + } + + public static org.scip_code.scip.Signature getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Signature parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Signature getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/SignatureOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/SignatureOrBuilder.java new file mode 100644 index 00000000..4efea015 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/SignatureOrBuilder.java @@ -0,0 +1,106 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface SignatureOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Signature) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * The language of the signature, e.g. "java", "go", "python".
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The language. + */ + java.lang.String getLanguage(); + /** + *
+   * The language of the signature, e.g. "java", "go", "python".
+   * 
+ * + * string language = 4 [json_name = "language"]; + * @return The bytes for language. + */ + com.google.protobuf.ByteString + getLanguageBytes(); + + /** + *
+   * The text content of the signature, e.g. "void add(int a, int b)".
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The text. + */ + java.lang.String getText(); + /** + *
+   * The text content of the signature, e.g. "void add(int a, int b)".
+   * 
+ * + * string text = 5 [json_name = "text"]; + * @return The bytes for text. + */ + com.google.protobuf.ByteString + getTextBytes(); + + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + java.util.List + getOccurrencesList(); + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + org.scip_code.scip.Occurrence getOccurrences(int index); + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + int getOccurrencesCount(); + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + java.util.List + getOccurrencesOrBuilderList(); + /** + *
+   * (optional) Occurrences within the signature text that reference other
+   * symbols, enabling hyperlinking of types in the signature. Ranges are
+   * relative to the `text` field.
+   * 
+ * + * repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"]; + */ + org.scip_code.scip.OccurrenceOrBuilder getOccurrencesOrBuilder( + int index); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/Symbol.java b/bindings/java/src/main/java/org/scip_code/scip/Symbol.java new file mode 100644 index 00000000..69c453fe --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/Symbol.java @@ -0,0 +1,1140 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * Symbol is similar to a URI, it identifies a class, method, or a local
+ * variable. `SymbolInformation` contains rich metadata about symbols such as
+ * the docstring.
+ *
+ * Symbol has a standardized string representation, which can be used
+ * interchangeably with `Symbol`. The syntax for Symbol is the following:
+ * ```
+ * # (<x>)+ stands for one or more repetitions of <x>
+ * # (<x>)? stands for zero or one occurrence of <x>
+ * <symbol>               ::= <scheme> ' ' <package> ' ' (<descriptor>)+ | 'local ' <local-id>
+ * <package>              ::= <manager> ' ' <package-name> ' ' <version>
+ * <scheme>               ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local'
+ * <manager>              ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value
+ * <package-name>         ::= same as above
+ * <version>              ::= same as above
+ * <descriptor>           ::= <namespace> | <type> | <term> | <method> | <type-parameter> | <parameter> | <meta> | <macro>
+ * <namespace>            ::= <name> '/'
+ * <type>                 ::= <name> '#'
+ * <term>                 ::= <name> '.'
+ * <meta>                 ::= <name> ':'
+ * <macro>                ::= <name> '!'
+ * <method>               ::= <name> '(' (<method-disambiguator>)? ').'
+ * <type-parameter>       ::= '[' <name> ']'
+ * <parameter>            ::= '(' <name> ')'
+ * <name>                 ::= <identifier>
+ * <method-disambiguator> ::= <simple-identifier>
+ * <identifier>           ::= <simple-identifier> | <escaped-identifier>
+ * <simple-identifier>    ::= (<identifier-character>)+
+ * <identifier-character> ::= '_' | '+' | '-' | '$' | ASCII letter or digit
+ * <escaped-identifier>   ::= '`' (<escaped-character>)+ '`', must contain at least one non-<identifier-character>
+ * <escaped-characters>   ::= any UTF-8, escape backticks with double backtick.
+ * <local-id>             ::= <simple-identifier>
+ * ```
+ *
+ * The list of descriptors for a symbol should together form a fully
+ * qualified name for the symbol. That is, it should serve as a unique
+ * identifier across the package. Typically, it will include one descriptor
+ * for every node in the AST (along the ancestry path) between the root of
+ * the file and the node corresponding to the symbol.
+ *
+ * Local symbols MUST only be used for entities which are local to a Document,
+ * and cannot be accessed from outside the Document.
+ * 
+ * + * Protobuf type {@code scip.Symbol} + */ +@com.google.protobuf.Generated +public final class Symbol extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.Symbol) + SymbolOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Symbol.class.getName()); + } + // Use Symbol.newBuilder() to construct. + private Symbol(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private Symbol() { + scheme_ = ""; + descriptors_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Symbol_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Symbol_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Symbol.class, org.scip_code.scip.Symbol.Builder.class); + } + + private int bitField0_; + public static final int SCHEME_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object scheme_ = ""; + /** + * string scheme = 1 [json_name = "scheme"]; + * @return The scheme. + */ + @java.lang.Override + public java.lang.String getScheme() { + java.lang.Object ref = scheme_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + scheme_ = s; + return s; + } + } + /** + * string scheme = 1 [json_name = "scheme"]; + * @return The bytes for scheme. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSchemeBytes() { + java.lang.Object ref = scheme_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + scheme_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PACKAGE_FIELD_NUMBER = 2; + private org.scip_code.scip.Package package_; + /** + * .scip.Package package = 2 [json_name = "package"]; + * @return Whether the package field is set. + */ + @java.lang.Override + public boolean hasPackage() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .scip.Package package = 2 [json_name = "package"]; + * @return The package. + */ + @java.lang.Override + public org.scip_code.scip.Package getPackage() { + return package_ == null ? org.scip_code.scip.Package.getDefaultInstance() : package_; + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + @java.lang.Override + public org.scip_code.scip.PackageOrBuilder getPackageOrBuilder() { + return package_ == null ? org.scip_code.scip.Package.getDefaultInstance() : package_; + } + + public static final int DESCRIPTORS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private java.util.List descriptors_; + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + @java.lang.Override + public java.util.List getDescriptorsList() { + return descriptors_; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + @java.lang.Override + public java.util.List + getDescriptorsOrBuilderList() { + return descriptors_; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + @java.lang.Override + public int getDescriptorsCount() { + return descriptors_.size(); + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + @java.lang.Override + public org.scip_code.scip.Descriptor getDescriptors(int index) { + return descriptors_.get(index); + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + @java.lang.Override + public org.scip_code.scip.DescriptorOrBuilder getDescriptorsOrBuilder( + int index) { + return descriptors_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(scheme_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, scheme_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(2, getPackage()); + } + for (int i = 0; i < descriptors_.size(); i++) { + output.writeMessage(3, descriptors_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(scheme_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, scheme_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getPackage()); + } + for (int i = 0; i < descriptors_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(3, descriptors_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.Symbol)) { + return super.equals(obj); + } + org.scip_code.scip.Symbol other = (org.scip_code.scip.Symbol) obj; + + if (!getScheme() + .equals(other.getScheme())) return false; + if (hasPackage() != other.hasPackage()) return false; + if (hasPackage()) { + if (!getPackage() + .equals(other.getPackage())) return false; + } + if (!getDescriptorsList() + .equals(other.getDescriptorsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SCHEME_FIELD_NUMBER; + hash = (53 * hash) + getScheme().hashCode(); + if (hasPackage()) { + hash = (37 * hash) + PACKAGE_FIELD_NUMBER; + hash = (53 * hash) + getPackage().hashCode(); + } + if (getDescriptorsCount() > 0) { + hash = (37 * hash) + DESCRIPTORS_FIELD_NUMBER; + hash = (53 * hash) + getDescriptorsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.Symbol parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Symbol parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Symbol parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Symbol parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Symbol parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.Symbol parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.Symbol parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Symbol parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.Symbol parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.Symbol parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.Symbol parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.Symbol parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.Symbol prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * Symbol is similar to a URI, it identifies a class, method, or a local
+   * variable. `SymbolInformation` contains rich metadata about symbols such as
+   * the docstring.
+   *
+   * Symbol has a standardized string representation, which can be used
+   * interchangeably with `Symbol`. The syntax for Symbol is the following:
+   * ```
+   * # (<x>)+ stands for one or more repetitions of <x>
+   * # (<x>)? stands for zero or one occurrence of <x>
+   * <symbol>               ::= <scheme> ' ' <package> ' ' (<descriptor>)+ | 'local ' <local-id>
+   * <package>              ::= <manager> ' ' <package-name> ' ' <version>
+   * <scheme>               ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local'
+   * <manager>              ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value
+   * <package-name>         ::= same as above
+   * <version>              ::= same as above
+   * <descriptor>           ::= <namespace> | <type> | <term> | <method> | <type-parameter> | <parameter> | <meta> | <macro>
+   * <namespace>            ::= <name> '/'
+   * <type>                 ::= <name> '#'
+   * <term>                 ::= <name> '.'
+   * <meta>                 ::= <name> ':'
+   * <macro>                ::= <name> '!'
+   * <method>               ::= <name> '(' (<method-disambiguator>)? ').'
+   * <type-parameter>       ::= '[' <name> ']'
+   * <parameter>            ::= '(' <name> ')'
+   * <name>                 ::= <identifier>
+   * <method-disambiguator> ::= <simple-identifier>
+   * <identifier>           ::= <simple-identifier> | <escaped-identifier>
+   * <simple-identifier>    ::= (<identifier-character>)+
+   * <identifier-character> ::= '_' | '+' | '-' | '$' | ASCII letter or digit
+   * <escaped-identifier>   ::= '`' (<escaped-character>)+ '`', must contain at least one non-<identifier-character>
+   * <escaped-characters>   ::= any UTF-8, escape backticks with double backtick.
+   * <local-id>             ::= <simple-identifier>
+   * ```
+   *
+   * The list of descriptors for a symbol should together form a fully
+   * qualified name for the symbol. That is, it should serve as a unique
+   * identifier across the package. Typically, it will include one descriptor
+   * for every node in the AST (along the ancestry path) between the root of
+   * the file and the node corresponding to the symbol.
+   *
+   * Local symbols MUST only be used for entities which are local to a Document,
+   * and cannot be accessed from outside the Document.
+   * 
+ * + * Protobuf type {@code scip.Symbol} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.Symbol) + org.scip_code.scip.SymbolOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_Symbol_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_Symbol_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.Symbol.class, org.scip_code.scip.Symbol.Builder.class); + } + + // Construct using org.scip_code.scip.Symbol.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetPackageFieldBuilder(); + internalGetDescriptorsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + scheme_ = ""; + package_ = null; + if (packageBuilder_ != null) { + packageBuilder_.dispose(); + packageBuilder_ = null; + } + if (descriptorsBuilder_ == null) { + descriptors_ = java.util.Collections.emptyList(); + } else { + descriptors_ = null; + descriptorsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_Symbol_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.Symbol getDefaultInstanceForType() { + return org.scip_code.scip.Symbol.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.Symbol build() { + org.scip_code.scip.Symbol result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.Symbol buildPartial() { + org.scip_code.scip.Symbol result = new org.scip_code.scip.Symbol(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(org.scip_code.scip.Symbol result) { + if (descriptorsBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0)) { + descriptors_ = java.util.Collections.unmodifiableList(descriptors_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.descriptors_ = descriptors_; + } else { + result.descriptors_ = descriptorsBuilder_.build(); + } + } + + private void buildPartial0(org.scip_code.scip.Symbol result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.scheme_ = scheme_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.package_ = packageBuilder_ == null + ? package_ + : packageBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.Symbol) { + return mergeFrom((org.scip_code.scip.Symbol)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.Symbol other) { + if (other == org.scip_code.scip.Symbol.getDefaultInstance()) return this; + if (!other.getScheme().isEmpty()) { + scheme_ = other.scheme_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.hasPackage()) { + mergePackage(other.getPackage()); + } + if (descriptorsBuilder_ == null) { + if (!other.descriptors_.isEmpty()) { + if (descriptors_.isEmpty()) { + descriptors_ = other.descriptors_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureDescriptorsIsMutable(); + descriptors_.addAll(other.descriptors_); + } + onChanged(); + } + } else { + if (!other.descriptors_.isEmpty()) { + if (descriptorsBuilder_.isEmpty()) { + descriptorsBuilder_.dispose(); + descriptorsBuilder_ = null; + descriptors_ = other.descriptors_; + bitField0_ = (bitField0_ & ~0x00000004); + descriptorsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetDescriptorsFieldBuilder() : null; + } else { + descriptorsBuilder_.addAllMessages(other.descriptors_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + scheme_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + input.readMessage( + internalGetPackageFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + org.scip_code.scip.Descriptor m = + input.readMessage( + org.scip_code.scip.Descriptor.parser(), + extensionRegistry); + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.add(m); + } else { + descriptorsBuilder_.addMessage(m); + } + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object scheme_ = ""; + /** + * string scheme = 1 [json_name = "scheme"]; + * @return The scheme. + */ + public java.lang.String getScheme() { + java.lang.Object ref = scheme_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + scheme_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string scheme = 1 [json_name = "scheme"]; + * @return The bytes for scheme. + */ + public com.google.protobuf.ByteString + getSchemeBytes() { + java.lang.Object ref = scheme_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + scheme_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string scheme = 1 [json_name = "scheme"]; + * @param value The scheme to set. + * @return This builder for chaining. + */ + public Builder setScheme( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + scheme_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string scheme = 1 [json_name = "scheme"]; + * @return This builder for chaining. + */ + public Builder clearScheme() { + scheme_ = getDefaultInstance().getScheme(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string scheme = 1 [json_name = "scheme"]; + * @param value The bytes for scheme to set. + * @return This builder for chaining. + */ + public Builder setSchemeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + scheme_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private org.scip_code.scip.Package package_; + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Package, org.scip_code.scip.Package.Builder, org.scip_code.scip.PackageOrBuilder> packageBuilder_; + /** + * .scip.Package package = 2 [json_name = "package"]; + * @return Whether the package field is set. + */ + public boolean hasPackage() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * .scip.Package package = 2 [json_name = "package"]; + * @return The package. + */ + public org.scip_code.scip.Package getPackage() { + if (packageBuilder_ == null) { + return package_ == null ? org.scip_code.scip.Package.getDefaultInstance() : package_; + } else { + return packageBuilder_.getMessage(); + } + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + public Builder setPackage(org.scip_code.scip.Package value) { + if (packageBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + package_ = value; + } else { + packageBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + public Builder setPackage( + org.scip_code.scip.Package.Builder builderForValue) { + if (packageBuilder_ == null) { + package_ = builderForValue.build(); + } else { + packageBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + public Builder mergePackage(org.scip_code.scip.Package value) { + if (packageBuilder_ == null) { + if (((bitField0_ & 0x00000002) != 0) && + package_ != null && + package_ != org.scip_code.scip.Package.getDefaultInstance()) { + getPackageBuilder().mergeFrom(value); + } else { + package_ = value; + } + } else { + packageBuilder_.mergeFrom(value); + } + if (package_ != null) { + bitField0_ |= 0x00000002; + onChanged(); + } + return this; + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + public Builder clearPackage() { + bitField0_ = (bitField0_ & ~0x00000002); + package_ = null; + if (packageBuilder_ != null) { + packageBuilder_.dispose(); + packageBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + public org.scip_code.scip.Package.Builder getPackageBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return internalGetPackageFieldBuilder().getBuilder(); + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + public org.scip_code.scip.PackageOrBuilder getPackageOrBuilder() { + if (packageBuilder_ != null) { + return packageBuilder_.getMessageOrBuilder(); + } else { + return package_ == null ? + org.scip_code.scip.Package.getDefaultInstance() : package_; + } + } + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Package, org.scip_code.scip.Package.Builder, org.scip_code.scip.PackageOrBuilder> + internalGetPackageFieldBuilder() { + if (packageBuilder_ == null) { + packageBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Package, org.scip_code.scip.Package.Builder, org.scip_code.scip.PackageOrBuilder>( + getPackage(), + getParentForChildren(), + isClean()); + package_ = null; + } + return packageBuilder_; + } + + private java.util.List descriptors_ = + java.util.Collections.emptyList(); + private void ensureDescriptorsIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + descriptors_ = new java.util.ArrayList(descriptors_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Descriptor, org.scip_code.scip.Descriptor.Builder, org.scip_code.scip.DescriptorOrBuilder> descriptorsBuilder_; + + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public java.util.List getDescriptorsList() { + if (descriptorsBuilder_ == null) { + return java.util.Collections.unmodifiableList(descriptors_); + } else { + return descriptorsBuilder_.getMessageList(); + } + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public int getDescriptorsCount() { + if (descriptorsBuilder_ == null) { + return descriptors_.size(); + } else { + return descriptorsBuilder_.getCount(); + } + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public org.scip_code.scip.Descriptor getDescriptors(int index) { + if (descriptorsBuilder_ == null) { + return descriptors_.get(index); + } else { + return descriptorsBuilder_.getMessage(index); + } + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder setDescriptors( + int index, org.scip_code.scip.Descriptor value) { + if (descriptorsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptorsIsMutable(); + descriptors_.set(index, value); + onChanged(); + } else { + descriptorsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder setDescriptors( + int index, org.scip_code.scip.Descriptor.Builder builderForValue) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.set(index, builderForValue.build()); + onChanged(); + } else { + descriptorsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder addDescriptors(org.scip_code.scip.Descriptor value) { + if (descriptorsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptorsIsMutable(); + descriptors_.add(value); + onChanged(); + } else { + descriptorsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder addDescriptors( + int index, org.scip_code.scip.Descriptor value) { + if (descriptorsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureDescriptorsIsMutable(); + descriptors_.add(index, value); + onChanged(); + } else { + descriptorsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder addDescriptors( + org.scip_code.scip.Descriptor.Builder builderForValue) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.add(builderForValue.build()); + onChanged(); + } else { + descriptorsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder addDescriptors( + int index, org.scip_code.scip.Descriptor.Builder builderForValue) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.add(index, builderForValue.build()); + onChanged(); + } else { + descriptorsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder addAllDescriptors( + java.lang.Iterable values) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, descriptors_); + onChanged(); + } else { + descriptorsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder clearDescriptors() { + if (descriptorsBuilder_ == null) { + descriptors_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + descriptorsBuilder_.clear(); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public Builder removeDescriptors(int index) { + if (descriptorsBuilder_ == null) { + ensureDescriptorsIsMutable(); + descriptors_.remove(index); + onChanged(); + } else { + descriptorsBuilder_.remove(index); + } + return this; + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public org.scip_code.scip.Descriptor.Builder getDescriptorsBuilder( + int index) { + return internalGetDescriptorsFieldBuilder().getBuilder(index); + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public org.scip_code.scip.DescriptorOrBuilder getDescriptorsOrBuilder( + int index) { + if (descriptorsBuilder_ == null) { + return descriptors_.get(index); } else { + return descriptorsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public java.util.List + getDescriptorsOrBuilderList() { + if (descriptorsBuilder_ != null) { + return descriptorsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(descriptors_); + } + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public org.scip_code.scip.Descriptor.Builder addDescriptorsBuilder() { + return internalGetDescriptorsFieldBuilder().addBuilder( + org.scip_code.scip.Descriptor.getDefaultInstance()); + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public org.scip_code.scip.Descriptor.Builder addDescriptorsBuilder( + int index) { + return internalGetDescriptorsFieldBuilder().addBuilder( + index, org.scip_code.scip.Descriptor.getDefaultInstance()); + } + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + public java.util.List + getDescriptorsBuilderList() { + return internalGetDescriptorsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Descriptor, org.scip_code.scip.Descriptor.Builder, org.scip_code.scip.DescriptorOrBuilder> + internalGetDescriptorsFieldBuilder() { + if (descriptorsBuilder_ == null) { + descriptorsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Descriptor, org.scip_code.scip.Descriptor.Builder, org.scip_code.scip.DescriptorOrBuilder>( + descriptors_, + ((bitField0_ & 0x00000004) != 0), + getParentForChildren(), + isClean()); + descriptors_ = null; + } + return descriptorsBuilder_; + } + + // @@protoc_insertion_point(builder_scope:scip.Symbol) + } + + // @@protoc_insertion_point(class_scope:scip.Symbol) + private static final org.scip_code.scip.Symbol DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.Symbol(); + } + + public static org.scip_code.scip.Symbol getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Symbol parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.Symbol getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/SymbolInformation.java b/bindings/java/src/main/java/org/scip_code/scip/SymbolInformation.java new file mode 100644 index 00000000..287c09bd --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/SymbolInformation.java @@ -0,0 +1,3545 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * SymbolInformation defines metadata about a symbol, such as the symbol's
+ * docstring or what package it's defined it.
+ * 
+ * + * Protobuf type {@code scip.SymbolInformation} + */ +@com.google.protobuf.Generated +public final class SymbolInformation extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.SymbolInformation) + SymbolInformationOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + SymbolInformation.class.getName()); + } + // Use SymbolInformation.newBuilder() to construct. + private SymbolInformation(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private SymbolInformation() { + symbol_ = ""; + documentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + relationships_ = java.util.Collections.emptyList(); + kind_ = 0; + displayName_ = ""; + enclosingSymbol_ = ""; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_SymbolInformation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_SymbolInformation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.SymbolInformation.class, org.scip_code.scip.SymbolInformation.Builder.class); + } + + /** + *
+   * (optional) Kind represents the fine-grained category of a symbol, suitable for presenting
+   * information about the symbol's meaning in the language.
+   *
+   * For example:
+   * - A Java method would have the kind `Method` while a Go function would
+   * have the kind `Function`, even if the symbols for these use the same
+   * syntax for the descriptor `SymbolDescriptor.Suffix.Method`.
+   * - A Go struct has the symbol kind `Struct` while a Java class has
+   * the symbol kind `Class` even if they both have the same descriptor:
+   * `SymbolDescriptor.Suffix.Type`.
+   *
+   * Since Kind is more fine-grained than Suffix:
+   * - If two symbols have the same Kind, they should share the same Suffix.
+   * - If two symbols have different Suffixes, they should have different Kinds.
+   * 
+ * + * Protobuf enum {@code scip.SymbolInformation.Kind} + */ + public enum Kind + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedKind = 0; + */ + UnspecifiedKind(0), + /** + *
+     * A method which may or may not have a body. For Java, Kotlin etc.
+     * 
+ * + * AbstractMethod = 66; + */ + AbstractMethod(66), + /** + *
+     * For Ruby's attr_accessor
+     * 
+ * + * Accessor = 72; + */ + Accessor(72), + /** + * Array = 1; + */ + Array(1), + /** + *
+     * For Alloy
+     * 
+ * + * Assertion = 2; + */ + Assertion(2), + /** + * AssociatedType = 3; + */ + AssociatedType(3), + /** + *
+     * For C++
+     * 
+ * + * Attribute = 4; + */ + Attribute(4), + /** + *
+     * For Lean
+     * 
+ * + * Axiom = 5; + */ + Axiom(5), + /** + * Boolean = 6; + */ + Boolean(6), + /** + * Class = 7; + */ + Class(7), + /** + *
+     * For C++
+     * 
+ * + * Concept = 86; + */ + Concept(86), + /** + * Constant = 8; + */ + Constant(8), + /** + * Constructor = 9; + */ + Constructor(9), + /** + *
+     * For Solidity
+     * 
+ * + * Contract = 62; + */ + Contract(62), + /** + *
+     * For Haskell
+     * 
+ * + * DataFamily = 10; + */ + DataFamily(10), + /** + *
+     * For C# and F#
+     * 
+ * + * Delegate = 73; + */ + Delegate(73), + /** + * Enum = 11; + */ + Enum(11), + /** + * EnumMember = 12; + */ + EnumMember(12), + /** + * Error = 63; + */ + Error(63), + /** + * Event = 13; + */ + Event(13), + /** + *
+     * For Dart
+     * 
+ * + * Extension = 84; + */ + Extension(84), + /** + *
+     * For Alloy
+     * 
+ * + * Fact = 14; + */ + Fact(14), + /** + * Field = 15; + */ + Field(15), + /** + * File = 16; + */ + File(16), + /** + * Function = 17; + */ + Function(17), + /** + *
+     * For 'get' in Swift, 'attr_reader' in Ruby
+     * 
+ * + * Getter = 18; + */ + Getter(18), + /** + *
+     * For Raku
+     * 
+ * + * Grammar = 19; + */ + Grammar(19), + /** + *
+     * For Purescript and Lean
+     * 
+ * + * Instance = 20; + */ + Instance(20), + /** + * Interface = 21; + */ + Interface(21), + /** + * Key = 22; + */ + Key(22), + /** + *
+     * For Racket
+     * 
+ * + * Lang = 23; + */ + Lang(23), + /** + *
+     * For Lean
+     * 
+ * + * Lemma = 24; + */ + Lemma(24), + /** + *
+     * For solidity
+     * 
+ * + * Library = 64; + */ + Library(64), + /** + * Macro = 25; + */ + Macro(25), + /** + * Method = 26; + */ + Method(26), + /** + *
+     * For Ruby
+     * 
+ * + * MethodAlias = 74; + */ + MethodAlias(74), + /** + *
+     * Analogous to 'ThisParameter' and 'SelfParameter', but for languages
+     * like Go where the receiver doesn't have a conventional name.
+     * 
+ * + * MethodReceiver = 27; + */ + MethodReceiver(27), + /** + *
+     * Analogous to 'AbstractMethod', for Go.
+     * 
+ * + * MethodSpecification = 67; + */ + MethodSpecification(67), + /** + *
+     * For Protobuf
+     * 
+ * + * Message = 28; + */ + Message(28), + /** + *
+     * For Dart
+     * 
+ * + * Mixin = 85; + */ + Mixin(85), + /** + *
+     * For Solidity
+     * 
+ * + * Modifier = 65; + */ + Modifier(65), + /** + * Module = 29; + */ + Module(29), + /** + * Namespace = 30; + */ + Namespace(30), + /** + * Null = 31; + */ + Null(31), + /** + * Number = 32; + */ + Number(32), + /** + * Object = 33; + */ + Object(33), + /** + * Operator = 34; + */ + Operator(34), + /** + * Package = 35; + */ + Package(35), + /** + * PackageObject = 36; + */ + PackageObject(36), + /** + * Parameter = 37; + */ + Parameter(37), + /** + * ParameterLabel = 38; + */ + ParameterLabel(38), + /** + *
+     * For Haskell's PatternSynonyms
+     * 
+ * + * Pattern = 39; + */ + Pattern(39), + /** + *
+     * For Alloy
+     * 
+ * + * Predicate = 40; + */ + Predicate(40), + /** + * Property = 41; + */ + Property(41), + /** + *
+     * Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C
+     * 
+ * + * Protocol = 42; + */ + Protocol(42), + /** + *
+     * Analogous to 'AbstractMethod', for Swift and Objective-C.
+     * 
+ * + * ProtocolMethod = 68; + */ + ProtocolMethod(68), + /** + *
+     * Analogous to 'AbstractMethod', for C++.
+     * 
+ * + * PureVirtualMethod = 69; + */ + PureVirtualMethod(69), + /** + *
+     * For Haskell
+     * 
+ * + * Quasiquoter = 43; + */ + Quasiquoter(43), + /** + *
+     * 'self' in Python, Rust, Swift etc.
+     * 
+ * + * SelfParameter = 44; + */ + SelfParameter(44), + /** + *
+     * For 'set' in Swift, 'attr_writer' in Ruby
+     * 
+ * + * Setter = 45; + */ + Setter(45), + /** + *
+     * For Alloy, analogous to 'Struct'.
+     * 
+ * + * Signature = 46; + */ + Signature(46), + /** + *
+     * For Ruby
+     * 
+ * + * SingletonClass = 75; + */ + SingletonClass(75), + /** + *
+     * Analogous to 'StaticMethod', for Ruby.
+     * 
+ * + * SingletonMethod = 76; + */ + SingletonMethod(76), + /** + *
+     * Analogous to 'StaticField', for C++
+     * 
+ * + * StaticDataMember = 77; + */ + StaticDataMember(77), + /** + *
+     * For C#
+     * 
+ * + * StaticEvent = 78; + */ + StaticEvent(78), + /** + *
+     * For C#
+     * 
+ * + * StaticField = 79; + */ + StaticField(79), + /** + *
+     * For Java, C#, C++ etc.
+     * 
+ * + * StaticMethod = 80; + */ + StaticMethod(80), + /** + *
+     * For C#, TypeScript etc.
+     * 
+ * + * StaticProperty = 81; + */ + StaticProperty(81), + /** + *
+     * For C, C++
+     * 
+ * + * StaticVariable = 82; + */ + StaticVariable(82), + /** + * String = 48; + */ + String(48), + /** + * Struct = 49; + */ + Struct(49), + /** + *
+     * For Swift
+     * 
+ * + * Subscript = 47; + */ + Subscript(47), + /** + *
+     * For Lean
+     * 
+ * + * Tactic = 50; + */ + Tactic(50), + /** + *
+     * For Lean
+     * 
+ * + * Theorem = 51; + */ + Theorem(51), + /** + *
+     * Method receiver for languages
+     * 'this' in JavaScript, C++, Java etc.
+     * 
+ * + * ThisParameter = 52; + */ + ThisParameter(52), + /** + *
+     * Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.
+     * 
+ * + * Trait = 53; + */ + Trait(53), + /** + *
+     * Analogous to 'AbstractMethod', for Rust, Scala etc.
+     * 
+ * + * TraitMethod = 70; + */ + TraitMethod(70), + /** + *
+     * Data type definition for languages like OCaml which use `type`
+     * rather than separate keywords like `struct` and `enum`.
+     * 
+ * + * Type = 54; + */ + Type(54), + /** + * TypeAlias = 55; + */ + TypeAlias(55), + /** + *
+     * Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.
+     * 
+ * + * TypeClass = 56; + */ + TypeClass(56), + /** + *
+     * Analogous to 'AbstractMethod', for Haskell, Purescript etc.
+     * 
+ * + * TypeClassMethod = 71; + */ + TypeClassMethod(71), + /** + *
+     * For Haskell
+     * 
+ * + * TypeFamily = 57; + */ + TypeFamily(57), + /** + * TypeParameter = 58; + */ + TypeParameter(58), + /** + *
+     * For C, C++, Capn Proto
+     * 
+ * + * Union = 59; + */ + Union(59), + /** + * Value = 60; + */ + Value(60), + /** + *
+     * Next = 87;
+     * Feel free to open a PR proposing new language-specific kinds.
+     * 
+ * + * Variable = 61; + */ + Variable(61), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + Kind.class.getName()); + } + /** + * UnspecifiedKind = 0; + */ + public static final int UnspecifiedKind_VALUE = 0; + /** + *
+     * A method which may or may not have a body. For Java, Kotlin etc.
+     * 
+ * + * AbstractMethod = 66; + */ + public static final int AbstractMethod_VALUE = 66; + /** + *
+     * For Ruby's attr_accessor
+     * 
+ * + * Accessor = 72; + */ + public static final int Accessor_VALUE = 72; + /** + * Array = 1; + */ + public static final int Array_VALUE = 1; + /** + *
+     * For Alloy
+     * 
+ * + * Assertion = 2; + */ + public static final int Assertion_VALUE = 2; + /** + * AssociatedType = 3; + */ + public static final int AssociatedType_VALUE = 3; + /** + *
+     * For C++
+     * 
+ * + * Attribute = 4; + */ + public static final int Attribute_VALUE = 4; + /** + *
+     * For Lean
+     * 
+ * + * Axiom = 5; + */ + public static final int Axiom_VALUE = 5; + /** + * Boolean = 6; + */ + public static final int Boolean_VALUE = 6; + /** + * Class = 7; + */ + public static final int Class_VALUE = 7; + /** + *
+     * For C++
+     * 
+ * + * Concept = 86; + */ + public static final int Concept_VALUE = 86; + /** + * Constant = 8; + */ + public static final int Constant_VALUE = 8; + /** + * Constructor = 9; + */ + public static final int Constructor_VALUE = 9; + /** + *
+     * For Solidity
+     * 
+ * + * Contract = 62; + */ + public static final int Contract_VALUE = 62; + /** + *
+     * For Haskell
+     * 
+ * + * DataFamily = 10; + */ + public static final int DataFamily_VALUE = 10; + /** + *
+     * For C# and F#
+     * 
+ * + * Delegate = 73; + */ + public static final int Delegate_VALUE = 73; + /** + * Enum = 11; + */ + public static final int Enum_VALUE = 11; + /** + * EnumMember = 12; + */ + public static final int EnumMember_VALUE = 12; + /** + * Error = 63; + */ + public static final int Error_VALUE = 63; + /** + * Event = 13; + */ + public static final int Event_VALUE = 13; + /** + *
+     * For Dart
+     * 
+ * + * Extension = 84; + */ + public static final int Extension_VALUE = 84; + /** + *
+     * For Alloy
+     * 
+ * + * Fact = 14; + */ + public static final int Fact_VALUE = 14; + /** + * Field = 15; + */ + public static final int Field_VALUE = 15; + /** + * File = 16; + */ + public static final int File_VALUE = 16; + /** + * Function = 17; + */ + public static final int Function_VALUE = 17; + /** + *
+     * For 'get' in Swift, 'attr_reader' in Ruby
+     * 
+ * + * Getter = 18; + */ + public static final int Getter_VALUE = 18; + /** + *
+     * For Raku
+     * 
+ * + * Grammar = 19; + */ + public static final int Grammar_VALUE = 19; + /** + *
+     * For Purescript and Lean
+     * 
+ * + * Instance = 20; + */ + public static final int Instance_VALUE = 20; + /** + * Interface = 21; + */ + public static final int Interface_VALUE = 21; + /** + * Key = 22; + */ + public static final int Key_VALUE = 22; + /** + *
+     * For Racket
+     * 
+ * + * Lang = 23; + */ + public static final int Lang_VALUE = 23; + /** + *
+     * For Lean
+     * 
+ * + * Lemma = 24; + */ + public static final int Lemma_VALUE = 24; + /** + *
+     * For solidity
+     * 
+ * + * Library = 64; + */ + public static final int Library_VALUE = 64; + /** + * Macro = 25; + */ + public static final int Macro_VALUE = 25; + /** + * Method = 26; + */ + public static final int Method_VALUE = 26; + /** + *
+     * For Ruby
+     * 
+ * + * MethodAlias = 74; + */ + public static final int MethodAlias_VALUE = 74; + /** + *
+     * Analogous to 'ThisParameter' and 'SelfParameter', but for languages
+     * like Go where the receiver doesn't have a conventional name.
+     * 
+ * + * MethodReceiver = 27; + */ + public static final int MethodReceiver_VALUE = 27; + /** + *
+     * Analogous to 'AbstractMethod', for Go.
+     * 
+ * + * MethodSpecification = 67; + */ + public static final int MethodSpecification_VALUE = 67; + /** + *
+     * For Protobuf
+     * 
+ * + * Message = 28; + */ + public static final int Message_VALUE = 28; + /** + *
+     * For Dart
+     * 
+ * + * Mixin = 85; + */ + public static final int Mixin_VALUE = 85; + /** + *
+     * For Solidity
+     * 
+ * + * Modifier = 65; + */ + public static final int Modifier_VALUE = 65; + /** + * Module = 29; + */ + public static final int Module_VALUE = 29; + /** + * Namespace = 30; + */ + public static final int Namespace_VALUE = 30; + /** + * Null = 31; + */ + public static final int Null_VALUE = 31; + /** + * Number = 32; + */ + public static final int Number_VALUE = 32; + /** + * Object = 33; + */ + public static final int Object_VALUE = 33; + /** + * Operator = 34; + */ + public static final int Operator_VALUE = 34; + /** + * Package = 35; + */ + public static final int Package_VALUE = 35; + /** + * PackageObject = 36; + */ + public static final int PackageObject_VALUE = 36; + /** + * Parameter = 37; + */ + public static final int Parameter_VALUE = 37; + /** + * ParameterLabel = 38; + */ + public static final int ParameterLabel_VALUE = 38; + /** + *
+     * For Haskell's PatternSynonyms
+     * 
+ * + * Pattern = 39; + */ + public static final int Pattern_VALUE = 39; + /** + *
+     * For Alloy
+     * 
+ * + * Predicate = 40; + */ + public static final int Predicate_VALUE = 40; + /** + * Property = 41; + */ + public static final int Property_VALUE = 41; + /** + *
+     * Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C
+     * 
+ * + * Protocol = 42; + */ + public static final int Protocol_VALUE = 42; + /** + *
+     * Analogous to 'AbstractMethod', for Swift and Objective-C.
+     * 
+ * + * ProtocolMethod = 68; + */ + public static final int ProtocolMethod_VALUE = 68; + /** + *
+     * Analogous to 'AbstractMethod', for C++.
+     * 
+ * + * PureVirtualMethod = 69; + */ + public static final int PureVirtualMethod_VALUE = 69; + /** + *
+     * For Haskell
+     * 
+ * + * Quasiquoter = 43; + */ + public static final int Quasiquoter_VALUE = 43; + /** + *
+     * 'self' in Python, Rust, Swift etc.
+     * 
+ * + * SelfParameter = 44; + */ + public static final int SelfParameter_VALUE = 44; + /** + *
+     * For 'set' in Swift, 'attr_writer' in Ruby
+     * 
+ * + * Setter = 45; + */ + public static final int Setter_VALUE = 45; + /** + *
+     * For Alloy, analogous to 'Struct'.
+     * 
+ * + * Signature = 46; + */ + public static final int Signature_VALUE = 46; + /** + *
+     * For Ruby
+     * 
+ * + * SingletonClass = 75; + */ + public static final int SingletonClass_VALUE = 75; + /** + *
+     * Analogous to 'StaticMethod', for Ruby.
+     * 
+ * + * SingletonMethod = 76; + */ + public static final int SingletonMethod_VALUE = 76; + /** + *
+     * Analogous to 'StaticField', for C++
+     * 
+ * + * StaticDataMember = 77; + */ + public static final int StaticDataMember_VALUE = 77; + /** + *
+     * For C#
+     * 
+ * + * StaticEvent = 78; + */ + public static final int StaticEvent_VALUE = 78; + /** + *
+     * For C#
+     * 
+ * + * StaticField = 79; + */ + public static final int StaticField_VALUE = 79; + /** + *
+     * For Java, C#, C++ etc.
+     * 
+ * + * StaticMethod = 80; + */ + public static final int StaticMethod_VALUE = 80; + /** + *
+     * For C#, TypeScript etc.
+     * 
+ * + * StaticProperty = 81; + */ + public static final int StaticProperty_VALUE = 81; + /** + *
+     * For C, C++
+     * 
+ * + * StaticVariable = 82; + */ + public static final int StaticVariable_VALUE = 82; + /** + * String = 48; + */ + public static final int String_VALUE = 48; + /** + * Struct = 49; + */ + public static final int Struct_VALUE = 49; + /** + *
+     * For Swift
+     * 
+ * + * Subscript = 47; + */ + public static final int Subscript_VALUE = 47; + /** + *
+     * For Lean
+     * 
+ * + * Tactic = 50; + */ + public static final int Tactic_VALUE = 50; + /** + *
+     * For Lean
+     * 
+ * + * Theorem = 51; + */ + public static final int Theorem_VALUE = 51; + /** + *
+     * Method receiver for languages
+     * 'this' in JavaScript, C++, Java etc.
+     * 
+ * + * ThisParameter = 52; + */ + public static final int ThisParameter_VALUE = 52; + /** + *
+     * Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.
+     * 
+ * + * Trait = 53; + */ + public static final int Trait_VALUE = 53; + /** + *
+     * Analogous to 'AbstractMethod', for Rust, Scala etc.
+     * 
+ * + * TraitMethod = 70; + */ + public static final int TraitMethod_VALUE = 70; + /** + *
+     * Data type definition for languages like OCaml which use `type`
+     * rather than separate keywords like `struct` and `enum`.
+     * 
+ * + * Type = 54; + */ + public static final int Type_VALUE = 54; + /** + * TypeAlias = 55; + */ + public static final int TypeAlias_VALUE = 55; + /** + *
+     * Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.
+     * 
+ * + * TypeClass = 56; + */ + public static final int TypeClass_VALUE = 56; + /** + *
+     * Analogous to 'AbstractMethod', for Haskell, Purescript etc.
+     * 
+ * + * TypeClassMethod = 71; + */ + public static final int TypeClassMethod_VALUE = 71; + /** + *
+     * For Haskell
+     * 
+ * + * TypeFamily = 57; + */ + public static final int TypeFamily_VALUE = 57; + /** + * TypeParameter = 58; + */ + public static final int TypeParameter_VALUE = 58; + /** + *
+     * For C, C++, Capn Proto
+     * 
+ * + * Union = 59; + */ + public static final int Union_VALUE = 59; + /** + * Value = 60; + */ + public static final int Value_VALUE = 60; + /** + *
+     * Next = 87;
+     * Feel free to open a PR proposing new language-specific kinds.
+     * 
+ * + * Variable = 61; + */ + public static final int Variable_VALUE = 61; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Kind valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Kind forNumber(int value) { + switch (value) { + case 0: return UnspecifiedKind; + case 66: return AbstractMethod; + case 72: return Accessor; + case 1: return Array; + case 2: return Assertion; + case 3: return AssociatedType; + case 4: return Attribute; + case 5: return Axiom; + case 6: return Boolean; + case 7: return Class; + case 86: return Concept; + case 8: return Constant; + case 9: return Constructor; + case 62: return Contract; + case 10: return DataFamily; + case 73: return Delegate; + case 11: return Enum; + case 12: return EnumMember; + case 63: return Error; + case 13: return Event; + case 84: return Extension; + case 14: return Fact; + case 15: return Field; + case 16: return File; + case 17: return Function; + case 18: return Getter; + case 19: return Grammar; + case 20: return Instance; + case 21: return Interface; + case 22: return Key; + case 23: return Lang; + case 24: return Lemma; + case 64: return Library; + case 25: return Macro; + case 26: return Method; + case 74: return MethodAlias; + case 27: return MethodReceiver; + case 67: return MethodSpecification; + case 28: return Message; + case 85: return Mixin; + case 65: return Modifier; + case 29: return Module; + case 30: return Namespace; + case 31: return Null; + case 32: return Number; + case 33: return Object; + case 34: return Operator; + case 35: return Package; + case 36: return PackageObject; + case 37: return Parameter; + case 38: return ParameterLabel; + case 39: return Pattern; + case 40: return Predicate; + case 41: return Property; + case 42: return Protocol; + case 68: return ProtocolMethod; + case 69: return PureVirtualMethod; + case 43: return Quasiquoter; + case 44: return SelfParameter; + case 45: return Setter; + case 46: return Signature; + case 75: return SingletonClass; + case 76: return SingletonMethod; + case 77: return StaticDataMember; + case 78: return StaticEvent; + case 79: return StaticField; + case 80: return StaticMethod; + case 81: return StaticProperty; + case 82: return StaticVariable; + case 48: return String; + case 49: return Struct; + case 47: return Subscript; + case 50: return Tactic; + case 51: return Theorem; + case 52: return ThisParameter; + case 53: return Trait; + case 70: return TraitMethod; + case 54: return Type; + case 55: return TypeAlias; + case 56: return TypeClass; + case 71: return TypeClassMethod; + case 57: return TypeFamily; + case 58: return TypeParameter; + case 59: return Union; + case 60: return Value; + case 61: return Variable; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + Kind> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Kind findValueByNumber(int number) { + return Kind.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.SymbolInformation.getDescriptor().getEnumTypes().get(0); + } + + private static final Kind[] VALUES = values(); + + public static Kind valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Kind(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.SymbolInformation.Kind) + } + + private int bitField0_; + public static final int SYMBOL_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object symbol_ = ""; + /** + *
+   * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+   * The string must be formatted according to the grammar in `Symbol`.
+   * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @return The symbol. + */ + @java.lang.Override + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } + } + /** + *
+   * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+   * The string must be formatted according to the grammar in `Symbol`.
+   * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int DOCUMENTATION_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringArrayList documentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @return A list containing the documentation. + */ + public com.google.protobuf.ProtocolStringList + getDocumentationList() { + return documentation_; + } + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @return The count of documentation. + */ + public int getDocumentationCount() { + return documentation_.size(); + } + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param index The index of the element to return. + * @return The documentation at the given index. + */ + public java.lang.String getDocumentation(int index) { + return documentation_.get(index); + } + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param index The index of the value to return. + * @return The bytes of the documentation at the given index. + */ + public com.google.protobuf.ByteString + getDocumentationBytes(int index) { + return documentation_.getByteString(index); + } + + public static final int RELATIONSHIPS_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private java.util.List relationships_; + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + @java.lang.Override + public java.util.List getRelationshipsList() { + return relationships_; + } + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + @java.lang.Override + public java.util.List + getRelationshipsOrBuilderList() { + return relationships_; + } + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + @java.lang.Override + public int getRelationshipsCount() { + return relationships_.size(); + } + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + @java.lang.Override + public org.scip_code.scip.Relationship getRelationships(int index) { + return relationships_.get(index); + } + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + @java.lang.Override + public org.scip_code.scip.RelationshipOrBuilder getRelationshipsOrBuilder( + int index) { + return relationships_.get(index); + } + + public static final int KIND_FIELD_NUMBER = 5; + private int kind_ = 0; + /** + *
+   * The kind of this symbol. Use this field instead of
+   * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+   * class or a method.
+   * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @return The enum numeric value on the wire for kind. + */ + @java.lang.Override public int getKindValue() { + return kind_; + } + /** + *
+   * The kind of this symbol. Use this field instead of
+   * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+   * class or a method.
+   * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @return The kind. + */ + @java.lang.Override public org.scip_code.scip.SymbolInformation.Kind getKind() { + org.scip_code.scip.SymbolInformation.Kind result = org.scip_code.scip.SymbolInformation.Kind.forNumber(kind_); + return result == null ? org.scip_code.scip.SymbolInformation.Kind.UNRECOGNIZED : result; + } + + public static final int DISPLAY_NAME_FIELD_NUMBER = 6; + @SuppressWarnings("serial") + private volatile java.lang.Object displayName_ = ""; + /** + *
+   * (optional) The name of this symbol as it should be displayed to the user.
+   * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+   * display name "myMethod". The `symbol` field is not a reliable source of
+   * the display name for several reasons:
+   *
+   * - Local symbols don't encode the name.
+   * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+   * - The symbol may encode names with special characters that should not be
+   * displayed to the user.
+   * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @return The displayName. + */ + @java.lang.Override + public java.lang.String getDisplayName() { + java.lang.Object ref = displayName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + displayName_ = s; + return s; + } + } + /** + *
+   * (optional) The name of this symbol as it should be displayed to the user.
+   * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+   * display name "myMethod". The `symbol` field is not a reliable source of
+   * the display name for several reasons:
+   *
+   * - Local symbols don't encode the name.
+   * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+   * - The symbol may encode names with special characters that should not be
+   * displayed to the user.
+   * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @return The bytes for displayName. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getDisplayNameBytes() { + java.lang.Object ref = displayName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + displayName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SIGNATURE_DOCUMENTATION_FIELD_NUMBER = 7; + private org.scip_code.scip.Signature signatureDocumentation_; + /** + *
+   * (optional) The signature of this symbol as it's displayed in API
+   * documentation or in hover tooltips. For example, a Java method that adds
+   * two numbers would have `Signature.language = "java"` and
+   * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+   * fields are required while `occurrences` can be optionally included to
+   * support hyperlinking referenced symbols in the signature.
+   * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + * @return Whether the signatureDocumentation field is set. + */ + @java.lang.Override + public boolean hasSignatureDocumentation() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+   * (optional) The signature of this symbol as it's displayed in API
+   * documentation or in hover tooltips. For example, a Java method that adds
+   * two numbers would have `Signature.language = "java"` and
+   * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+   * fields are required while `occurrences` can be optionally included to
+   * support hyperlinking referenced symbols in the signature.
+   * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + * @return The signatureDocumentation. + */ + @java.lang.Override + public org.scip_code.scip.Signature getSignatureDocumentation() { + return signatureDocumentation_ == null ? org.scip_code.scip.Signature.getDefaultInstance() : signatureDocumentation_; + } + /** + *
+   * (optional) The signature of this symbol as it's displayed in API
+   * documentation or in hover tooltips. For example, a Java method that adds
+   * two numbers would have `Signature.language = "java"` and
+   * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+   * fields are required while `occurrences` can be optionally included to
+   * support hyperlinking referenced symbols in the signature.
+   * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + @java.lang.Override + public org.scip_code.scip.SignatureOrBuilder getSignatureDocumentationOrBuilder() { + return signatureDocumentation_ == null ? org.scip_code.scip.Signature.getDefaultInstance() : signatureDocumentation_; + } + + public static final int ENCLOSING_SYMBOL_FIELD_NUMBER = 8; + @SuppressWarnings("serial") + private volatile java.lang.Object enclosingSymbol_ = ""; + /** + *
+   * (optional) The enclosing symbol if this is a local symbol.  For non-local
+   * symbols, the enclosing symbol should be parsed from the `symbol` field
+   * using the `Descriptor` grammar.
+   *
+   * The primary use-case for this field is to allow local symbol to be displayed
+   * in a symbol hierarchy for API documentation. It's OK to leave this field
+   * empty for local variables since local variables usually don't belong in API
+   * documentation. However, in the situation that you wish to include a local
+   * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+   * "parent" or "owner" of this local symbol. For example, a Java indexer may
+   * choose to use local symbols for private class fields while providing an
+   * `enclosing_symbol` to reference the enclosing class to allow the field to
+   * be part of the class documentation hierarchy. From the perspective of an
+   * author of an indexer, the decision to use a local symbol or global symbol
+   * should exclusively be determined whether the local symbol is accessible
+   * outside the document, not by the capability to find the enclosing
+   * symbol.
+   * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @return The enclosingSymbol. + */ + @java.lang.Override + public java.lang.String getEnclosingSymbol() { + java.lang.Object ref = enclosingSymbol_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + enclosingSymbol_ = s; + return s; + } + } + /** + *
+   * (optional) The enclosing symbol if this is a local symbol.  For non-local
+   * symbols, the enclosing symbol should be parsed from the `symbol` field
+   * using the `Descriptor` grammar.
+   *
+   * The primary use-case for this field is to allow local symbol to be displayed
+   * in a symbol hierarchy for API documentation. It's OK to leave this field
+   * empty for local variables since local variables usually don't belong in API
+   * documentation. However, in the situation that you wish to include a local
+   * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+   * "parent" or "owner" of this local symbol. For example, a Java indexer may
+   * choose to use local symbols for private class fields while providing an
+   * `enclosing_symbol` to reference the enclosing class to allow the field to
+   * be part of the class documentation hierarchy. From the perspective of an
+   * author of an indexer, the decision to use a local symbol or global symbol
+   * should exclusively be determined whether the local symbol is accessible
+   * outside the document, not by the capability to find the enclosing
+   * symbol.
+   * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @return The bytes for enclosingSymbol. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getEnclosingSymbolBytes() { + java.lang.Object ref = enclosingSymbol_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + enclosingSymbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(symbol_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, symbol_); + } + for (int i = 0; i < documentation_.size(); i++) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, documentation_.getRaw(i)); + } + for (int i = 0; i < relationships_.size(); i++) { + output.writeMessage(4, relationships_.get(i)); + } + if (kind_ != org.scip_code.scip.SymbolInformation.Kind.UnspecifiedKind.getNumber()) { + output.writeEnum(5, kind_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(displayName_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 6, displayName_); + } + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(7, getSignatureDocumentation()); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(enclosingSymbol_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 8, enclosingSymbol_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(symbol_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, symbol_); + } + { + int dataSize = 0; + for (int i = 0; i < documentation_.size(); i++) { + dataSize += computeStringSizeNoTag(documentation_.getRaw(i)); + } + size += dataSize; + size += 1 * getDocumentationList().size(); + } + for (int i = 0; i < relationships_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, relationships_.get(i)); + } + if (kind_ != org.scip_code.scip.SymbolInformation.Kind.UnspecifiedKind.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, kind_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(displayName_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(6, displayName_); + } + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(7, getSignatureDocumentation()); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(enclosingSymbol_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(8, enclosingSymbol_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.SymbolInformation)) { + return super.equals(obj); + } + org.scip_code.scip.SymbolInformation other = (org.scip_code.scip.SymbolInformation) obj; + + if (!getSymbol() + .equals(other.getSymbol())) return false; + if (!getDocumentationList() + .equals(other.getDocumentationList())) return false; + if (!getRelationshipsList() + .equals(other.getRelationshipsList())) return false; + if (kind_ != other.kind_) return false; + if (!getDisplayName() + .equals(other.getDisplayName())) return false; + if (hasSignatureDocumentation() != other.hasSignatureDocumentation()) return false; + if (hasSignatureDocumentation()) { + if (!getSignatureDocumentation() + .equals(other.getSignatureDocumentation())) return false; + } + if (!getEnclosingSymbol() + .equals(other.getEnclosingSymbol())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getSymbol().hashCode(); + if (getDocumentationCount() > 0) { + hash = (37 * hash) + DOCUMENTATION_FIELD_NUMBER; + hash = (53 * hash) + getDocumentationList().hashCode(); + } + if (getRelationshipsCount() > 0) { + hash = (37 * hash) + RELATIONSHIPS_FIELD_NUMBER; + hash = (53 * hash) + getRelationshipsList().hashCode(); + } + hash = (37 * hash) + KIND_FIELD_NUMBER; + hash = (53 * hash) + kind_; + hash = (37 * hash) + DISPLAY_NAME_FIELD_NUMBER; + hash = (53 * hash) + getDisplayName().hashCode(); + if (hasSignatureDocumentation()) { + hash = (37 * hash) + SIGNATURE_DOCUMENTATION_FIELD_NUMBER; + hash = (53 * hash) + getSignatureDocumentation().hashCode(); + } + hash = (37 * hash) + ENCLOSING_SYMBOL_FIELD_NUMBER; + hash = (53 * hash) + getEnclosingSymbol().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.SymbolInformation parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.SymbolInformation parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.SymbolInformation parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.SymbolInformation parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.SymbolInformation parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.SymbolInformation parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.SymbolInformation parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.SymbolInformation parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.SymbolInformation parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.SymbolInformation parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.SymbolInformation parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.SymbolInformation parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.SymbolInformation prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+   * SymbolInformation defines metadata about a symbol, such as the symbol's
+   * docstring or what package it's defined it.
+   * 
+ * + * Protobuf type {@code scip.SymbolInformation} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.SymbolInformation) + org.scip_code.scip.SymbolInformationOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_SymbolInformation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_SymbolInformation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.SymbolInformation.class, org.scip_code.scip.SymbolInformation.Builder.class); + } + + // Construct using org.scip_code.scip.SymbolInformation.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage + .alwaysUseFieldBuilders) { + internalGetRelationshipsFieldBuilder(); + internalGetSignatureDocumentationFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + symbol_ = ""; + documentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + if (relationshipsBuilder_ == null) { + relationships_ = java.util.Collections.emptyList(); + } else { + relationships_ = null; + relationshipsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000004); + kind_ = 0; + displayName_ = ""; + signatureDocumentation_ = null; + if (signatureDocumentationBuilder_ != null) { + signatureDocumentationBuilder_.dispose(); + signatureDocumentationBuilder_ = null; + } + enclosingSymbol_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_SymbolInformation_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.SymbolInformation getDefaultInstanceForType() { + return org.scip_code.scip.SymbolInformation.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.SymbolInformation build() { + org.scip_code.scip.SymbolInformation result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.SymbolInformation buildPartial() { + org.scip_code.scip.SymbolInformation result = new org.scip_code.scip.SymbolInformation(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(org.scip_code.scip.SymbolInformation result) { + if (relationshipsBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0)) { + relationships_ = java.util.Collections.unmodifiableList(relationships_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.relationships_ = relationships_; + } else { + result.relationships_ = relationshipsBuilder_.build(); + } + } + + private void buildPartial0(org.scip_code.scip.SymbolInformation result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.symbol_ = symbol_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + documentation_.makeImmutable(); + result.documentation_ = documentation_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.kind_ = kind_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.displayName_ = displayName_; + } + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000020) != 0)) { + result.signatureDocumentation_ = signatureDocumentationBuilder_ == null + ? signatureDocumentation_ + : signatureDocumentationBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.enclosingSymbol_ = enclosingSymbol_; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.SymbolInformation) { + return mergeFrom((org.scip_code.scip.SymbolInformation)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.SymbolInformation other) { + if (other == org.scip_code.scip.SymbolInformation.getDefaultInstance()) return this; + if (!other.getSymbol().isEmpty()) { + symbol_ = other.symbol_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.documentation_.isEmpty()) { + if (documentation_.isEmpty()) { + documentation_ = other.documentation_; + bitField0_ |= 0x00000002; + } else { + ensureDocumentationIsMutable(); + documentation_.addAll(other.documentation_); + } + onChanged(); + } + if (relationshipsBuilder_ == null) { + if (!other.relationships_.isEmpty()) { + if (relationships_.isEmpty()) { + relationships_ = other.relationships_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureRelationshipsIsMutable(); + relationships_.addAll(other.relationships_); + } + onChanged(); + } + } else { + if (!other.relationships_.isEmpty()) { + if (relationshipsBuilder_.isEmpty()) { + relationshipsBuilder_.dispose(); + relationshipsBuilder_ = null; + relationships_ = other.relationships_; + bitField0_ = (bitField0_ & ~0x00000004); + relationshipsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + internalGetRelationshipsFieldBuilder() : null; + } else { + relationshipsBuilder_.addAllMessages(other.relationships_); + } + } + } + if (other.kind_ != 0) { + setKindValue(other.getKindValue()); + } + if (!other.getDisplayName().isEmpty()) { + displayName_ = other.displayName_; + bitField0_ |= 0x00000010; + onChanged(); + } + if (other.hasSignatureDocumentation()) { + mergeSignatureDocumentation(other.getSignatureDocumentation()); + } + if (!other.getEnclosingSymbol().isEmpty()) { + enclosingSymbol_ = other.enclosingSymbol_; + bitField0_ |= 0x00000040; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + symbol_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + ensureDocumentationIsMutable(); + documentation_.add(s); + break; + } // case 26 + case 34: { + org.scip_code.scip.Relationship m = + input.readMessage( + org.scip_code.scip.Relationship.parser(), + extensionRegistry); + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.add(m); + } else { + relationshipsBuilder_.addMessage(m); + } + break; + } // case 34 + case 40: { + kind_ = input.readEnum(); + bitField0_ |= 0x00000008; + break; + } // case 40 + case 50: { + displayName_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; + break; + } // case 50 + case 58: { + input.readMessage( + internalGetSignatureDocumentationFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000020; + break; + } // case 58 + case 66: { + enclosingSymbol_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000040; + break; + } // case 66 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object symbol_ = ""; + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @return The symbol. + */ + public java.lang.String getSymbol() { + java.lang.Object ref = symbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + symbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + public com.google.protobuf.ByteString + getSymbolBytes() { + java.lang.Object ref = symbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + symbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @param value The symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbol( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + symbol_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @return This builder for chaining. + */ + public Builder clearSymbol() { + symbol_ = getDefaultInstance().getSymbol(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+     * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+     * The string must be formatted according to the grammar in `Symbol`.
+     * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @param value The bytes for symbol to set. + * @return This builder for chaining. + */ + public Builder setSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + symbol_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringArrayList documentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + private void ensureDocumentationIsMutable() { + if (!documentation_.isModifiable()) { + documentation_ = new com.google.protobuf.LazyStringArrayList(documentation_); + } + bitField0_ |= 0x00000002; + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @return A list containing the documentation. + */ + public com.google.protobuf.ProtocolStringList + getDocumentationList() { + documentation_.makeImmutable(); + return documentation_; + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @return The count of documentation. + */ + public int getDocumentationCount() { + return documentation_.size(); + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param index The index of the element to return. + * @return The documentation at the given index. + */ + public java.lang.String getDocumentation(int index) { + return documentation_.get(index); + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param index The index of the value to return. + * @return The bytes of the documentation at the given index. + */ + public com.google.protobuf.ByteString + getDocumentationBytes(int index) { + return documentation_.getByteString(index); + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param index The index to set the value at. + * @param value The documentation to set. + * @return This builder for chaining. + */ + public Builder setDocumentation( + int index, java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureDocumentationIsMutable(); + documentation_.set(index, value); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param value The documentation to add. + * @return This builder for chaining. + */ + public Builder addDocumentation( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureDocumentationIsMutable(); + documentation_.add(value); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param values The documentation to add. + * @return This builder for chaining. + */ + public Builder addAllDocumentation( + java.lang.Iterable values) { + ensureDocumentationIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, documentation_); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @return This builder for chaining. + */ + public Builder clearDocumentation() { + documentation_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002);; + onChanged(); + return this; + } + /** + *
+     * (optional, but strongly recommended) The markdown-formatted documentation
+     * for this symbol. Use `SymbolInformation.signature_documentation` to
+     * document the method/class/type signature of this symbol.
+     * Due to historical reasons, indexers may include signature documentation in
+     * this field by rendering markdown code blocks. New indexers should only
+     * include non-code documentation in this field, for example docstrings.
+     * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param value The bytes of the documentation to add. + * @return This builder for chaining. + */ + public Builder addDocumentationBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + ensureDocumentationIsMutable(); + documentation_.add(value); + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private java.util.List relationships_ = + java.util.Collections.emptyList(); + private void ensureRelationshipsIsMutable() { + if (!((bitField0_ & 0x00000004) != 0)) { + relationships_ = new java.util.ArrayList(relationships_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Relationship, org.scip_code.scip.Relationship.Builder, org.scip_code.scip.RelationshipOrBuilder> relationshipsBuilder_; + + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public java.util.List getRelationshipsList() { + if (relationshipsBuilder_ == null) { + return java.util.Collections.unmodifiableList(relationships_); + } else { + return relationshipsBuilder_.getMessageList(); + } + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public int getRelationshipsCount() { + if (relationshipsBuilder_ == null) { + return relationships_.size(); + } else { + return relationshipsBuilder_.getCount(); + } + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public org.scip_code.scip.Relationship getRelationships(int index) { + if (relationshipsBuilder_ == null) { + return relationships_.get(index); + } else { + return relationshipsBuilder_.getMessage(index); + } + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder setRelationships( + int index, org.scip_code.scip.Relationship value) { + if (relationshipsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRelationshipsIsMutable(); + relationships_.set(index, value); + onChanged(); + } else { + relationshipsBuilder_.setMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder setRelationships( + int index, org.scip_code.scip.Relationship.Builder builderForValue) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.set(index, builderForValue.build()); + onChanged(); + } else { + relationshipsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder addRelationships(org.scip_code.scip.Relationship value) { + if (relationshipsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRelationshipsIsMutable(); + relationships_.add(value); + onChanged(); + } else { + relationshipsBuilder_.addMessage(value); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder addRelationships( + int index, org.scip_code.scip.Relationship value) { + if (relationshipsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRelationshipsIsMutable(); + relationships_.add(index, value); + onChanged(); + } else { + relationshipsBuilder_.addMessage(index, value); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder addRelationships( + org.scip_code.scip.Relationship.Builder builderForValue) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.add(builderForValue.build()); + onChanged(); + } else { + relationshipsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder addRelationships( + int index, org.scip_code.scip.Relationship.Builder builderForValue) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.add(index, builderForValue.build()); + onChanged(); + } else { + relationshipsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder addAllRelationships( + java.lang.Iterable values) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, relationships_); + onChanged(); + } else { + relationshipsBuilder_.addAllMessages(values); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder clearRelationships() { + if (relationshipsBuilder_ == null) { + relationships_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + relationshipsBuilder_.clear(); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public Builder removeRelationships(int index) { + if (relationshipsBuilder_ == null) { + ensureRelationshipsIsMutable(); + relationships_.remove(index); + onChanged(); + } else { + relationshipsBuilder_.remove(index); + } + return this; + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public org.scip_code.scip.Relationship.Builder getRelationshipsBuilder( + int index) { + return internalGetRelationshipsFieldBuilder().getBuilder(index); + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public org.scip_code.scip.RelationshipOrBuilder getRelationshipsOrBuilder( + int index) { + if (relationshipsBuilder_ == null) { + return relationships_.get(index); } else { + return relationshipsBuilder_.getMessageOrBuilder(index); + } + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public java.util.List + getRelationshipsOrBuilderList() { + if (relationshipsBuilder_ != null) { + return relationshipsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(relationships_); + } + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public org.scip_code.scip.Relationship.Builder addRelationshipsBuilder() { + return internalGetRelationshipsFieldBuilder().addBuilder( + org.scip_code.scip.Relationship.getDefaultInstance()); + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public org.scip_code.scip.Relationship.Builder addRelationshipsBuilder( + int index) { + return internalGetRelationshipsFieldBuilder().addBuilder( + index, org.scip_code.scip.Relationship.getDefaultInstance()); + } + /** + *
+     * (optional) Relationships to other symbols (e.g., implements, type definition).
+     * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + public java.util.List + getRelationshipsBuilderList() { + return internalGetRelationshipsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Relationship, org.scip_code.scip.Relationship.Builder, org.scip_code.scip.RelationshipOrBuilder> + internalGetRelationshipsFieldBuilder() { + if (relationshipsBuilder_ == null) { + relationshipsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.scip_code.scip.Relationship, org.scip_code.scip.Relationship.Builder, org.scip_code.scip.RelationshipOrBuilder>( + relationships_, + ((bitField0_ & 0x00000004) != 0), + getParentForChildren(), + isClean()); + relationships_ = null; + } + return relationshipsBuilder_; + } + + private int kind_ = 0; + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @return The enum numeric value on the wire for kind. + */ + @java.lang.Override public int getKindValue() { + return kind_; + } + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @param value The enum numeric value on the wire for kind to set. + * @return This builder for chaining. + */ + public Builder setKindValue(int value) { + kind_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @return The kind. + */ + @java.lang.Override + public org.scip_code.scip.SymbolInformation.Kind getKind() { + org.scip_code.scip.SymbolInformation.Kind result = org.scip_code.scip.SymbolInformation.Kind.forNumber(kind_); + return result == null ? org.scip_code.scip.SymbolInformation.Kind.UNRECOGNIZED : result; + } + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @param value The kind to set. + * @return This builder for chaining. + */ + public Builder setKind(org.scip_code.scip.SymbolInformation.Kind value) { + if (value == null) { throw new NullPointerException(); } + bitField0_ |= 0x00000008; + kind_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+     * The kind of this symbol. Use this field instead of
+     * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+     * class or a method.
+     * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @return This builder for chaining. + */ + public Builder clearKind() { + bitField0_ = (bitField0_ & ~0x00000008); + kind_ = 0; + onChanged(); + return this; + } + + private java.lang.Object displayName_ = ""; + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     *
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     * displayed to the user.
+     * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @return The displayName. + */ + public java.lang.String getDisplayName() { + java.lang.Object ref = displayName_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + displayName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     *
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     * displayed to the user.
+     * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @return The bytes for displayName. + */ + public com.google.protobuf.ByteString + getDisplayNameBytes() { + java.lang.Object ref = displayName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + displayName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     *
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     * displayed to the user.
+     * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @param value The displayName to set. + * @return This builder for chaining. + */ + public Builder setDisplayName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + displayName_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     *
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     * displayed to the user.
+     * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @return This builder for chaining. + */ + public Builder clearDisplayName() { + displayName_ = getDefaultInstance().getDisplayName(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + /** + *
+     * (optional) The name of this symbol as it should be displayed to the user.
+     * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+     * display name "myMethod". The `symbol` field is not a reliable source of
+     * the display name for several reasons:
+     *
+     * - Local symbols don't encode the name.
+     * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+     * - The symbol may encode names with special characters that should not be
+     * displayed to the user.
+     * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @param value The bytes for displayName to set. + * @return This builder for chaining. + */ + public Builder setDisplayNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + displayName_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + private org.scip_code.scip.Signature signatureDocumentation_; + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Signature, org.scip_code.scip.Signature.Builder, org.scip_code.scip.SignatureOrBuilder> signatureDocumentationBuilder_; + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + * @return Whether the signatureDocumentation field is set. + */ + public boolean hasSignatureDocumentation() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + * @return The signatureDocumentation. + */ + public org.scip_code.scip.Signature getSignatureDocumentation() { + if (signatureDocumentationBuilder_ == null) { + return signatureDocumentation_ == null ? org.scip_code.scip.Signature.getDefaultInstance() : signatureDocumentation_; + } else { + return signatureDocumentationBuilder_.getMessage(); + } + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + public Builder setSignatureDocumentation(org.scip_code.scip.Signature value) { + if (signatureDocumentationBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + signatureDocumentation_ = value; + } else { + signatureDocumentationBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + public Builder setSignatureDocumentation( + org.scip_code.scip.Signature.Builder builderForValue) { + if (signatureDocumentationBuilder_ == null) { + signatureDocumentation_ = builderForValue.build(); + } else { + signatureDocumentationBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + public Builder mergeSignatureDocumentation(org.scip_code.scip.Signature value) { + if (signatureDocumentationBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0) && + signatureDocumentation_ != null && + signatureDocumentation_ != org.scip_code.scip.Signature.getDefaultInstance()) { + getSignatureDocumentationBuilder().mergeFrom(value); + } else { + signatureDocumentation_ = value; + } + } else { + signatureDocumentationBuilder_.mergeFrom(value); + } + if (signatureDocumentation_ != null) { + bitField0_ |= 0x00000020; + onChanged(); + } + return this; + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + public Builder clearSignatureDocumentation() { + bitField0_ = (bitField0_ & ~0x00000020); + signatureDocumentation_ = null; + if (signatureDocumentationBuilder_ != null) { + signatureDocumentationBuilder_.dispose(); + signatureDocumentationBuilder_ = null; + } + onChanged(); + return this; + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + public org.scip_code.scip.Signature.Builder getSignatureDocumentationBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return internalGetSignatureDocumentationFieldBuilder().getBuilder(); + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + public org.scip_code.scip.SignatureOrBuilder getSignatureDocumentationOrBuilder() { + if (signatureDocumentationBuilder_ != null) { + return signatureDocumentationBuilder_.getMessageOrBuilder(); + } else { + return signatureDocumentation_ == null ? + org.scip_code.scip.Signature.getDefaultInstance() : signatureDocumentation_; + } + } + /** + *
+     * (optional) The signature of this symbol as it's displayed in API
+     * documentation or in hover tooltips. For example, a Java method that adds
+     * two numbers would have `Signature.language = "java"` and
+     * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+     * fields are required while `occurrences` can be optionally included to
+     * support hyperlinking referenced symbols in the signature.
+     * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + private com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Signature, org.scip_code.scip.Signature.Builder, org.scip_code.scip.SignatureOrBuilder> + internalGetSignatureDocumentationFieldBuilder() { + if (signatureDocumentationBuilder_ == null) { + signatureDocumentationBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.scip_code.scip.Signature, org.scip_code.scip.Signature.Builder, org.scip_code.scip.SignatureOrBuilder>( + getSignatureDocumentation(), + getParentForChildren(), + isClean()); + signatureDocumentation_ = null; + } + return signatureDocumentationBuilder_; + } + + private java.lang.Object enclosingSymbol_ = ""; + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     *
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @return The enclosingSymbol. + */ + public java.lang.String getEnclosingSymbol() { + java.lang.Object ref = enclosingSymbol_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + enclosingSymbol_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     *
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @return The bytes for enclosingSymbol. + */ + public com.google.protobuf.ByteString + getEnclosingSymbolBytes() { + java.lang.Object ref = enclosingSymbol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + enclosingSymbol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     *
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @param value The enclosingSymbol to set. + * @return This builder for chaining. + */ + public Builder setEnclosingSymbol( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + enclosingSymbol_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     *
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @return This builder for chaining. + */ + public Builder clearEnclosingSymbol() { + enclosingSymbol_ = getDefaultInstance().getEnclosingSymbol(); + bitField0_ = (bitField0_ & ~0x00000040); + onChanged(); + return this; + } + /** + *
+     * (optional) The enclosing symbol if this is a local symbol.  For non-local
+     * symbols, the enclosing symbol should be parsed from the `symbol` field
+     * using the `Descriptor` grammar.
+     *
+     * The primary use-case for this field is to allow local symbol to be displayed
+     * in a symbol hierarchy for API documentation. It's OK to leave this field
+     * empty for local variables since local variables usually don't belong in API
+     * documentation. However, in the situation that you wish to include a local
+     * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+     * "parent" or "owner" of this local symbol. For example, a Java indexer may
+     * choose to use local symbols for private class fields while providing an
+     * `enclosing_symbol` to reference the enclosing class to allow the field to
+     * be part of the class documentation hierarchy. From the perspective of an
+     * author of an indexer, the decision to use a local symbol or global symbol
+     * should exclusively be determined whether the local symbol is accessible
+     * outside the document, not by the capability to find the enclosing
+     * symbol.
+     * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @param value The bytes for enclosingSymbol to set. + * @return This builder for chaining. + */ + public Builder setEnclosingSymbolBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + enclosingSymbol_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.SymbolInformation) + } + + // @@protoc_insertion_point(class_scope:scip.SymbolInformation) + private static final org.scip_code.scip.SymbolInformation DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.SymbolInformation(); + } + + public static org.scip_code.scip.SymbolInformation getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SymbolInformation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.SymbolInformation getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/SymbolInformationOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/SymbolInformationOrBuilder.java new file mode 100644 index 00000000..ba919cc1 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/SymbolInformationOrBuilder.java @@ -0,0 +1,292 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface SymbolInformationOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.SymbolInformation) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+   * The string must be formatted according to the grammar in `Symbol`.
+   * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @return The symbol. + */ + java.lang.String getSymbol(); + /** + *
+   * Identifier of this symbol, which can be referenced from `Occurence.symbol`.
+   * The string must be formatted according to the grammar in `Symbol`.
+   * 
+ * + * string symbol = 1 [json_name = "symbol"]; + * @return The bytes for symbol. + */ + com.google.protobuf.ByteString + getSymbolBytes(); + + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @return A list containing the documentation. + */ + java.util.List + getDocumentationList(); + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @return The count of documentation. + */ + int getDocumentationCount(); + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param index The index of the element to return. + * @return The documentation at the given index. + */ + java.lang.String getDocumentation(int index); + /** + *
+   * (optional, but strongly recommended) The markdown-formatted documentation
+   * for this symbol. Use `SymbolInformation.signature_documentation` to
+   * document the method/class/type signature of this symbol.
+   * Due to historical reasons, indexers may include signature documentation in
+   * this field by rendering markdown code blocks. New indexers should only
+   * include non-code documentation in this field, for example docstrings.
+   * 
+ * + * repeated string documentation = 3 [json_name = "documentation"]; + * @param index The index of the value to return. + * @return The bytes of the documentation at the given index. + */ + com.google.protobuf.ByteString + getDocumentationBytes(int index); + + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + java.util.List + getRelationshipsList(); + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + org.scip_code.scip.Relationship getRelationships(int index); + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + int getRelationshipsCount(); + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + java.util.List + getRelationshipsOrBuilderList(); + /** + *
+   * (optional) Relationships to other symbols (e.g., implements, type definition).
+   * 
+ * + * repeated .scip.Relationship relationships = 4 [json_name = "relationships"]; + */ + org.scip_code.scip.RelationshipOrBuilder getRelationshipsOrBuilder( + int index); + + /** + *
+   * The kind of this symbol. Use this field instead of
+   * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+   * class or a method.
+   * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @return The enum numeric value on the wire for kind. + */ + int getKindValue(); + /** + *
+   * The kind of this symbol. Use this field instead of
+   * `SymbolDescriptor.Suffix` to determine whether something is, for example, a
+   * class or a method.
+   * 
+ * + * .scip.SymbolInformation.Kind kind = 5 [json_name = "kind"]; + * @return The kind. + */ + org.scip_code.scip.SymbolInformation.Kind getKind(); + + /** + *
+   * (optional) The name of this symbol as it should be displayed to the user.
+   * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+   * display name "myMethod". The `symbol` field is not a reliable source of
+   * the display name for several reasons:
+   *
+   * - Local symbols don't encode the name.
+   * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+   * - The symbol may encode names with special characters that should not be
+   * displayed to the user.
+   * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @return The displayName. + */ + java.lang.String getDisplayName(); + /** + *
+   * (optional) The name of this symbol as it should be displayed to the user.
+   * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the
+   * display name "myMethod". The `symbol` field is not a reliable source of
+   * the display name for several reasons:
+   *
+   * - Local symbols don't encode the name.
+   * - Some languages have case-insensitive names, so the symbol is all-lowercase.
+   * - The symbol may encode names with special characters that should not be
+   * displayed to the user.
+   * 
+ * + * string display_name = 6 [json_name = "displayName"]; + * @return The bytes for displayName. + */ + com.google.protobuf.ByteString + getDisplayNameBytes(); + + /** + *
+   * (optional) The signature of this symbol as it's displayed in API
+   * documentation or in hover tooltips. For example, a Java method that adds
+   * two numbers would have `Signature.language = "java"` and
+   * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+   * fields are required while `occurrences` can be optionally included to
+   * support hyperlinking referenced symbols in the signature.
+   * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + * @return Whether the signatureDocumentation field is set. + */ + boolean hasSignatureDocumentation(); + /** + *
+   * (optional) The signature of this symbol as it's displayed in API
+   * documentation or in hover tooltips. For example, a Java method that adds
+   * two numbers would have `Signature.language = "java"` and
+   * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+   * fields are required while `occurrences` can be optionally included to
+   * support hyperlinking referenced symbols in the signature.
+   * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + * @return The signatureDocumentation. + */ + org.scip_code.scip.Signature getSignatureDocumentation(); + /** + *
+   * (optional) The signature of this symbol as it's displayed in API
+   * documentation or in hover tooltips. For example, a Java method that adds
+   * two numbers would have `Signature.language = "java"` and
+   * `Signature.text = "void add(int a, int b)"`. The `language` and `text`
+   * fields are required while `occurrences` can be optionally included to
+   * support hyperlinking referenced symbols in the signature.
+   * 
+ * + * .scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"]; + */ + org.scip_code.scip.SignatureOrBuilder getSignatureDocumentationOrBuilder(); + + /** + *
+   * (optional) The enclosing symbol if this is a local symbol.  For non-local
+   * symbols, the enclosing symbol should be parsed from the `symbol` field
+   * using the `Descriptor` grammar.
+   *
+   * The primary use-case for this field is to allow local symbol to be displayed
+   * in a symbol hierarchy for API documentation. It's OK to leave this field
+   * empty for local variables since local variables usually don't belong in API
+   * documentation. However, in the situation that you wish to include a local
+   * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+   * "parent" or "owner" of this local symbol. For example, a Java indexer may
+   * choose to use local symbols for private class fields while providing an
+   * `enclosing_symbol` to reference the enclosing class to allow the field to
+   * be part of the class documentation hierarchy. From the perspective of an
+   * author of an indexer, the decision to use a local symbol or global symbol
+   * should exclusively be determined whether the local symbol is accessible
+   * outside the document, not by the capability to find the enclosing
+   * symbol.
+   * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @return The enclosingSymbol. + */ + java.lang.String getEnclosingSymbol(); + /** + *
+   * (optional) The enclosing symbol if this is a local symbol.  For non-local
+   * symbols, the enclosing symbol should be parsed from the `symbol` field
+   * using the `Descriptor` grammar.
+   *
+   * The primary use-case for this field is to allow local symbol to be displayed
+   * in a symbol hierarchy for API documentation. It's OK to leave this field
+   * empty for local variables since local variables usually don't belong in API
+   * documentation. However, in the situation that you wish to include a local
+   * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the
+   * "parent" or "owner" of this local symbol. For example, a Java indexer may
+   * choose to use local symbols for private class fields while providing an
+   * `enclosing_symbol` to reference the enclosing class to allow the field to
+   * be part of the class documentation hierarchy. From the perspective of an
+   * author of an indexer, the decision to use a local symbol or global symbol
+   * should exclusively be determined whether the local symbol is accessible
+   * outside the document, not by the capability to find the enclosing
+   * symbol.
+   * 
+ * + * string enclosing_symbol = 8 [json_name = "enclosingSymbol"]; + * @return The bytes for enclosingSymbol. + */ + com.google.protobuf.ByteString + getEnclosingSymbolBytes(); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/SymbolOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/SymbolOrBuilder.java new file mode 100644 index 00000000..3136b042 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/SymbolOrBuilder.java @@ -0,0 +1,63 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface SymbolOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.Symbol) + com.google.protobuf.MessageOrBuilder { + + /** + * string scheme = 1 [json_name = "scheme"]; + * @return The scheme. + */ + java.lang.String getScheme(); + /** + * string scheme = 1 [json_name = "scheme"]; + * @return The bytes for scheme. + */ + com.google.protobuf.ByteString + getSchemeBytes(); + + /** + * .scip.Package package = 2 [json_name = "package"]; + * @return Whether the package field is set. + */ + boolean hasPackage(); + /** + * .scip.Package package = 2 [json_name = "package"]; + * @return The package. + */ + org.scip_code.scip.Package getPackage(); + /** + * .scip.Package package = 2 [json_name = "package"]; + */ + org.scip_code.scip.PackageOrBuilder getPackageOrBuilder(); + + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + java.util.List + getDescriptorsList(); + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + org.scip_code.scip.Descriptor getDescriptors(int index); + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + int getDescriptorsCount(); + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + java.util.List + getDescriptorsOrBuilderList(); + /** + * repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"]; + */ + org.scip_code.scip.DescriptorOrBuilder getDescriptorsOrBuilder( + int index); +} diff --git a/bindings/java/src/main/java/org/scip_code/scip/SymbolRole.java b/bindings/java/src/main/java/org/scip_code/scip/SymbolRole.java new file mode 100644 index 00000000..c840aafd --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/SymbolRole.java @@ -0,0 +1,261 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + *
+ * SymbolRole declares what "role" a symbol has in an occurrence. A role is
+ * encoded as a bitset where each bit represents a different role. For example,
+ * to determine if the `Import` role is set, test whether the second bit of the
+ * enum value is defined. In pseudocode, this can be implemented with the
+ * logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`.
+ * 
+ * + * Protobuf enum {@code scip.SymbolRole} + */ +@com.google.protobuf.Generated +public enum SymbolRole + implements com.google.protobuf.ProtocolMessageEnum { + /** + *
+   * This case is not meant to be used; it only exists to avoid an error
+   * from the Protobuf code generator.
+   * 
+ * + * UnspecifiedSymbolRole = 0; + */ + UnspecifiedSymbolRole(0), + /** + *
+   * Is the symbol defined here? If not, then this is a symbol reference.
+   * 
+ * + * Definition = 1; + */ + Definition(1), + /** + *
+   * Is the symbol imported here?
+   * 
+ * + * Import = 2; + */ + Import(2), + /** + *
+   * Is the symbol written here?
+   * 
+ * + * WriteAccess = 4; + */ + WriteAccess(4), + /** + *
+   * Is the symbol read here?
+   * 
+ * + * ReadAccess = 8; + */ + ReadAccess(8), + /** + *
+   * Is the symbol in generated code?
+   * 
+ * + * Generated = 16; + */ + Generated(16), + /** + *
+   * Is the symbol in test code?
+   * 
+ * + * Test = 32; + */ + Test(32), + /** + *
+   * Is this a signature for a symbol that is defined elsewhere?
+   *
+   * Applies to forward declarations for languages like C, C++
+   * and Objective-C, as well as `val` declarations in interface
+   * files in languages like SML and OCaml.
+   * 
+ * + * ForwardDefinition = 64; + */ + ForwardDefinition(64), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + SymbolRole.class.getName()); + } + /** + *
+   * This case is not meant to be used; it only exists to avoid an error
+   * from the Protobuf code generator.
+   * 
+ * + * UnspecifiedSymbolRole = 0; + */ + public static final int UnspecifiedSymbolRole_VALUE = 0; + /** + *
+   * Is the symbol defined here? If not, then this is a symbol reference.
+   * 
+ * + * Definition = 1; + */ + public static final int Definition_VALUE = 1; + /** + *
+   * Is the symbol imported here?
+   * 
+ * + * Import = 2; + */ + public static final int Import_VALUE = 2; + /** + *
+   * Is the symbol written here?
+   * 
+ * + * WriteAccess = 4; + */ + public static final int WriteAccess_VALUE = 4; + /** + *
+   * Is the symbol read here?
+   * 
+ * + * ReadAccess = 8; + */ + public static final int ReadAccess_VALUE = 8; + /** + *
+   * Is the symbol in generated code?
+   * 
+ * + * Generated = 16; + */ + public static final int Generated_VALUE = 16; + /** + *
+   * Is the symbol in test code?
+   * 
+ * + * Test = 32; + */ + public static final int Test_VALUE = 32; + /** + *
+   * Is this a signature for a symbol that is defined elsewhere?
+   *
+   * Applies to forward declarations for languages like C, C++
+   * and Objective-C, as well as `val` declarations in interface
+   * files in languages like SML and OCaml.
+   * 
+ * + * ForwardDefinition = 64; + */ + public static final int ForwardDefinition_VALUE = 64; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static SymbolRole valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static SymbolRole forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSymbolRole; + case 1: return Definition; + case 2: return Import; + case 4: return WriteAccess; + case 8: return ReadAccess; + case 16: return Generated; + case 32: return Test; + case 64: return ForwardDefinition; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + SymbolRole> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public SymbolRole findValueByNumber(int number) { + return SymbolRole.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(3); + } + + private static final SymbolRole[] VALUES = values(); + + public static SymbolRole valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private SymbolRole(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.SymbolRole) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/SyntaxKind.java b/bindings/java/src/main/java/org/scip_code/scip/SyntaxKind.java new file mode 100644 index 00000000..2fe54309 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/SyntaxKind.java @@ -0,0 +1,756 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf enum {@code scip.SyntaxKind} + */ +@com.google.protobuf.Generated +public enum SyntaxKind + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedSyntaxKind = 0; + */ + UnspecifiedSyntaxKind(0, 0), + /** + *
+   * Comment, including comment markers and text
+   * 
+ * + * Comment = 1; + */ + Comment(1, 1), + /** + *
+   * `;` `.` `,`
+   * 
+ * + * PunctuationDelimiter = 2; + */ + PunctuationDelimiter(2, 2), + /** + *
+   * (), {}, [] when used syntactically
+   * 
+ * + * PunctuationBracket = 3; + */ + PunctuationBracket(3, 3), + /** + *
+   * `if`, `else`, `return`, `class`, etc.
+   * 
+ * + * Keyword = 4; + */ + Keyword(4, 4), + /** + *
+   * `+`, `*`, etc.
+   * 
+ * + * IdentifierOperator = 5; + */ + IdentifierOperator(6, 5), + /** + *
+   * non-specific catch-all for any identifier not better described elsewhere
+   * 
+ * + * Identifier = 6; + */ + Identifier(7, 6), + /** + *
+   * Identifiers builtin to the language: `min`, `print` in Python.
+   * 
+ * + * IdentifierBuiltin = 7; + */ + IdentifierBuiltin(8, 7), + /** + *
+   * Identifiers representing `null`-like values: `None` in Python, `nil` in Go.
+   * 
+ * + * IdentifierNull = 8; + */ + IdentifierNull(9, 8), + /** + *
+   * `xyz` in `const xyz = "hello"`
+   * 
+ * + * IdentifierConstant = 9; + */ + IdentifierConstant(10, 9), + /** + *
+   * `var X = "hello"` in Go
+   * 
+ * + * IdentifierMutableGlobal = 10; + */ + IdentifierMutableGlobal(11, 10), + /** + *
+   * Parameter definition and references
+   * 
+ * + * IdentifierParameter = 11; + */ + IdentifierParameter(12, 11), + /** + *
+   * Identifiers for variable definitions and references within a local scope
+   * 
+ * + * IdentifierLocal = 12; + */ + IdentifierLocal(13, 12), + /** + *
+   * Identifiers that shadow other identifiers in an outer scope
+   * 
+ * + * IdentifierShadowed = 13; + */ + IdentifierShadowed(14, 13), + /** + *
+   * Identifier representing a unit of code abstraction and/or namespacing.
+   *
+   * NOTE: This corresponds to a package in Go and JVM languages,
+   * and a module in languages like Python and JavaScript.
+   * 
+ * + * IdentifierNamespace = 14; + */ + IdentifierNamespace(15, 14), + /** + *
+   * Function references, including calls
+   * 
+ * + * IdentifierFunction = 15; + */ + IdentifierFunction(17, 15), + /** + *
+   * Function definition only
+   * 
+ * + * IdentifierFunctionDefinition = 16; + */ + IdentifierFunctionDefinition(18, 16), + /** + *
+   * Macro references, including invocations
+   * 
+ * + * IdentifierMacro = 17; + */ + IdentifierMacro(19, 17), + /** + *
+   * Macro definition only
+   * 
+ * + * IdentifierMacroDefinition = 18; + */ + IdentifierMacroDefinition(20, 18), + /** + *
+   * non-builtin types
+   * 
+ * + * IdentifierType = 19; + */ + IdentifierType(21, 19), + /** + *
+   * builtin types only, such as `str` for Python or `int` in Go
+   * 
+ * + * IdentifierBuiltinType = 20; + */ + IdentifierBuiltinType(22, 20), + /** + *
+   * Python decorators, c-like __attribute__
+   * 
+ * + * IdentifierAttribute = 21; + */ + IdentifierAttribute(23, 21), + /** + *
+   * `\b`
+   * 
+ * + * RegexEscape = 22; + */ + RegexEscape(24, 22), + /** + *
+   * `*`, `+`
+   * 
+ * + * RegexRepeated = 23; + */ + RegexRepeated(25, 23), + /** + *
+   * `.`
+   * 
+ * + * RegexWildcard = 24; + */ + RegexWildcard(26, 24), + /** + *
+   * `(`, `)`, `[`, `]`
+   * 
+ * + * RegexDelimiter = 25; + */ + RegexDelimiter(27, 25), + /** + *
+   * `|`, `-`
+   * 
+ * + * RegexJoin = 26; + */ + RegexJoin(28, 26), + /** + *
+   * Literal strings: "Hello, world!"
+   * 
+ * + * StringLiteral = 27; + */ + StringLiteral(29, 27), + /** + *
+   * non-regex escapes: "\t", "\n"
+   * 
+ * + * StringLiteralEscape = 28; + */ + StringLiteralEscape(30, 28), + /** + *
+   * datetimes within strings, special words within a string, `{}` in format strings
+   * 
+ * + * StringLiteralSpecial = 29; + */ + StringLiteralSpecial(31, 29), + /** + *
+   * "key" in { "key": "value" }, useful for example in JSON
+   * 
+ * + * StringLiteralKey = 30; + */ + StringLiteralKey(32, 30), + /** + *
+   * 'c' or similar, in languages that differentiate strings and characters
+   * 
+ * + * CharacterLiteral = 31; + */ + CharacterLiteral(33, 31), + /** + *
+   * Literal numbers, both floats and integers
+   * 
+ * + * NumericLiteral = 32; + */ + NumericLiteral(34, 32), + /** + *
+   * `true`, `false`
+   * 
+ * + * BooleanLiteral = 33; + */ + BooleanLiteral(35, 33), + /** + *
+   * Used for XML-like tags
+   * 
+ * + * Tag = 34; + */ + Tag(36, 34), + /** + *
+   * Attribute name in XML-like tags
+   * 
+ * + * TagAttribute = 35; + */ + TagAttribute(37, 35), + /** + *
+   * Delimiters for XML-like tags
+   * 
+ * + * TagDelimiter = 36; + */ + TagDelimiter(38, 36), + UNRECOGNIZED(-1, -1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + SyntaxKind.class.getName()); + } + /** + * IdentifierKeyword = 4 [deprecated = true]; + */ + public static final SyntaxKind IdentifierKeyword = Keyword; + /** + * IdentifierModule = 14 [deprecated = true]; + */ + public static final SyntaxKind IdentifierModule = IdentifierNamespace; + /** + * UnspecifiedSyntaxKind = 0; + */ + public static final int UnspecifiedSyntaxKind_VALUE = 0; + /** + *
+   * Comment, including comment markers and text
+   * 
+ * + * Comment = 1; + */ + public static final int Comment_VALUE = 1; + /** + *
+   * `;` `.` `,`
+   * 
+ * + * PunctuationDelimiter = 2; + */ + public static final int PunctuationDelimiter_VALUE = 2; + /** + *
+   * (), {}, [] when used syntactically
+   * 
+ * + * PunctuationBracket = 3; + */ + public static final int PunctuationBracket_VALUE = 3; + /** + *
+   * `if`, `else`, `return`, `class`, etc.
+   * 
+ * + * Keyword = 4; + */ + public static final int Keyword_VALUE = 4; + /** + * IdentifierKeyword = 4 [deprecated = true]; + */ + @java.lang.Deprecated public static final int IdentifierKeyword_VALUE = 4; + /** + *
+   * `+`, `*`, etc.
+   * 
+ * + * IdentifierOperator = 5; + */ + public static final int IdentifierOperator_VALUE = 5; + /** + *
+   * non-specific catch-all for any identifier not better described elsewhere
+   * 
+ * + * Identifier = 6; + */ + public static final int Identifier_VALUE = 6; + /** + *
+   * Identifiers builtin to the language: `min`, `print` in Python.
+   * 
+ * + * IdentifierBuiltin = 7; + */ + public static final int IdentifierBuiltin_VALUE = 7; + /** + *
+   * Identifiers representing `null`-like values: `None` in Python, `nil` in Go.
+   * 
+ * + * IdentifierNull = 8; + */ + public static final int IdentifierNull_VALUE = 8; + /** + *
+   * `xyz` in `const xyz = "hello"`
+   * 
+ * + * IdentifierConstant = 9; + */ + public static final int IdentifierConstant_VALUE = 9; + /** + *
+   * `var X = "hello"` in Go
+   * 
+ * + * IdentifierMutableGlobal = 10; + */ + public static final int IdentifierMutableGlobal_VALUE = 10; + /** + *
+   * Parameter definition and references
+   * 
+ * + * IdentifierParameter = 11; + */ + public static final int IdentifierParameter_VALUE = 11; + /** + *
+   * Identifiers for variable definitions and references within a local scope
+   * 
+ * + * IdentifierLocal = 12; + */ + public static final int IdentifierLocal_VALUE = 12; + /** + *
+   * Identifiers that shadow other identifiers in an outer scope
+   * 
+ * + * IdentifierShadowed = 13; + */ + public static final int IdentifierShadowed_VALUE = 13; + /** + *
+   * Identifier representing a unit of code abstraction and/or namespacing.
+   *
+   * NOTE: This corresponds to a package in Go and JVM languages,
+   * and a module in languages like Python and JavaScript.
+   * 
+ * + * IdentifierNamespace = 14; + */ + public static final int IdentifierNamespace_VALUE = 14; + /** + * IdentifierModule = 14 [deprecated = true]; + */ + @java.lang.Deprecated public static final int IdentifierModule_VALUE = 14; + /** + *
+   * Function references, including calls
+   * 
+ * + * IdentifierFunction = 15; + */ + public static final int IdentifierFunction_VALUE = 15; + /** + *
+   * Function definition only
+   * 
+ * + * IdentifierFunctionDefinition = 16; + */ + public static final int IdentifierFunctionDefinition_VALUE = 16; + /** + *
+   * Macro references, including invocations
+   * 
+ * + * IdentifierMacro = 17; + */ + public static final int IdentifierMacro_VALUE = 17; + /** + *
+   * Macro definition only
+   * 
+ * + * IdentifierMacroDefinition = 18; + */ + public static final int IdentifierMacroDefinition_VALUE = 18; + /** + *
+   * non-builtin types
+   * 
+ * + * IdentifierType = 19; + */ + public static final int IdentifierType_VALUE = 19; + /** + *
+   * builtin types only, such as `str` for Python or `int` in Go
+   * 
+ * + * IdentifierBuiltinType = 20; + */ + public static final int IdentifierBuiltinType_VALUE = 20; + /** + *
+   * Python decorators, c-like __attribute__
+   * 
+ * + * IdentifierAttribute = 21; + */ + public static final int IdentifierAttribute_VALUE = 21; + /** + *
+   * `\b`
+   * 
+ * + * RegexEscape = 22; + */ + public static final int RegexEscape_VALUE = 22; + /** + *
+   * `*`, `+`
+   * 
+ * + * RegexRepeated = 23; + */ + public static final int RegexRepeated_VALUE = 23; + /** + *
+   * `.`
+   * 
+ * + * RegexWildcard = 24; + */ + public static final int RegexWildcard_VALUE = 24; + /** + *
+   * `(`, `)`, `[`, `]`
+   * 
+ * + * RegexDelimiter = 25; + */ + public static final int RegexDelimiter_VALUE = 25; + /** + *
+   * `|`, `-`
+   * 
+ * + * RegexJoin = 26; + */ + public static final int RegexJoin_VALUE = 26; + /** + *
+   * Literal strings: "Hello, world!"
+   * 
+ * + * StringLiteral = 27; + */ + public static final int StringLiteral_VALUE = 27; + /** + *
+   * non-regex escapes: "\t", "\n"
+   * 
+ * + * StringLiteralEscape = 28; + */ + public static final int StringLiteralEscape_VALUE = 28; + /** + *
+   * datetimes within strings, special words within a string, `{}` in format strings
+   * 
+ * + * StringLiteralSpecial = 29; + */ + public static final int StringLiteralSpecial_VALUE = 29; + /** + *
+   * "key" in { "key": "value" }, useful for example in JSON
+   * 
+ * + * StringLiteralKey = 30; + */ + public static final int StringLiteralKey_VALUE = 30; + /** + *
+   * 'c' or similar, in languages that differentiate strings and characters
+   * 
+ * + * CharacterLiteral = 31; + */ + public static final int CharacterLiteral_VALUE = 31; + /** + *
+   * Literal numbers, both floats and integers
+   * 
+ * + * NumericLiteral = 32; + */ + public static final int NumericLiteral_VALUE = 32; + /** + *
+   * `true`, `false`
+   * 
+ * + * BooleanLiteral = 33; + */ + public static final int BooleanLiteral_VALUE = 33; + /** + *
+   * Used for XML-like tags
+   * 
+ * + * Tag = 34; + */ + public static final int Tag_VALUE = 34; + /** + *
+   * Attribute name in XML-like tags
+   * 
+ * + * TagAttribute = 35; + */ + public static final int TagAttribute_VALUE = 35; + /** + *
+   * Delimiters for XML-like tags
+   * 
+ * + * TagDelimiter = 36; + */ + public static final int TagDelimiter_VALUE = 36; + + + public final int getNumber() { + if (index == -1) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static SyntaxKind valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static SyntaxKind forNumber(int value) { + switch (value) { + case 0: return UnspecifiedSyntaxKind; + case 1: return Comment; + case 2: return PunctuationDelimiter; + case 3: return PunctuationBracket; + case 4: return Keyword; + case 5: return IdentifierOperator; + case 6: return Identifier; + case 7: return IdentifierBuiltin; + case 8: return IdentifierNull; + case 9: return IdentifierConstant; + case 10: return IdentifierMutableGlobal; + case 11: return IdentifierParameter; + case 12: return IdentifierLocal; + case 13: return IdentifierShadowed; + case 14: return IdentifierNamespace; + case 15: return IdentifierFunction; + case 16: return IdentifierFunctionDefinition; + case 17: return IdentifierMacro; + case 18: return IdentifierMacroDefinition; + case 19: return IdentifierType; + case 20: return IdentifierBuiltinType; + case 21: return IdentifierAttribute; + case 22: return RegexEscape; + case 23: return RegexRepeated; + case 24: return RegexWildcard; + case 25: return RegexDelimiter; + case 26: return RegexJoin; + case 27: return StringLiteral; + case 28: return StringLiteralEscape; + case 29: return StringLiteralSpecial; + case 30: return StringLiteralKey; + case 31: return CharacterLiteral; + case 32: return NumericLiteral; + case 33: return BooleanLiteral; + case 34: return Tag; + case 35: return TagAttribute; + case 36: return TagDelimiter; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + SyntaxKind> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public SyntaxKind findValueByNumber(int number) { + return SyntaxKind.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (index == -1) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(4); + } + + private static final SyntaxKind[] VALUES = getStaticValuesArray(); + private static SyntaxKind[] getStaticValuesArray() { + return new SyntaxKind[] { + UnspecifiedSyntaxKind, Comment, PunctuationDelimiter, PunctuationBracket, Keyword, IdentifierKeyword, IdentifierOperator, Identifier, IdentifierBuiltin, IdentifierNull, IdentifierConstant, IdentifierMutableGlobal, IdentifierParameter, IdentifierLocal, IdentifierShadowed, IdentifierNamespace, IdentifierModule, IdentifierFunction, IdentifierFunctionDefinition, IdentifierMacro, IdentifierMacroDefinition, IdentifierType, IdentifierBuiltinType, IdentifierAttribute, RegexEscape, RegexRepeated, RegexWildcard, RegexDelimiter, RegexJoin, StringLiteral, StringLiteralEscape, StringLiteralSpecial, StringLiteralKey, CharacterLiteral, NumericLiteral, BooleanLiteral, Tag, TagAttribute, TagDelimiter, + }; + } + public static SyntaxKind valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private SyntaxKind(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.SyntaxKind) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/TextEncoding.java b/bindings/java/src/main/java/org/scip_code/scip/TextEncoding.java new file mode 100644 index 00000000..77ad6441 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/TextEncoding.java @@ -0,0 +1,134 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf enum {@code scip.TextEncoding} + */ +@com.google.protobuf.Generated +public enum TextEncoding + implements com.google.protobuf.ProtocolMessageEnum { + /** + * UnspecifiedTextEncoding = 0; + */ + UnspecifiedTextEncoding(0), + /** + * UTF8 = 1; + */ + UTF8(1), + /** + * UTF16 = 2; + */ + UTF16(2), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + TextEncoding.class.getName()); + } + /** + * UnspecifiedTextEncoding = 0; + */ + public static final int UnspecifiedTextEncoding_VALUE = 0; + /** + * UTF8 = 1; + */ + public static final int UTF8_VALUE = 1; + /** + * UTF16 = 2; + */ + public static final int UTF16_VALUE = 2; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static TextEncoding valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static TextEncoding forNumber(int value) { + switch (value) { + case 0: return UnspecifiedTextEncoding; + case 1: return UTF8; + case 2: return UTF16; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + TextEncoding> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public TextEncoding findValueByNumber(int number) { + return TextEncoding.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.getDescriptor().getEnumTypes().get(1); + } + + private static final TextEncoding[] VALUES = values(); + + public static TextEncoding valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private TextEncoding(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:scip.TextEncoding) +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/ToolInfo.java b/bindings/java/src/main/java/org/scip_code/scip/ToolInfo.java new file mode 100644 index 00000000..1c67a372 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/ToolInfo.java @@ -0,0 +1,935 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +/** + * Protobuf type {@code scip.ToolInfo} + */ +@com.google.protobuf.Generated +public final class ToolInfo extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:scip.ToolInfo) + ToolInfoOrBuilder { +private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 32, + /* patch= */ 1, + /* suffix= */ "", + ToolInfo.class.getName()); + } + // Use ToolInfo.newBuilder() to construct. + private ToolInfo(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private ToolInfo() { + name_ = ""; + version_ = ""; + arguments_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_ToolInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_ToolInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.ToolInfo.class, org.scip_code.scip.ToolInfo.Builder.class); + } + + public static final int NAME_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object name_ = ""; + /** + *
+   * Name of the indexer that produced this index.
+   * 
+ * + * string name = 1 [json_name = "name"]; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + *
+   * Name of the indexer that produced this index.
+   * 
+ * + * string name = 1 [json_name = "name"]; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int VERSION_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private volatile java.lang.Object version_ = ""; + /** + *
+   * Version of the indexer that produced this index.
+   * 
+ * + * string version = 2 [json_name = "version"]; + * @return The version. + */ + @java.lang.Override + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } + } + /** + *
+   * Version of the indexer that produced this index.
+   * 
+ * + * string version = 2 [json_name = "version"]; + * @return The bytes for version. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ARGUMENTS_FIELD_NUMBER = 3; + @SuppressWarnings("serial") + private com.google.protobuf.LazyStringArrayList arguments_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @return A list containing the arguments. + */ + public com.google.protobuf.ProtocolStringList + getArgumentsList() { + return arguments_; + } + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @return The count of arguments. + */ + public int getArgumentsCount() { + return arguments_.size(); + } + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param index The index of the element to return. + * @return The arguments at the given index. + */ + public java.lang.String getArguments(int index) { + return arguments_.get(index); + } + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param index The index of the value to return. + * @return The bytes of the arguments at the given index. + */ + public com.google.protobuf.ByteString + getArgumentsBytes(int index) { + return arguments_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 1, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) { + com.google.protobuf.GeneratedMessage.writeString(output, 2, version_); + } + for (int i = 0; i < arguments_.size(); i++) { + com.google.protobuf.GeneratedMessage.writeString(output, 3, arguments_.getRaw(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_); + } + if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) { + size += com.google.protobuf.GeneratedMessage.computeStringSize(2, version_); + } + { + int dataSize = 0; + for (int i = 0; i < arguments_.size(); i++) { + dataSize += computeStringSizeNoTag(arguments_.getRaw(i)); + } + size += dataSize; + size += 1 * getArgumentsList().size(); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof org.scip_code.scip.ToolInfo)) { + return super.equals(obj); + } + org.scip_code.scip.ToolInfo other = (org.scip_code.scip.ToolInfo) obj; + + if (!getName() + .equals(other.getName())) return false; + if (!getVersion() + .equals(other.getVersion())) return false; + if (!getArgumentsList() + .equals(other.getArgumentsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + VERSION_FIELD_NUMBER; + hash = (53 * hash) + getVersion().hashCode(); + if (getArgumentsCount() > 0) { + hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER; + hash = (53 * hash) + getArgumentsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static org.scip_code.scip.ToolInfo parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.ToolInfo parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.ToolInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.ToolInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.ToolInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.scip_code.scip.ToolInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.scip_code.scip.ToolInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.ToolInfo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static org.scip_code.scip.ToolInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static org.scip_code.scip.ToolInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static org.scip_code.scip.ToolInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static org.scip_code.scip.ToolInfo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(org.scip_code.scip.ToolInfo prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code scip.ToolInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:scip.ToolInfo) + org.scip_code.scip.ToolInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.scip_code.scip.ScipProto.internal_static_scip_ToolInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.scip_code.scip.ScipProto.internal_static_scip_ToolInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.scip_code.scip.ToolInfo.class, org.scip_code.scip.ToolInfo.Builder.class); + } + + // Construct using org.scip_code.scip.ToolInfo.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + name_ = ""; + version_ = ""; + arguments_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.scip_code.scip.ScipProto.internal_static_scip_ToolInfo_descriptor; + } + + @java.lang.Override + public org.scip_code.scip.ToolInfo getDefaultInstanceForType() { + return org.scip_code.scip.ToolInfo.getDefaultInstance(); + } + + @java.lang.Override + public org.scip_code.scip.ToolInfo build() { + org.scip_code.scip.ToolInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public org.scip_code.scip.ToolInfo buildPartial() { + org.scip_code.scip.ToolInfo result = new org.scip_code.scip.ToolInfo(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(org.scip_code.scip.ToolInfo result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.name_ = name_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.version_ = version_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + arguments_.makeImmutable(); + result.arguments_ = arguments_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.scip_code.scip.ToolInfo) { + return mergeFrom((org.scip_code.scip.ToolInfo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.scip_code.scip.ToolInfo other) { + if (other == org.scip_code.scip.ToolInfo.getDefaultInstance()) return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (!other.getVersion().isEmpty()) { + version_ = other.version_; + bitField0_ |= 0x00000002; + onChanged(); + } + if (!other.arguments_.isEmpty()) { + if (arguments_.isEmpty()) { + arguments_ = other.arguments_; + bitField0_ |= 0x00000004; + } else { + ensureArgumentsIsMutable(); + arguments_.addAll(other.arguments_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + name_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 18: { + version_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000002; + break; + } // case 18 + case 26: { + java.lang.String s = input.readStringRequireUtf8(); + ensureArgumentsIsMutable(); + arguments_.add(s); + break; + } // case 26 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object name_ = ""; + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1 [json_name = "name"]; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1 [json_name = "name"]; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1 [json_name = "name"]; + * @param value The name to set. + * @return This builder for chaining. + */ + public Builder setName( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1 [json_name = "name"]; + * @return This builder for chaining. + */ + public Builder clearName() { + name_ = getDefaultInstance().getName(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + *
+     * Name of the indexer that produced this index.
+     * 
+ * + * string name = 1 [json_name = "name"]; + * @param value The bytes for name to set. + * @return This builder for chaining. + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + name_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private java.lang.Object version_ = ""; + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2 [json_name = "version"]; + * @return The version. + */ + public java.lang.String getVersion() { + java.lang.Object ref = version_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + version_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2 [json_name = "version"]; + * @return The bytes for version. + */ + public com.google.protobuf.ByteString + getVersionBytes() { + java.lang.Object ref = version_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + version_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2 [json_name = "version"]; + * @param value The version to set. + * @return This builder for chaining. + */ + public Builder setVersion( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + version_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2 [json_name = "version"]; + * @return This builder for chaining. + */ + public Builder clearVersion() { + version_ = getDefaultInstance().getVersion(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+     * Version of the indexer that produced this index.
+     * 
+ * + * string version = 2 [json_name = "version"]; + * @param value The bytes for version to set. + * @return This builder for chaining. + */ + public Builder setVersionBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + version_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + private com.google.protobuf.LazyStringArrayList arguments_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + private void ensureArgumentsIsMutable() { + if (!arguments_.isModifiable()) { + arguments_ = new com.google.protobuf.LazyStringArrayList(arguments_); + } + bitField0_ |= 0x00000004; + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @return A list containing the arguments. + */ + public com.google.protobuf.ProtocolStringList + getArgumentsList() { + arguments_.makeImmutable(); + return arguments_; + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @return The count of arguments. + */ + public int getArgumentsCount() { + return arguments_.size(); + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param index The index of the element to return. + * @return The arguments at the given index. + */ + public java.lang.String getArguments(int index) { + return arguments_.get(index); + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param index The index of the value to return. + * @return The bytes of the arguments at the given index. + */ + public com.google.protobuf.ByteString + getArgumentsBytes(int index) { + return arguments_.getByteString(index); + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param index The index to set the value at. + * @param value The arguments to set. + * @return This builder for chaining. + */ + public Builder setArguments( + int index, java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureArgumentsIsMutable(); + arguments_.set(index, value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param value The arguments to add. + * @return This builder for chaining. + */ + public Builder addArguments( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + ensureArgumentsIsMutable(); + arguments_.add(value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param values The arguments to add. + * @return This builder for chaining. + */ + public Builder addAllArguments( + java.lang.Iterable values) { + ensureArgumentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, arguments_); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @return This builder for chaining. + */ + public Builder clearArguments() { + arguments_ = + com.google.protobuf.LazyStringArrayList.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004);; + onChanged(); + return this; + } + /** + *
+     * Command-line arguments that were used to invoke this indexer.
+     * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param value The bytes of the arguments to add. + * @return This builder for chaining. + */ + public Builder addArgumentsBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + ensureArgumentsIsMutable(); + arguments_.add(value); + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:scip.ToolInfo) + } + + // @@protoc_insertion_point(class_scope:scip.ToolInfo) + private static final org.scip_code.scip.ToolInfo DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new org.scip_code.scip.ToolInfo(); + } + + public static org.scip_code.scip.ToolInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ToolInfo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public org.scip_code.scip.ToolInfo getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/bindings/java/src/main/java/org/scip_code/scip/ToolInfoOrBuilder.java b/bindings/java/src/main/java/org/scip_code/scip/ToolInfoOrBuilder.java new file mode 100644 index 00000000..e74585f0 --- /dev/null +++ b/bindings/java/src/main/java/org/scip_code/scip/ToolInfoOrBuilder.java @@ -0,0 +1,93 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto +// Protobuf Java Version: 4.32.1 + +package org.scip_code.scip; + +@com.google.protobuf.Generated +public interface ToolInfoOrBuilder extends + // @@protoc_insertion_point(interface_extends:scip.ToolInfo) + com.google.protobuf.MessageOrBuilder { + + /** + *
+   * Name of the indexer that produced this index.
+   * 
+ * + * string name = 1 [json_name = "name"]; + * @return The name. + */ + java.lang.String getName(); + /** + *
+   * Name of the indexer that produced this index.
+   * 
+ * + * string name = 1 [json_name = "name"]; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + *
+   * Version of the indexer that produced this index.
+   * 
+ * + * string version = 2 [json_name = "version"]; + * @return The version. + */ + java.lang.String getVersion(); + /** + *
+   * Version of the indexer that produced this index.
+   * 
+ * + * string version = 2 [json_name = "version"]; + * @return The bytes for version. + */ + com.google.protobuf.ByteString + getVersionBytes(); + + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @return A list containing the arguments. + */ + java.util.List + getArgumentsList(); + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @return The count of arguments. + */ + int getArgumentsCount(); + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param index The index of the element to return. + * @return The arguments at the given index. + */ + java.lang.String getArguments(int index); + /** + *
+   * Command-line arguments that were used to invoke this indexer.
+   * 
+ * + * repeated string arguments = 3 [json_name = "arguments"]; + * @param index The index of the value to return. + * @return The bytes of the arguments at the given index. + */ + com.google.protobuf.ByteString + getArgumentsBytes(int index); +} diff --git a/bindings/java/src/main/proto/scip.proto b/bindings/java/src/main/proto/scip.proto new file mode 100644 index 00000000..b7c33bfb --- /dev/null +++ b/bindings/java/src/main/proto/scip.proto @@ -0,0 +1,903 @@ +// An index contains one or more pieces of information about a given piece of +// source code or software artifact. Complementary information can be merged +// together from multiple sources to provide a unified code intelligence +// experience. +// +// Programs producing a file of this format is an "indexer" and may operate +// somewhere on the spectrum between precision, such as indexes produced by +// compiler-backed indexers, and heurstics, such as indexes produced by local +// syntax-directed analysis for scope rules. + +syntax = "proto3"; + +package scip; + +option go_package = "github.com/scip-code/scip/bindings/go/scip/"; +option java_multiple_files = true; +// Avoid collision between the file-level outer class (which holds the file +// descriptor and registerAllExtensions) and messages also called "Scip*" +// once java_multiple_files emits each message as its own top-level class. +option java_outer_classname = "ScipProto"; +option java_package = "org.scip_code.scip"; + +// Index represents a complete SCIP index for a workspace this is rooted at a +// single directory. An Index message payload can have a large memory footprint +// and it's therefore recommended to emit and consume an Index payload one field +// value at a time. To permit streaming consumption of an Index payload, the +// `metadata` field must appear at the start of the stream and must only appear +// once in the stream. Other field values may appear in any order. +message Index { + // Metadata about this index. + Metadata metadata = 1; + // Documents that belong to this index. + repeated Document documents = 2; + // (optional) Symbols that are referenced from this index but are defined in + // an external package (a separate `Index` message). Leave this field empty + // if you assume the external package will get indexed separately. If the + // external package won't get indexed for some reason then you can use this + // field to provide hover documentation for those external symbols. + repeated SymbolInformation external_symbols = 3; + // IMPORTANT: When adding a new field to `Index` here, add a matching + // function in `IndexVisitor` and update `ParseStreaming`. +} + +message Metadata { + // Which version of this protocol was used to generate this index? + ProtocolVersion version = 1; + // Information about the tool that produced this index. + ToolInfo tool_info = 2; + // URI-encoded absolute path to the root directory of this index. All + // documents in this index must appear in a subdirectory of this root + // directory. + string project_root = 3; + // Text encoding of the source files on disk that are referenced from + // `Document.relative_path`. This value is unrelated to the `Document.text` + // field, which is a Protobuf string and hence must be UTF-8 encoded. + TextEncoding text_document_encoding = 4; +} + +enum ProtocolVersion { + UnspecifiedProtocolVersion = 0; +} + +enum TextEncoding { + UnspecifiedTextEncoding = 0; + UTF8 = 1; + UTF16 = 2; +} + +message ToolInfo { + // Name of the indexer that produced this index. + string name = 1; + // Version of the indexer that produced this index. + string version = 2; + // Command-line arguments that were used to invoke this indexer. + repeated string arguments = 3; +} + +// Document defines the metadata about a source file on disk. +message Document { + // The string ID for the programming language this file is written in. + // The `Language` enum contains the names of most common programming languages. + // This field is typed as a string to permit any programming language, including + // ones that are not specified by the `Language` enum. + string language = 4; + // (Required) Unique path to the text document. + // + // 1. The path must be relative to the directory supplied in the associated + // `Metadata.project_root`. + // 2. The path must not begin with a leading '/'. + // 3. The path must point to a regular file, not a symbolic link. + // 4. The path must use '/' as the separator, including on Windows. + // 5. The path must be canonical; it cannot include empty components ('//'), + // or '.' or '..'. + string relative_path = 1; + // Occurrences that appear in this file. + repeated Occurrence occurrences = 2; + // Symbols that are "defined" within this document. + // + // This should include symbols which technically do not have any definition, + // but have a reference and are defined by some other symbol (see + // Relationship.is_definition). + repeated SymbolInformation symbols = 3; + + // (optional) Text contents of this document. Indexers are not expected to + // include the text by default. It's preferable that clients read the text + // contents from the file system by resolving the absolute path from joining + // `Index.metadata.project_root` and `Document.relative_path`. This field + // can be useful for testing or when working with virtual/in-memory documents. + string text = 5; + + // Specifies the encoding used for source ranges in this Document. + // + // Usually, this will match the type used to index the string type + // in the indexer's implementation language in O(1) time. + // - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript, + // use UTF16CodeUnitOffsetFromLineStart. + // - For an indexer implemented in Python, + // use UTF32CodeUnitOffsetFromLineStart. + // - For an indexer implemented in Go, Rust or C++, + // use UTF8ByteOffsetFromLineStart. + PositionEncoding position_encoding = 6; +} + +// Encoding used to interpret the 'character' value in source ranges. +enum PositionEncoding { + // Default value. This value should not be used by new SCIP indexers + // so that a consumer can process the SCIP index without ambiguity. + UnspecifiedPositionEncoding = 0; + // The 'character' value is interpreted as an offset in terms + // of UTF-8 code units (i.e. bytes). + // + // Example: For the string "🚀 Woo" in UTF-8, the bytes are + // [240, 159, 154, 128, 32, 87, 111, 111], so the offset for 'W' + // would be 5. + UTF8CodeUnitOffsetFromLineStart = 1; + // The 'character' value is interpreted as an offset in terms + // of UTF-16 code units (each is 2 bytes). + // + // Example: For the string "🚀 Woo", the UTF-16 code units are + // ['\ud83d', '\ude80', ' ', 'W', 'o', 'o'], so the offset for 'W' + // would be 3. + UTF16CodeUnitOffsetFromLineStart = 2; + // The 'character' value is interpreted as an offset in terms + // of UTF-32 code units (each is 4 bytes). + // + // Example: For the string "🚀 Woo", the UTF-32 code units are + // ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2. + UTF32CodeUnitOffsetFromLineStart = 3; +} + +// Symbol is similar to a URI, it identifies a class, method, or a local +// variable. `SymbolInformation` contains rich metadata about symbols such as +// the docstring. +// +// Symbol has a standardized string representation, which can be used +// interchangeably with `Symbol`. The syntax for Symbol is the following: +// ``` +// # ()+ stands for one or more repetitions of +// # ()? stands for zero or one occurrence of +// ::= ' ' ' ' ()+ | 'local ' +// ::= ' ' ' ' +// ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local' +// ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value +// ::= same as above +// ::= same as above +// ::= | | | | | | | +// ::= '/' +// ::= '#' +// ::= '.' +// ::= ':' +// ::= '!' +// ::= '(' ()? ').' +// ::= '[' ']' +// ::= '(' ')' +// ::= +// ::= +// ::= | +// ::= ()+ +// ::= '_' | '+' | '-' | '$' | ASCII letter or digit +// ::= '`' ()+ '`', must contain at least one non- +// ::= any UTF-8, escape backticks with double backtick. +// ::= +// ``` +// +// The list of descriptors for a symbol should together form a fully +// qualified name for the symbol. That is, it should serve as a unique +// identifier across the package. Typically, it will include one descriptor +// for every node in the AST (along the ancestry path) between the root of +// the file and the node corresponding to the symbol. +// +// Local symbols MUST only be used for entities which are local to a Document, +// and cannot be accessed from outside the Document. +message Symbol { + string scheme = 1; + Package package = 2; + repeated Descriptor descriptors = 3; +} + +// Unit of packaging and distribution. +// +// NOTE: This corresponds to a module in Go and JVM languages. +message Package { + string manager = 1; + string name = 2; + string version = 3; +} + +message Descriptor { + enum Suffix { + option allow_alias = true; + UnspecifiedSuffix = 0; + // Unit of code abstraction and/or namespacing. + // + // NOTE: This corresponds to a package in Go and JVM languages. + Namespace = 1; + // Use Namespace instead. + Package = 1 [deprecated = true]; + Type = 2; + Term = 3; + Method = 4; + TypeParameter = 5; + Parameter = 6; + // Can be used for any purpose. + Meta = 7; + Local = 8; + Macro = 9; + } + string name = 1; + string disambiguator = 2; + Suffix suffix = 3; + // NOTE: If you add new fields here, make sure to update the prepareSlot() + // function responsible for parsing symbols. +} + +// Signature represents the signature of a symbol as it's displayed in API +// documentation or hover tooltips. It uses a subset of Document's fields with +// the same field numbers for wire compatibility with older indexes that encoded +// signatures using the Document message type. +message Signature { + // The language of the signature, e.g. "java", "go", "python". + string language = 4; + // The text content of the signature, e.g. "void add(int a, int b)". + string text = 5; + // (optional) Occurrences within the signature text that reference other + // symbols, enabling hyperlinking of types in the signature. Ranges are + // relative to the `text` field. + repeated Occurrence occurrences = 2; + + // Reserved field numbers from the Document message to prevent accidental + // reuse, which would break wire compatibility with older indexes. + reserved 1, 3, 6; +} + +// SymbolInformation defines metadata about a symbol, such as the symbol's +// docstring or what package it's defined it. +message SymbolInformation { + // Identifier of this symbol, which can be referenced from `Occurence.symbol`. + // The string must be formatted according to the grammar in `Symbol`. + string symbol = 1; + // (optional, but strongly recommended) The markdown-formatted documentation + // for this symbol. Use `SymbolInformation.signature_documentation` to + // document the method/class/type signature of this symbol. + // Due to historical reasons, indexers may include signature documentation in + // this field by rendering markdown code blocks. New indexers should only + // include non-code documentation in this field, for example docstrings. + repeated string documentation = 3; + // (optional) Relationships to other symbols (e.g., implements, type definition). + repeated Relationship relationships = 4; + // The kind of this symbol. Use this field instead of + // `SymbolDescriptor.Suffix` to determine whether something is, for example, a + // class or a method. + Kind kind = 5; + // (optional) Kind represents the fine-grained category of a symbol, suitable for presenting + // information about the symbol's meaning in the language. + // + // For example: + // - A Java method would have the kind `Method` while a Go function would + // have the kind `Function`, even if the symbols for these use the same + // syntax for the descriptor `SymbolDescriptor.Suffix.Method`. + // - A Go struct has the symbol kind `Struct` while a Java class has + // the symbol kind `Class` even if they both have the same descriptor: + // `SymbolDescriptor.Suffix.Type`. + // + // Since Kind is more fine-grained than Suffix: + // - If two symbols have the same Kind, they should share the same Suffix. + // - If two symbols have different Suffixes, they should have different Kinds. + enum Kind { + UnspecifiedKind = 0; + // A method which may or may not have a body. For Java, Kotlin etc. + AbstractMethod = 66; + // For Ruby's attr_accessor + Accessor = 72; + Array = 1; + // For Alloy + Assertion = 2; + AssociatedType = 3; + // For C++ + Attribute = 4; + // For Lean + Axiom = 5; + Boolean = 6; + Class = 7; + // For C++ + Concept = 86; + Constant = 8; + Constructor = 9; + // For Solidity + Contract = 62; + // For Haskell + DataFamily = 10; + // For C# and F# + Delegate = 73; + Enum = 11; + EnumMember = 12; + Error = 63; + Event = 13; + // For Dart + Extension = 84; + // For Alloy + Fact = 14; + Field = 15; + File = 16; + Function = 17; + // For 'get' in Swift, 'attr_reader' in Ruby + Getter = 18; + // For Raku + Grammar = 19; + // For Purescript and Lean + Instance = 20; + Interface = 21; + Key = 22; + // For Racket + Lang = 23; + // For Lean + Lemma = 24; + // For solidity + Library = 64; + Macro = 25; + Method = 26; + // For Ruby + MethodAlias = 74; + // Analogous to 'ThisParameter' and 'SelfParameter', but for languages + // like Go where the receiver doesn't have a conventional name. + MethodReceiver = 27; + // Analogous to 'AbstractMethod', for Go. + MethodSpecification = 67; + // For Protobuf + Message = 28; + // For Dart + Mixin = 85; + // For Solidity + Modifier = 65; + Module = 29; + Namespace = 30; + Null = 31; + Number = 32; + Object = 33; + Operator = 34; + Package = 35; + PackageObject = 36; + Parameter = 37; + ParameterLabel = 38; + // For Haskell's PatternSynonyms + Pattern = 39; + // For Alloy + Predicate = 40; + Property = 41; + // Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C + Protocol = 42; + // Analogous to 'AbstractMethod', for Swift and Objective-C. + ProtocolMethod = 68; + // Analogous to 'AbstractMethod', for C++. + PureVirtualMethod = 69; + // For Haskell + Quasiquoter = 43; + // 'self' in Python, Rust, Swift etc. + SelfParameter = 44; + // For 'set' in Swift, 'attr_writer' in Ruby + Setter = 45; + // For Alloy, analogous to 'Struct'. + Signature = 46; + // For Ruby + SingletonClass = 75; + // Analogous to 'StaticMethod', for Ruby. + SingletonMethod = 76; + // Analogous to 'StaticField', for C++ + StaticDataMember = 77; + // For C# + StaticEvent = 78; + // For C# + StaticField = 79; + // For Java, C#, C++ etc. + StaticMethod = 80; + // For C#, TypeScript etc. + StaticProperty = 81; + // For C, C++ + StaticVariable = 82; + String = 48; + Struct = 49; + // For Swift + Subscript = 47; + // For Lean + Tactic = 50; + // For Lean + Theorem = 51; + // Method receiver for languages + // 'this' in JavaScript, C++, Java etc. + ThisParameter = 52; + // Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc. + Trait = 53; + // Analogous to 'AbstractMethod', for Rust, Scala etc. + TraitMethod = 70; + // Data type definition for languages like OCaml which use `type` + // rather than separate keywords like `struct` and `enum`. + Type = 54; + TypeAlias = 55; + // Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc. + TypeClass = 56; + // Analogous to 'AbstractMethod', for Haskell, Purescript etc. + TypeClassMethod = 71; + // For Haskell + TypeFamily = 57; + TypeParameter = 58; + // For C, C++, Capn Proto + Union = 59; + Value = 60; + Variable = 61; + // Next = 87; + // Feel free to open a PR proposing new language-specific kinds. + } + // (optional) The name of this symbol as it should be displayed to the user. + // For example, the symbol "com/example/MyClass#myMethod(+1)." should have the + // display name "myMethod". The `symbol` field is not a reliable source of + // the display name for several reasons: + // + // - Local symbols don't encode the name. + // - Some languages have case-insensitive names, so the symbol is all-lowercase. + // - The symbol may encode names with special characters that should not be + // displayed to the user. + string display_name = 6; + // (optional) The signature of this symbol as it's displayed in API + // documentation or in hover tooltips. For example, a Java method that adds + // two numbers would have `Signature.language = "java"` and + // `Signature.text = "void add(int a, int b)"`. The `language` and `text` + // fields are required while `occurrences` can be optionally included to + // support hyperlinking referenced symbols in the signature. + Signature signature_documentation = 7; + // (optional) The enclosing symbol if this is a local symbol. For non-local + // symbols, the enclosing symbol should be parsed from the `symbol` field + // using the `Descriptor` grammar. + // + // The primary use-case for this field is to allow local symbol to be displayed + // in a symbol hierarchy for API documentation. It's OK to leave this field + // empty for local variables since local variables usually don't belong in API + // documentation. However, in the situation that you wish to include a local + // symbol in the hierarchy, then you can use `enclosing_symbol` to locate the + // "parent" or "owner" of this local symbol. For example, a Java indexer may + // choose to use local symbols for private class fields while providing an + // `enclosing_symbol` to reference the enclosing class to allow the field to + // be part of the class documentation hierarchy. From the perspective of an + // author of an indexer, the decision to use a local symbol or global symbol + // should exclusively be determined whether the local symbol is accessible + // outside the document, not by the capability to find the enclosing + // symbol. + string enclosing_symbol = 8; +} + +message Relationship { + string symbol = 1; + // When resolving "Find references", this field documents what other symbols + // should be included together with this symbol. For example, consider the + // following TypeScript code that defines two symbols `Animal#sound()` and + // `Dog#sound()`: + // ```ts + // interface Animal { + // ^^^^^^ definition Animal# + // sound(): string + // ^^^^^ definition Animal#sound() + // } + // class Dog implements Animal { + // ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}] + // public sound(): string { return "woof" } + // ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}] + // } + // const animal: Animal = new Dog() + // ^^^^^^ reference Animal# + // console.log(animal.sound()) + // ^^^^^ reference Animal#sound() + // ``` + // Doing "Find references" on the symbol `Animal#sound()` should return + // references to the `Dog#sound()` method as well. Vice-versa, doing "Find + // references" on the `Dog#sound()` method should include references to the + // `Animal#sound()` method as well. + bool is_reference = 2; + // Similar to `is_reference` but for "Find implementations". + // It's common for `is_implementation` and `is_reference` to both be true but + // it's not always the case. + // In the TypeScript example above, observe that `Dog#` has an + // `is_implementation` relationship with `"Animal#"` but not `is_reference`. + // This is because "Find references" on the "Animal#" symbol should not return + // "Dog#". We only want "Dog#" to return as a result for "Find + // implementations" on the "Animal#" symbol. + bool is_implementation = 3; + // Similar to `references_symbols` but for "Go to type definition". + bool is_type_definition = 4; + // Allows overriding the behavior of "Go to definition" and "Find references" + // for symbols which do not have a definition of their own or could + // potentially have multiple definitions. + // + // For example, in a language with single inheritance and no field overriding, + // inherited fields can reuse the same symbol as the ancestor which declares + // the field. In such a situation, is_definition is not needed. + // + // On the other hand, in languages with single inheritance and some form + // of mixins, you can use is_definition to relate the symbol to the + // matching symbol in ancestor classes, and is_reference to relate the + // symbol to the matching symbol in mixins. + bool is_definition = 5; + // Update registerInverseRelationships on adding a new field here. +} + +// SymbolRole declares what "role" a symbol has in an occurrence. A role is +// encoded as a bitset where each bit represents a different role. For example, +// to determine if the `Import` role is set, test whether the second bit of the +// enum value is defined. In pseudocode, this can be implemented with the +// logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`. +enum SymbolRole { + // This case is not meant to be used; it only exists to avoid an error + // from the Protobuf code generator. + UnspecifiedSymbolRole = 0; + // Is the symbol defined here? If not, then this is a symbol reference. + Definition = 0x1; + // Is the symbol imported here? + Import = 0x2; + // Is the symbol written here? + WriteAccess = 0x4; + // Is the symbol read here? + ReadAccess = 0x8; + // Is the symbol in generated code? + Generated = 0x10; + // Is the symbol in test code? + Test = 0x20; + // Is this a signature for a symbol that is defined elsewhere? + // + // Applies to forward declarations for languages like C, C++ + // and Objective-C, as well as `val` declarations in interface + // files in languages like SML and OCaml. + ForwardDefinition = 0x40; +} + +enum SyntaxKind { + option allow_alias = true; + + UnspecifiedSyntaxKind = 0; + + // Comment, including comment markers and text + Comment = 1; + + // `;` `.` `,` + PunctuationDelimiter = 2; + // (), {}, [] when used syntactically + PunctuationBracket = 3; + + // `if`, `else`, `return`, `class`, etc. + Keyword = 4; + IdentifierKeyword = 4 [deprecated = true]; + + // `+`, `*`, etc. + IdentifierOperator = 5; + + // non-specific catch-all for any identifier not better described elsewhere + Identifier = 6; + // Identifiers builtin to the language: `min`, `print` in Python. + IdentifierBuiltin = 7; + // Identifiers representing `null`-like values: `None` in Python, `nil` in Go. + IdentifierNull = 8; + // `xyz` in `const xyz = "hello"` + IdentifierConstant = 9; + // `var X = "hello"` in Go + IdentifierMutableGlobal = 10; + // Parameter definition and references + IdentifierParameter = 11; + // Identifiers for variable definitions and references within a local scope + IdentifierLocal = 12; + // Identifiers that shadow other identifiers in an outer scope + IdentifierShadowed = 13; + // Identifier representing a unit of code abstraction and/or namespacing. + // + // NOTE: This corresponds to a package in Go and JVM languages, + // and a module in languages like Python and JavaScript. + IdentifierNamespace = 14; + IdentifierModule = 14 [deprecated = true]; + + // Function references, including calls + IdentifierFunction = 15; + // Function definition only + IdentifierFunctionDefinition = 16; + + // Macro references, including invocations + IdentifierMacro = 17; + // Macro definition only + IdentifierMacroDefinition = 18; + + // non-builtin types + IdentifierType = 19; + // builtin types only, such as `str` for Python or `int` in Go + IdentifierBuiltinType = 20; + + // Python decorators, c-like __attribute__ + IdentifierAttribute = 21; + + // `\b` + RegexEscape = 22; + // `*`, `+` + RegexRepeated = 23; + // `.` + RegexWildcard = 24; + // `(`, `)`, `[`, `]` + RegexDelimiter = 25; + // `|`, `-` + RegexJoin = 26; + + // Literal strings: "Hello, world!" + StringLiteral = 27; + // non-regex escapes: "\t", "\n" + StringLiteralEscape = 28; + // datetimes within strings, special words within a string, `{}` in format strings + StringLiteralSpecial = 29; + // "key" in { "key": "value" }, useful for example in JSON + StringLiteralKey = 30; + // 'c' or similar, in languages that differentiate strings and characters + CharacterLiteral = 31; + // Literal numbers, both floats and integers + NumericLiteral = 32; + // `true`, `false` + BooleanLiteral = 33; + + // Used for XML-like tags + Tag = 34; + // Attribute name in XML-like tags + TagAttribute = 35; + // Delimiters for XML-like tags + TagDelimiter = 36; +} + +// Occurrence associates a source position with a symbol and/or highlighting +// information. +// +// If possible, indexers should try to bundle logically related information +// across occurrences into a single occurrence to reduce payload sizes. +message Occurrence { + // Half-open [start, end) range of this occurrence. Must be exactly three or four + // elements: + // + // - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + // - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + // is inferred to have the same value as the start line. + // + // It is allowed for the range to be empty (i.e. start==end). + // + // Line numbers and characters are always 0-based. Make sure to increment the + // line/character values before displaying them in an editor-like UI because + // editors conventionally use 1-based numbers. + // + // The 'character' value is interpreted based on the PositionEncoding for + // the Document. + // + // Historical note: the original draft of this schema had a `Range` message + // type with `start` and `end` fields of type `Position`, mirroring LSP. + // Benchmarks revealed that this encoding was inefficient and that we could + // reduce the total payload size of an index by 50% by using `repeated int32` + // instead. The `repeated int32` encoding is admittedly more embarrassing to + // work with in some programming languages but we hope the performance + // improvements make up for it. + repeated int32 range = 1; + // (optional) The symbol that appears at this position. See + // `SymbolInformation.symbol` for how to format symbols as strings. + string symbol = 2; + // (optional) Bitset containing `SymbolRole`s in this occurrence. + // See `SymbolRole`'s documentation for how to read and write this field. + int32 symbol_roles = 3; + // (optional) CommonMark-formatted documentation for this specific range. If + // empty, the `Symbol.documentation` field is used instead. One example + // where this field might be useful is when the symbol represents a generic + // function (with abstract type parameters such as `List`) and at this + // occurrence we know the exact values (such as `List`). + // + // This field can also be used for dynamically or gradually typed languages, + // which commonly allow for type-changing assignment. + repeated string override_documentation = 4; + // (optional) What syntax highlighting class should be used for this range? + SyntaxKind syntax_kind = 5; + // (optional) Diagnostics that have been reported for this specific range. + repeated Diagnostic diagnostics = 6; + // (optional) Using the same encoding as the sibling `range` field, half-open + // source range of the nearest non-trivial enclosing AST node. This range must + // enclose the `range` field. Example applications that make use of the + // enclosing_range field: + // + // - Call hierarchies: to determine what symbols are references from the body + // of a function + // - Symbol outline: to display breadcrumbs from the cursor position to the + // root of the file + // - Expand selection: to select the nearest enclosing AST node. + // - Highlight range: to indicate the AST expression that is associated with a + // hover popover + // + // For definition occurrences, the enclosing range should indicate the + // start/end bounds of the entire definition AST node, including + // documentation. + // ``` + // const n = 3 + // ^ range + // ^^^^^^^^^^^ enclosing_range + // + // /** Parses the string into something */ + // ^ enclosing_range start --------------------------------------| + // function parse(input string): string { | + // ^^^^^ range | + // return input.slice(n) | + // } | + // ^ enclosing_range end <---------------------------------------| + // ``` + // + // Any attributes/decorators/attached macros should also be part of the + // enclosing range. + // + // ```python + // @cache + // ^ enclosing_range start---------------------| + // def factorial(n): | + // return n * factorial(n-1) if n else 1 | + // < enclosing_range end-----------------------| + // + // ``` + // + // For reference occurrences, the enclosing range should indicate the start/end + // bounds of the parent expression. + // ``` + // const a = a.b + // ^ range + // ^^^ enclosing_range + // const b = a.b(41).f(42).g(43) + // ^ range + // ^^^^^^^^^^^^^ enclosing_range + // ``` + repeated int32 enclosing_range = 7; +} + +// Represents a diagnostic, such as a compiler error or warning, which should be +// reported for a document. +message Diagnostic { + // Should this diagnostic be reported as an error, warning, info, or hint? + Severity severity = 1; + // (optional) Code of this diagnostic, which might appear in the user interface. + string code = 2; + // Message of this diagnostic. + string message = 3; + // (optional) Human-readable string describing the source of this diagnostic, e.g. + // 'typescript' or 'super lint'. + string source = 4; + repeated DiagnosticTag tags = 5; +} + +enum Severity { + UnspecifiedSeverity = 0; + Error = 1; + Warning = 2; + Information = 3; + Hint = 4; +} + +enum DiagnosticTag { + UnspecifiedDiagnosticTag = 0; + Unnecessary = 1; + Deprecated = 2; +} + +// Language standardises names of common programming languages that can be used +// for the `Document.language` field. The primary purpose of this enum is to +// prevent a situation where we have a single programming language ends up with +// multiple string representations. For example, the C++ language uses the name +// "CPP" in this enum and other names such as "cpp" are incompatible. +// Feel free to send a pull-request to add missing programming languages. +enum Language { + UnspecifiedLanguage = 0; + ABAP = 60; + Apex = 96; + APL = 49; + Ada = 39; + Agda = 45; + AsciiDoc = 86; + Assembly = 58; + Awk = 66; + Bat = 68; + BibTeX = 81; + C = 34; + COBOL = 59; + CPP = 35; // C++ (the name "CPP" was chosen for consistency with LSP) + CSS = 26; + CSharp = 1; + Clojure = 8; + Coffeescript = 21; + CommonLisp = 9; + Coq = 47; + CUDA = 97; + Dart = 3; + Delphi = 57; + Diff = 88; + Dockerfile = 80; + Dyalog = 50; + Elixir = 17; + Erlang = 18; + FSharp = 42; + Fish = 65; + Flow = 24; + Fortran = 56; + Git_Commit = 91; + Git_Config = 89; + Git_Rebase = 92; + Go = 33; + GraphQL = 98; + Groovy = 7; + HTML = 30; + Hack = 20; + Handlebars = 90; + Haskell = 44; + Idris = 46; + Ini = 72; + J = 51; + JSON = 75; + Java = 6; + JavaScript = 22; + JavaScriptReact = 93; + Jsonnet = 76; + Julia = 55; + Justfile = 109; + Kotlin = 4; + LaTeX = 83; + Lean = 48; + Less = 27; + Lua = 12; + Luau = 108; + Makefile = 79; + Markdown = 84; + Matlab = 52; + Nickel = 110; // https://nickel-lang.org/ + Nix = 77; + OCaml = 41; + Objective_C = 36; + Objective_CPP = 37; + Pascal = 99; + PHP = 19; + PLSQL = 70; + Perl = 13; + PowerShell = 67; + Prolog = 71; + Protobuf = 100; + Python = 15; + R = 54; + Racket = 11; + Raku = 14; + Razor = 62; + Repro = 102; // Internal language for testing SCIP + ReST = 85; + Ruby = 16; + Rust = 40; + SAS = 61; + SCSS = 29; + SML = 43; + SQL = 69; + Sass = 28; + Scala = 5; + Scheme = 10; + ShellScript = 64; // Bash + Skylark = 78; + Slang = 107; + Solidity = 95; + Svelte = 106; + Swift = 2; + Tcl = 101; + TOML = 73; + TeX = 82; + Thrift = 103; + TypeScript = 23; + TypeScriptReact = 94; + Verilog = 104; + VHDL = 105; + VisualBasic = 63; + Vue = 25; + Wolfram = 53; + XML = 31; + XSL = 32; + YAML = 74; + Zig = 38; + // NextLanguage = 111; + // Steps add a new language: + // 1. Copy-paste the "NextLanguage = N" line above + // 2. Increment "NextLanguage = N" to "NextLanguage = N+1" + // 3. Replace "NextLanguage = N" with the name of the new language. + // 4. Move the new language to the correct line above using alphabetical order + // 5. (optional) Add a brief comment behind the language if the name is not self-explanatory +} diff --git a/bindings/kotlin/.gitignore b/bindings/kotlin/.gitignore new file mode 100644 index 00000000..2f7896d1 --- /dev/null +++ b/bindings/kotlin/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/bindings/kotlin/README.md b/bindings/kotlin/README.md new file mode 100644 index 00000000..1b0d6a25 --- /dev/null +++ b/bindings/kotlin/README.md @@ -0,0 +1,90 @@ +# Kotlin bindings for SCIP + +Generated Kotlin bindings for the [Semantic Code Intelligence Protocol (SCIP)](https://github.com/scip-code/scip). + +The artifact bundles **both** the underlying `protobuf-java` message classes +and the Kotlin DSL extensions (`scip { ... }`-style builders) in a single jar, +so you only need one dependency whether you write Java- or Kotlin-style code. + +## Coordinates + +```xml + + org.scip-code + scip-kotlin + 0.7.1 + +``` + +Or, with Gradle Kotlin DSL: + +```kotlin +implementation("org.scip-code:scip-kotlin:0.7.1") +``` + +The canonical `.proto` schema is also published as a classifier artifact: + +```sh +mvn dependency:get -Dartifact=org.scip-code:scip-kotlin:0.7.1:proto:proto +``` + +## Quickstart + +Idiomatic Kotlin, using the generated DSL: + +```kotlin +import org.scip_code.scip.index +import org.scip_code.scip.document +import org.scip_code.scip.metadata + +val idx = index { + metadata = metadata { projectRoot = "file:///workspace" } + documents += document { relativePath = "src/main.kt" } +} + +val bytes: ByteArray = idx.toByteArray() +``` + +JSON serialization (via `protobuf-java-util`, declared as a transitive dependency): + +```kotlin +import com.google.protobuf.util.JsonFormat + +val json: String = JsonFormat.printer().print(idx) +``` + +## Compatibility notes + +### Protobuf runtime + +The generated code is built against `protobuf-java` and `protobuf-kotlin` 4.32.1. +At class load time, generated code calls `validateProtobufGencodeVersion()` which +enforces **runtime version >= gencode version** within the same major version. + +| Your `protobuf-java` | Compatible? | +| -------------------- | ---------------------------------------------------------------------------------- | +| 4.32.1 (matched) | ✅ | +| 4.33.x (newer) | ✅ — Maven/Gradle dependency resolution will typically converge here automatically | +| 4.31.x (older) | ❌ — runtime crash with `ProtobufRuntimeVersionException` | +| 5.x.x or 3.x.x | ❌ — major version mismatch | + +If you depend on another library that pins an older `protobuf-java`, you must +upgrade it (or pin `protobuf-java` to >=4.32.1 in your own build). + +### JVM target + +The bindings target Java 11 / Kotlin 2.0. They run on any JDK ≥ 11. + +## Building from source + +This binding is generated by `buf generate` from the project's [scip.proto](../../scip.proto). To regenerate after modifying the proto, run from the repository root: + +```sh +nix run .#proto-generate --impure +``` + +To build the artifact locally: + +```sh +mvn -B package +``` diff --git a/bindings/kotlin/pom.xml b/bindings/kotlin/pom.xml new file mode 100644 index 00000000..549dffc2 --- /dev/null +++ b/bindings/kotlin/pom.xml @@ -0,0 +1,119 @@ + + + 4.0.0 + + org.scip-code + scip-kotlin + 0.7.1 + jar + + scip-kotlin + + Generated Kotlin DSL extensions for the Semantic Code Intelligence + Protocol (SCIP). Pulls scip-java transitively for the underlying + protobuf message classes. + + https://github.com/scip-code/scip + + + + Apache License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + + + + + https://github.com/scip-code/scip + scm:git:https://github.com/scip-code/scip.git + + + + UTF-8 + 11 + 11 + + 4.32.1 + 2.0.21 + + + + + + org.scip-code + scip-java + ${project.version} + + + com.google.protobuf + protobuf-kotlin + ${protobuf.version} + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + + src/main/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile + compile + + compile + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.6.1 + + + attach-proto + package + + attach-artifact + + + + + ${project.basedir}/src/main/proto/scip.proto + proto + proto + + + + + + + + + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DescriptorKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DescriptorKt.kt new file mode 100644 index 00000000..8f3f1c9a --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DescriptorKt.kt @@ -0,0 +1,103 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializedescriptor") +public inline fun descriptor(block: org.scip_code.scip.DescriptorKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Descriptor = + org.scip_code.scip.DescriptorKt.Dsl._create(org.scip_code.scip.Descriptor.newBuilder()).apply { block() }._build() +/** + * Protobuf type `scip.Descriptor` + */ +public object DescriptorKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Descriptor.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Descriptor.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Descriptor = _builder.build() + + /** + * `string name = 1 [json_name = "name"];` + */ + public var name: kotlin.String + @kotlin.jvm.JvmName("getName") + get() = _builder.name + @kotlin.jvm.JvmName("setName") + set(value) { + _builder.name = value + } + /** + * `string name = 1 [json_name = "name"];` + */ + public fun clearName() { + _builder.clearName() + } + + /** + * `string disambiguator = 2 [json_name = "disambiguator"];` + */ + public var disambiguator: kotlin.String + @kotlin.jvm.JvmName("getDisambiguator") + get() = _builder.disambiguator + @kotlin.jvm.JvmName("setDisambiguator") + set(value) { + _builder.disambiguator = value + } + /** + * `string disambiguator = 2 [json_name = "disambiguator"];` + */ + public fun clearDisambiguator() { + _builder.clearDisambiguator() + } + + /** + * ``` + * NOTE: If you add new fields here, make sure to update the prepareSlot() + * function responsible for parsing symbols. + * ``` + * + * `.scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"];` + */ + public var suffix: org.scip_code.scip.Descriptor.Suffix + @kotlin.jvm.JvmName("getSuffix") + get() = _builder.suffix + @kotlin.jvm.JvmName("setSuffix") + set(value) { + _builder.suffix = value + } + public var suffixValue: kotlin.Int + @kotlin.jvm.JvmName("getSuffixValue") + get() = _builder.suffixValue + @kotlin.jvm.JvmName("setSuffixValue") + set(value) { + _builder.suffixValue = value + } + /** + * ``` + * NOTE: If you add new fields here, make sure to update the prepareSlot() + * function responsible for parsing symbols. + * ``` + * + * `.scip.Descriptor.Suffix suffix = 3 [json_name = "suffix"];` + */ + public fun clearSuffix() { + _builder.clearSuffix() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Descriptor.copy(block: `org.scip_code.scip`.DescriptorKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Descriptor = + `org.scip_code.scip`.DescriptorKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DiagnosticKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DiagnosticKt.kt new file mode 100644 index 00000000..ad6d42d1 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DiagnosticKt.kt @@ -0,0 +1,214 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializediagnostic") +public inline fun diagnostic(block: org.scip_code.scip.DiagnosticKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Diagnostic = + org.scip_code.scip.DiagnosticKt.Dsl._create(org.scip_code.scip.Diagnostic.newBuilder()).apply { block() }._build() +/** + * ``` + * Represents a diagnostic, such as a compiler error or warning, which should be + * reported for a document. + * ``` + * + * Protobuf type `scip.Diagnostic` + */ +public object DiagnosticKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Diagnostic.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Diagnostic.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Diagnostic = _builder.build() + + /** + * ``` + * Should this diagnostic be reported as an error, warning, info, or hint? + * ``` + * + * `.scip.Severity severity = 1 [json_name = "severity"];` + */ + public var severity: org.scip_code.scip.Severity + @kotlin.jvm.JvmName("getSeverity") + get() = _builder.severity + @kotlin.jvm.JvmName("setSeverity") + set(value) { + _builder.severity = value + } + public var severityValue: kotlin.Int + @kotlin.jvm.JvmName("getSeverityValue") + get() = _builder.severityValue + @kotlin.jvm.JvmName("setSeverityValue") + set(value) { + _builder.severityValue = value + } + /** + * ``` + * Should this diagnostic be reported as an error, warning, info, or hint? + * ``` + * + * `.scip.Severity severity = 1 [json_name = "severity"];` + */ + public fun clearSeverity() { + _builder.clearSeverity() + } + + /** + * ``` + * (optional) Code of this diagnostic, which might appear in the user interface. + * ``` + * + * `string code = 2 [json_name = "code"];` + */ + public var code: kotlin.String + @kotlin.jvm.JvmName("getCode") + get() = _builder.code + @kotlin.jvm.JvmName("setCode") + set(value) { + _builder.code = value + } + /** + * ``` + * (optional) Code of this diagnostic, which might appear in the user interface. + * ``` + * + * `string code = 2 [json_name = "code"];` + */ + public fun clearCode() { + _builder.clearCode() + } + + /** + * ``` + * Message of this diagnostic. + * ``` + * + * `string message = 3 [json_name = "message"];` + */ + public var message: kotlin.String + @kotlin.jvm.JvmName("getMessage") + get() = _builder.message + @kotlin.jvm.JvmName("setMessage") + set(value) { + _builder.message = value + } + /** + * ``` + * Message of this diagnostic. + * ``` + * + * `string message = 3 [json_name = "message"];` + */ + public fun clearMessage() { + _builder.clearMessage() + } + + /** + * ``` + * (optional) Human-readable string describing the source of this diagnostic, e.g. + * 'typescript' or 'super lint'. + * ``` + * + * `string source = 4 [json_name = "source"];` + */ + public var source: kotlin.String + @kotlin.jvm.JvmName("getSource") + get() = _builder.source + @kotlin.jvm.JvmName("setSource") + set(value) { + _builder.source = value + } + /** + * ``` + * (optional) Human-readable string describing the source of this diagnostic, e.g. + * 'typescript' or 'super lint'. + * ``` + * + * `string source = 4 [json_name = "source"];` + */ + public fun clearSource() { + _builder.clearSource() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class TagsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * `repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"];` + */ + public val tags: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.tagsList + ) + /** + * `repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"];` + * @param value The tags to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addTags") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.DiagnosticTag) { + _builder.addTags(value) + }/** + * `repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"];` + * @param value The tags to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignTags") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.DiagnosticTag) { + add(value) + }/** + * `repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"];` + * @param values The tags to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllTags") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllTags(values) + }/** + * `repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"];` + * @param values The tags to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllTags") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + }/** + * `repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"];` + * @param index The index to set the value at. + * @param value The tags to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setTags") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.DiagnosticTag) { + _builder.setTags(index, value) + }/** + * `repeated .scip.DiagnosticTag tags = 5 [json_name = "tags"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearTags") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearTags() + }} +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Diagnostic.copy(block: `org.scip_code.scip`.DiagnosticKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Diagnostic = + `org.scip_code.scip`.DiagnosticKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DocumentKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DocumentKt.kt new file mode 100644 index 00000000..52104ccb --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/DocumentKt.kt @@ -0,0 +1,420 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializedocument") +public inline fun document(block: org.scip_code.scip.DocumentKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Document = + org.scip_code.scip.DocumentKt.Dsl._create(org.scip_code.scip.Document.newBuilder()).apply { block() }._build() +/** + * ``` + * Document defines the metadata about a source file on disk. + * ``` + * + * Protobuf type `scip.Document` + */ +public object DocumentKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Document.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Document.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Document = _builder.build() + + /** + * ``` + * The string ID for the programming language this file is written in. + * The `Language` enum contains the names of most common programming languages. + * This field is typed as a string to permit any programming language, including + * ones that are not specified by the `Language` enum. + * ``` + * + * `string language = 4 [json_name = "language"];` + */ + public var language: kotlin.String + @kotlin.jvm.JvmName("getLanguage") + get() = _builder.language + @kotlin.jvm.JvmName("setLanguage") + set(value) { + _builder.language = value + } + /** + * ``` + * The string ID for the programming language this file is written in. + * The `Language` enum contains the names of most common programming languages. + * This field is typed as a string to permit any programming language, including + * ones that are not specified by the `Language` enum. + * ``` + * + * `string language = 4 [json_name = "language"];` + */ + public fun clearLanguage() { + _builder.clearLanguage() + } + + /** + * ``` + * (Required) Unique path to the text document. + * + * 1. The path must be relative to the directory supplied in the associated + * `Metadata.project_root`. + * 2. The path must not begin with a leading '/'. + * 3. The path must point to a regular file, not a symbolic link. + * 4. The path must use '/' as the separator, including on Windows. + * 5. The path must be canonical; it cannot include empty components ('//'), + * or '.' or '..'. + * ``` + * + * `string relative_path = 1 [json_name = "relativePath"];` + */ + public var relativePath: kotlin.String + @kotlin.jvm.JvmName("getRelativePath") + get() = _builder.relativePath + @kotlin.jvm.JvmName("setRelativePath") + set(value) { + _builder.relativePath = value + } + /** + * ``` + * (Required) Unique path to the text document. + * + * 1. The path must be relative to the directory supplied in the associated + * `Metadata.project_root`. + * 2. The path must not begin with a leading '/'. + * 3. The path must point to a regular file, not a symbolic link. + * 4. The path must use '/' as the separator, including on Windows. + * 5. The path must be canonical; it cannot include empty components ('//'), + * or '.' or '..'. + * ``` + * + * `string relative_path = 1 [json_name = "relativePath"];` + */ + public fun clearRelativePath() { + _builder.clearRelativePath() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class OccurrencesProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * Occurrences that appear in this file. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + */ + public val occurrences: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.occurrencesList + ) + /** + * ``` + * Occurrences that appear in this file. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param value The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addOccurrences") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.Occurrence) { + _builder.addOccurrences(value) + } + /** + * ``` + * Occurrences that appear in this file. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param value The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignOccurrences") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.Occurrence) { + add(value) + } + /** + * ``` + * Occurrences that appear in this file. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param values The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllOccurrences") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllOccurrences(values) + } + /** + * ``` + * Occurrences that appear in this file. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param values The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllOccurrences") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * Occurrences that appear in this file. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param index The index to set the value at. + * @param value The occurrences to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setOccurrences") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.Occurrence) { + _builder.setOccurrences(index, value) + } + /** + * ``` + * Occurrences that appear in this file. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearOccurrences") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearOccurrences() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class SymbolsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * Symbols that are "defined" within this document. + * + * This should include symbols which technically do not have any definition, + * but have a reference and are defined by some other symbol (see + * Relationship.is_definition). + * ``` + * + * `repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"];` + */ + public val symbols: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.symbolsList + ) + /** + * ``` + * Symbols that are "defined" within this document. + * + * This should include symbols which technically do not have any definition, + * but have a reference and are defined by some other symbol (see + * Relationship.is_definition). + * ``` + * + * `repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"];` + * @param value The symbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addSymbols") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.SymbolInformation) { + _builder.addSymbols(value) + } + /** + * ``` + * Symbols that are "defined" within this document. + * + * This should include symbols which technically do not have any definition, + * but have a reference and are defined by some other symbol (see + * Relationship.is_definition). + * ``` + * + * `repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"];` + * @param value The symbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignSymbols") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.SymbolInformation) { + add(value) + } + /** + * ``` + * Symbols that are "defined" within this document. + * + * This should include symbols which technically do not have any definition, + * but have a reference and are defined by some other symbol (see + * Relationship.is_definition). + * ``` + * + * `repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"];` + * @param values The symbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllSymbols") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllSymbols(values) + } + /** + * ``` + * Symbols that are "defined" within this document. + * + * This should include symbols which technically do not have any definition, + * but have a reference and are defined by some other symbol (see + * Relationship.is_definition). + * ``` + * + * `repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"];` + * @param values The symbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllSymbols") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * Symbols that are "defined" within this document. + * + * This should include symbols which technically do not have any definition, + * but have a reference and are defined by some other symbol (see + * Relationship.is_definition). + * ``` + * + * `repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"];` + * @param index The index to set the value at. + * @param value The symbols to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setSymbols") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.SymbolInformation) { + _builder.setSymbols(index, value) + } + /** + * ``` + * Symbols that are "defined" within this document. + * + * This should include symbols which technically do not have any definition, + * but have a reference and are defined by some other symbol (see + * Relationship.is_definition). + * ``` + * + * `repeated .scip.SymbolInformation symbols = 3 [json_name = "symbols"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearSymbols") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearSymbols() + } + + /** + * ``` + * (optional) Text contents of this document. Indexers are not expected to + * include the text by default. It's preferable that clients read the text + * contents from the file system by resolving the absolute path from joining + * `Index.metadata.project_root` and `Document.relative_path`. This field + * can be useful for testing or when working with virtual/in-memory documents. + * ``` + * + * `string text = 5 [json_name = "text"];` + */ + public var text: kotlin.String + @kotlin.jvm.JvmName("getText") + get() = _builder.text + @kotlin.jvm.JvmName("setText") + set(value) { + _builder.text = value + } + /** + * ``` + * (optional) Text contents of this document. Indexers are not expected to + * include the text by default. It's preferable that clients read the text + * contents from the file system by resolving the absolute path from joining + * `Index.metadata.project_root` and `Document.relative_path`. This field + * can be useful for testing or when working with virtual/in-memory documents. + * ``` + * + * `string text = 5 [json_name = "text"];` + */ + public fun clearText() { + _builder.clearText() + } + + /** + * ``` + * Specifies the encoding used for source ranges in this Document. + * + * Usually, this will match the type used to index the string type + * in the indexer's implementation language in O(1) time. + * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript, + * use UTF16CodeUnitOffsetFromLineStart. + * - For an indexer implemented in Python, + * use UTF32CodeUnitOffsetFromLineStart. + * - For an indexer implemented in Go, Rust or C++, + * use UTF8ByteOffsetFromLineStart. + * ``` + * + * `.scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"];` + */ + public var positionEncoding: org.scip_code.scip.PositionEncoding + @kotlin.jvm.JvmName("getPositionEncoding") + get() = _builder.positionEncoding + @kotlin.jvm.JvmName("setPositionEncoding") + set(value) { + _builder.positionEncoding = value + } + public var positionEncodingValue: kotlin.Int + @kotlin.jvm.JvmName("getPositionEncodingValue") + get() = _builder.positionEncodingValue + @kotlin.jvm.JvmName("setPositionEncodingValue") + set(value) { + _builder.positionEncodingValue = value + } + /** + * ``` + * Specifies the encoding used for source ranges in this Document. + * + * Usually, this will match the type used to index the string type + * in the indexer's implementation language in O(1) time. + * - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript, + * use UTF16CodeUnitOffsetFromLineStart. + * - For an indexer implemented in Python, + * use UTF32CodeUnitOffsetFromLineStart. + * - For an indexer implemented in Go, Rust or C++, + * use UTF8ByteOffsetFromLineStart. + * ``` + * + * `.scip.PositionEncoding position_encoding = 6 [json_name = "positionEncoding"];` + */ + public fun clearPositionEncoding() { + _builder.clearPositionEncoding() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Document.copy(block: `org.scip_code.scip`.DocumentKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Document = + `org.scip_code.scip`.DocumentKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/IndexKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/IndexKt.kt new file mode 100644 index 00000000..29d11434 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/IndexKt.kt @@ -0,0 +1,312 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializeindex") +public inline fun index(block: org.scip_code.scip.IndexKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Index = + org.scip_code.scip.IndexKt.Dsl._create(org.scip_code.scip.Index.newBuilder()).apply { block() }._build() +/** + * ``` + * Index represents a complete SCIP index for a workspace this is rooted at a + * single directory. An Index message payload can have a large memory footprint + * and it's therefore recommended to emit and consume an Index payload one field + * value at a time. To permit streaming consumption of an Index payload, the + * `metadata` field must appear at the start of the stream and must only appear + * once in the stream. Other field values may appear in any order. + * ``` + * + * Protobuf type `scip.Index` + */ +public object IndexKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Index.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Index.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Index = _builder.build() + + /** + * ``` + * Metadata about this index. + * ``` + * + * `.scip.Metadata metadata = 1 [json_name = "metadata"];` + */ + public var metadata: org.scip_code.scip.Metadata + @kotlin.jvm.JvmName("getMetadata") + get() = _builder.metadata + @kotlin.jvm.JvmName("setMetadata") + set(value) { + _builder.metadata = value + } + /** + * ``` + * Metadata about this index. + * ``` + * + * `.scip.Metadata metadata = 1 [json_name = "metadata"];` + */ + public fun clearMetadata() { + _builder.clearMetadata() + } + /** + * ``` + * Metadata about this index. + * ``` + * + * `.scip.Metadata metadata = 1 [json_name = "metadata"];` + * @return Whether the metadata field is set. + */ + public fun hasMetadata(): kotlin.Boolean { + return _builder.hasMetadata() + } + + public val IndexKt.Dsl.metadataOrNull: org.scip_code.scip.Metadata? + get() = _builder.metadataOrNull + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class DocumentsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * Documents that belong to this index. + * ``` + * + * `repeated .scip.Document documents = 2 [json_name = "documents"];` + */ + public val documents: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.documentsList + ) + /** + * ``` + * Documents that belong to this index. + * ``` + * + * `repeated .scip.Document documents = 2 [json_name = "documents"];` + * @param value The documents to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addDocuments") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.Document) { + _builder.addDocuments(value) + } + /** + * ``` + * Documents that belong to this index. + * ``` + * + * `repeated .scip.Document documents = 2 [json_name = "documents"];` + * @param value The documents to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignDocuments") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.Document) { + add(value) + } + /** + * ``` + * Documents that belong to this index. + * ``` + * + * `repeated .scip.Document documents = 2 [json_name = "documents"];` + * @param values The documents to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllDocuments") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllDocuments(values) + } + /** + * ``` + * Documents that belong to this index. + * ``` + * + * `repeated .scip.Document documents = 2 [json_name = "documents"];` + * @param values The documents to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllDocuments") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * Documents that belong to this index. + * ``` + * + * `repeated .scip.Document documents = 2 [json_name = "documents"];` + * @param index The index to set the value at. + * @param value The documents to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setDocuments") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.Document) { + _builder.setDocuments(index, value) + } + /** + * ``` + * Documents that belong to this index. + * ``` + * + * `repeated .scip.Document documents = 2 [json_name = "documents"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearDocuments") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearDocuments() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class ExternalSymbolsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * (optional) Symbols that are referenced from this index but are defined in + * an external package (a separate `Index` message). Leave this field empty + * if you assume the external package will get indexed separately. If the + * external package won't get indexed for some reason then you can use this + * field to provide hover documentation for those external symbols. + * ``` + * + * `repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"];` + */ + public val externalSymbols: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.externalSymbolsList + ) + /** + * ``` + * (optional) Symbols that are referenced from this index but are defined in + * an external package (a separate `Index` message). Leave this field empty + * if you assume the external package will get indexed separately. If the + * external package won't get indexed for some reason then you can use this + * field to provide hover documentation for those external symbols. + * ``` + * + * `repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"];` + * @param value The externalSymbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addExternalSymbols") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.SymbolInformation) { + _builder.addExternalSymbols(value) + } + /** + * ``` + * (optional) Symbols that are referenced from this index but are defined in + * an external package (a separate `Index` message). Leave this field empty + * if you assume the external package will get indexed separately. If the + * external package won't get indexed for some reason then you can use this + * field to provide hover documentation for those external symbols. + * ``` + * + * `repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"];` + * @param value The externalSymbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignExternalSymbols") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.SymbolInformation) { + add(value) + } + /** + * ``` + * (optional) Symbols that are referenced from this index but are defined in + * an external package (a separate `Index` message). Leave this field empty + * if you assume the external package will get indexed separately. If the + * external package won't get indexed for some reason then you can use this + * field to provide hover documentation for those external symbols. + * ``` + * + * `repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"];` + * @param values The externalSymbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllExternalSymbols") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllExternalSymbols(values) + } + /** + * ``` + * (optional) Symbols that are referenced from this index but are defined in + * an external package (a separate `Index` message). Leave this field empty + * if you assume the external package will get indexed separately. If the + * external package won't get indexed for some reason then you can use this + * field to provide hover documentation for those external symbols. + * ``` + * + * `repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"];` + * @param values The externalSymbols to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllExternalSymbols") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * (optional) Symbols that are referenced from this index but are defined in + * an external package (a separate `Index` message). Leave this field empty + * if you assume the external package will get indexed separately. If the + * external package won't get indexed for some reason then you can use this + * field to provide hover documentation for those external symbols. + * ``` + * + * `repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"];` + * @param index The index to set the value at. + * @param value The externalSymbols to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setExternalSymbols") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.SymbolInformation) { + _builder.setExternalSymbols(index, value) + } + /** + * ``` + * (optional) Symbols that are referenced from this index but are defined in + * an external package (a separate `Index` message). Leave this field empty + * if you assume the external package will get indexed separately. If the + * external package won't get indexed for some reason then you can use this + * field to provide hover documentation for those external symbols. + * ``` + * + * `repeated .scip.SymbolInformation external_symbols = 3 [json_name = "externalSymbols"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearExternalSymbols") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearExternalSymbols() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Index.copy(block: `org.scip_code.scip`.IndexKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Index = + `org.scip_code.scip`.IndexKt.Dsl._create(this.toBuilder()).apply { block() }._build() + +public val org.scip_code.scip.IndexOrBuilder.metadataOrNull: org.scip_code.scip.Metadata? + get() = if (hasMetadata()) getMetadata() else null + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/MetadataKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/MetadataKt.kt new file mode 100644 index 00000000..43664d10 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/MetadataKt.kt @@ -0,0 +1,174 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializemetadata") +public inline fun metadata(block: org.scip_code.scip.MetadataKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Metadata = + org.scip_code.scip.MetadataKt.Dsl._create(org.scip_code.scip.Metadata.newBuilder()).apply { block() }._build() +/** + * Protobuf type `scip.Metadata` + */ +public object MetadataKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Metadata.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Metadata.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Metadata = _builder.build() + + /** + * ``` + * Which version of this protocol was used to generate this index? + * ``` + * + * `.scip.ProtocolVersion version = 1 [json_name = "version"];` + */ + public var version: org.scip_code.scip.ProtocolVersion + @kotlin.jvm.JvmName("getVersion") + get() = _builder.version + @kotlin.jvm.JvmName("setVersion") + set(value) { + _builder.version = value + } + public var versionValue: kotlin.Int + @kotlin.jvm.JvmName("getVersionValue") + get() = _builder.versionValue + @kotlin.jvm.JvmName("setVersionValue") + set(value) { + _builder.versionValue = value + } + /** + * ``` + * Which version of this protocol was used to generate this index? + * ``` + * + * `.scip.ProtocolVersion version = 1 [json_name = "version"];` + */ + public fun clearVersion() { + _builder.clearVersion() + } + + /** + * ``` + * Information about the tool that produced this index. + * ``` + * + * `.scip.ToolInfo tool_info = 2 [json_name = "toolInfo"];` + */ + public var toolInfo: org.scip_code.scip.ToolInfo + @kotlin.jvm.JvmName("getToolInfo") + get() = _builder.toolInfo + @kotlin.jvm.JvmName("setToolInfo") + set(value) { + _builder.toolInfo = value + } + /** + * ``` + * Information about the tool that produced this index. + * ``` + * + * `.scip.ToolInfo tool_info = 2 [json_name = "toolInfo"];` + */ + public fun clearToolInfo() { + _builder.clearToolInfo() + } + /** + * ``` + * Information about the tool that produced this index. + * ``` + * + * `.scip.ToolInfo tool_info = 2 [json_name = "toolInfo"];` + * @return Whether the toolInfo field is set. + */ + public fun hasToolInfo(): kotlin.Boolean { + return _builder.hasToolInfo() + } + + public val MetadataKt.Dsl.toolInfoOrNull: org.scip_code.scip.ToolInfo? + get() = _builder.toolInfoOrNull + + /** + * ``` + * URI-encoded absolute path to the root directory of this index. All + * documents in this index must appear in a subdirectory of this root + * directory. + * ``` + * + * `string project_root = 3 [json_name = "projectRoot"];` + */ + public var projectRoot: kotlin.String + @kotlin.jvm.JvmName("getProjectRoot") + get() = _builder.projectRoot + @kotlin.jvm.JvmName("setProjectRoot") + set(value) { + _builder.projectRoot = value + } + /** + * ``` + * URI-encoded absolute path to the root directory of this index. All + * documents in this index must appear in a subdirectory of this root + * directory. + * ``` + * + * `string project_root = 3 [json_name = "projectRoot"];` + */ + public fun clearProjectRoot() { + _builder.clearProjectRoot() + } + + /** + * ``` + * Text encoding of the source files on disk that are referenced from + * `Document.relative_path`. This value is unrelated to the `Document.text` + * field, which is a Protobuf string and hence must be UTF-8 encoded. + * ``` + * + * `.scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"];` + */ + public var textDocumentEncoding: org.scip_code.scip.TextEncoding + @kotlin.jvm.JvmName("getTextDocumentEncoding") + get() = _builder.textDocumentEncoding + @kotlin.jvm.JvmName("setTextDocumentEncoding") + set(value) { + _builder.textDocumentEncoding = value + } + public var textDocumentEncodingValue: kotlin.Int + @kotlin.jvm.JvmName("getTextDocumentEncodingValue") + get() = _builder.textDocumentEncodingValue + @kotlin.jvm.JvmName("setTextDocumentEncodingValue") + set(value) { + _builder.textDocumentEncodingValue = value + } + /** + * ``` + * Text encoding of the source files on disk that are referenced from + * `Document.relative_path`. This value is unrelated to the `Document.text` + * field, which is a Protobuf string and hence must be UTF-8 encoded. + * ``` + * + * `.scip.TextEncoding text_document_encoding = 4 [json_name = "textDocumentEncoding"];` + */ + public fun clearTextDocumentEncoding() { + _builder.clearTextDocumentEncoding() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Metadata.copy(block: `org.scip_code.scip`.MetadataKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Metadata = + `org.scip_code.scip`.MetadataKt.Dsl._create(this.toBuilder()).apply { block() }._build() + +public val org.scip_code.scip.MetadataOrBuilder.toolInfoOrNull: org.scip_code.scip.ToolInfo? + get() = if (hasToolInfo()) getToolInfo() else null + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/OccurrenceKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/OccurrenceKt.kt new file mode 100644 index 00000000..e72cdedc --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/OccurrenceKt.kt @@ -0,0 +1,1072 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializeoccurrence") +public inline fun occurrence(block: org.scip_code.scip.OccurrenceKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Occurrence = + org.scip_code.scip.OccurrenceKt.Dsl._create(org.scip_code.scip.Occurrence.newBuilder()).apply { block() }._build() +/** + * ``` + * Occurrence associates a source position with a symbol and/or highlighting + * information. + * + * If possible, indexers should try to bundle logically related information + * across occurrences into a single occurrence to reduce payload sizes. + * ``` + * + * Protobuf type `scip.Occurrence` + */ +public object OccurrenceKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Occurrence.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Occurrence.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Occurrence = _builder.build() + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class RangeProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * Half-open [start, end) range of this occurrence. Must be exactly three or four + * elements: + * + * - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + * is inferred to have the same value as the start line. + * + * It is allowed for the range to be empty (i.e. start==end). + * + * Line numbers and characters are always 0-based. Make sure to increment the + * line/character values before displaying them in an editor-like UI because + * editors conventionally use 1-based numbers. + * + * The 'character' value is interpreted based on the PositionEncoding for + * the Document. + * + * Historical note: the original draft of this schema had a `Range` message + * type with `start` and `end` fields of type `Position`, mirroring LSP. + * Benchmarks revealed that this encoding was inefficient and that we could + * reduce the total payload size of an index by 50% by using `repeated int32` + * instead. The `repeated int32` encoding is admittedly more embarrassing to + * work with in some programming languages but we hope the performance + * improvements make up for it. + * ``` + * + * `repeated int32 range = 1 [json_name = "range"];` + */ + public val range: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.rangeList + ) + /** + * ``` + * Half-open [start, end) range of this occurrence. Must be exactly three or four + * elements: + * + * - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + * is inferred to have the same value as the start line. + * + * It is allowed for the range to be empty (i.e. start==end). + * + * Line numbers and characters are always 0-based. Make sure to increment the + * line/character values before displaying them in an editor-like UI because + * editors conventionally use 1-based numbers. + * + * The 'character' value is interpreted based on the PositionEncoding for + * the Document. + * + * Historical note: the original draft of this schema had a `Range` message + * type with `start` and `end` fields of type `Position`, mirroring LSP. + * Benchmarks revealed that this encoding was inefficient and that we could + * reduce the total payload size of an index by 50% by using `repeated int32` + * instead. The `repeated int32` encoding is admittedly more embarrassing to + * work with in some programming languages but we hope the performance + * improvements make up for it. + * ``` + * + * `repeated int32 range = 1 [json_name = "range"];` + * @param value The range to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addRange") + public fun com.google.protobuf.kotlin.DslList.add(value: kotlin.Int) { + _builder.addRange(value) + }/** + * ``` + * Half-open [start, end) range of this occurrence. Must be exactly three or four + * elements: + * + * - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + * is inferred to have the same value as the start line. + * + * It is allowed for the range to be empty (i.e. start==end). + * + * Line numbers and characters are always 0-based. Make sure to increment the + * line/character values before displaying them in an editor-like UI because + * editors conventionally use 1-based numbers. + * + * The 'character' value is interpreted based on the PositionEncoding for + * the Document. + * + * Historical note: the original draft of this schema had a `Range` message + * type with `start` and `end` fields of type `Position`, mirroring LSP. + * Benchmarks revealed that this encoding was inefficient and that we could + * reduce the total payload size of an index by 50% by using `repeated int32` + * instead. The `repeated int32` encoding is admittedly more embarrassing to + * work with in some programming languages but we hope the performance + * improvements make up for it. + * ``` + * + * `repeated int32 range = 1 [json_name = "range"];` + * @param value The range to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignRange") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: kotlin.Int) { + add(value) + }/** + * ``` + * Half-open [start, end) range of this occurrence. Must be exactly three or four + * elements: + * + * - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + * is inferred to have the same value as the start line. + * + * It is allowed for the range to be empty (i.e. start==end). + * + * Line numbers and characters are always 0-based. Make sure to increment the + * line/character values before displaying them in an editor-like UI because + * editors conventionally use 1-based numbers. + * + * The 'character' value is interpreted based on the PositionEncoding for + * the Document. + * + * Historical note: the original draft of this schema had a `Range` message + * type with `start` and `end` fields of type `Position`, mirroring LSP. + * Benchmarks revealed that this encoding was inefficient and that we could + * reduce the total payload size of an index by 50% by using `repeated int32` + * instead. The `repeated int32` encoding is admittedly more embarrassing to + * work with in some programming languages but we hope the performance + * improvements make up for it. + * ``` + * + * `repeated int32 range = 1 [json_name = "range"];` + * @param values The range to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllRange") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllRange(values) + }/** + * ``` + * Half-open [start, end) range of this occurrence. Must be exactly three or four + * elements: + * + * - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + * is inferred to have the same value as the start line. + * + * It is allowed for the range to be empty (i.e. start==end). + * + * Line numbers and characters are always 0-based. Make sure to increment the + * line/character values before displaying them in an editor-like UI because + * editors conventionally use 1-based numbers. + * + * The 'character' value is interpreted based on the PositionEncoding for + * the Document. + * + * Historical note: the original draft of this schema had a `Range` message + * type with `start` and `end` fields of type `Position`, mirroring LSP. + * Benchmarks revealed that this encoding was inefficient and that we could + * reduce the total payload size of an index by 50% by using `repeated int32` + * instead. The `repeated int32` encoding is admittedly more embarrassing to + * work with in some programming languages but we hope the performance + * improvements make up for it. + * ``` + * + * `repeated int32 range = 1 [json_name = "range"];` + * @param values The range to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllRange") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + }/** + * ``` + * Half-open [start, end) range of this occurrence. Must be exactly three or four + * elements: + * + * - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + * is inferred to have the same value as the start line. + * + * It is allowed for the range to be empty (i.e. start==end). + * + * Line numbers and characters are always 0-based. Make sure to increment the + * line/character values before displaying them in an editor-like UI because + * editors conventionally use 1-based numbers. + * + * The 'character' value is interpreted based on the PositionEncoding for + * the Document. + * + * Historical note: the original draft of this schema had a `Range` message + * type with `start` and `end` fields of type `Position`, mirroring LSP. + * Benchmarks revealed that this encoding was inefficient and that we could + * reduce the total payload size of an index by 50% by using `repeated int32` + * instead. The `repeated int32` encoding is admittedly more embarrassing to + * work with in some programming languages but we hope the performance + * improvements make up for it. + * ``` + * + * `repeated int32 range = 1 [json_name = "range"];` + * @param index The index to set the value at. + * @param value The range to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setRange") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: kotlin.Int) { + _builder.setRange(index, value) + }/** + * ``` + * Half-open [start, end) range of this occurrence. Must be exactly three or four + * elements: + * + * - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + * - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + * is inferred to have the same value as the start line. + * + * It is allowed for the range to be empty (i.e. start==end). + * + * Line numbers and characters are always 0-based. Make sure to increment the + * line/character values before displaying them in an editor-like UI because + * editors conventionally use 1-based numbers. + * + * The 'character' value is interpreted based on the PositionEncoding for + * the Document. + * + * Historical note: the original draft of this schema had a `Range` message + * type with `start` and `end` fields of type `Position`, mirroring LSP. + * Benchmarks revealed that this encoding was inefficient and that we could + * reduce the total payload size of an index by 50% by using `repeated int32` + * instead. The `repeated int32` encoding is admittedly more embarrassing to + * work with in some programming languages but we hope the performance + * improvements make up for it. + * ``` + * + * `repeated int32 range = 1 [json_name = "range"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearRange") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearRange() + } + /** + * ``` + * (optional) The symbol that appears at this position. See + * `SymbolInformation.symbol` for how to format symbols as strings. + * ``` + * + * `string symbol = 2 [json_name = "symbol"];` + */ + public var symbol: kotlin.String + @kotlin.jvm.JvmName("getSymbol") + get() = _builder.symbol + @kotlin.jvm.JvmName("setSymbol") + set(value) { + _builder.symbol = value + } + /** + * ``` + * (optional) The symbol that appears at this position. See + * `SymbolInformation.symbol` for how to format symbols as strings. + * ``` + * + * `string symbol = 2 [json_name = "symbol"];` + */ + public fun clearSymbol() { + _builder.clearSymbol() + } + + /** + * ``` + * (optional) Bitset containing `SymbolRole`s in this occurrence. + * See `SymbolRole`'s documentation for how to read and write this field. + * ``` + * + * `int32 symbol_roles = 3 [json_name = "symbolRoles"];` + */ + public var symbolRoles: kotlin.Int + @kotlin.jvm.JvmName("getSymbolRoles") + get() = _builder.symbolRoles + @kotlin.jvm.JvmName("setSymbolRoles") + set(value) { + _builder.symbolRoles = value + } + /** + * ``` + * (optional) Bitset containing `SymbolRole`s in this occurrence. + * See `SymbolRole`'s documentation for how to read and write this field. + * ``` + * + * `int32 symbol_roles = 3 [json_name = "symbolRoles"];` + */ + public fun clearSymbolRoles() { + _builder.clearSymbolRoles() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class OverrideDocumentationProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * (optional) CommonMark-formatted documentation for this specific range. If + * empty, the `Symbol.documentation` field is used instead. One example + * where this field might be useful is when the symbol represents a generic + * function (with abstract type parameters such as `List`) and at this + * occurrence we know the exact values (such as `List`). + * + * This field can also be used for dynamically or gradually typed languages, + * which commonly allow for type-changing assignment. + * ``` + * + * `repeated string override_documentation = 4 [json_name = "overrideDocumentation"];` + * @return A list containing the overrideDocumentation. + */ + public val overrideDocumentation: com.google.protobuf.kotlin.DslList + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + get() = com.google.protobuf.kotlin.DslList( + _builder.overrideDocumentationList + ) + /** + * ``` + * (optional) CommonMark-formatted documentation for this specific range. If + * empty, the `Symbol.documentation` field is used instead. One example + * where this field might be useful is when the symbol represents a generic + * function (with abstract type parameters such as `List`) and at this + * occurrence we know the exact values (such as `List`). + * + * This field can also be used for dynamically or gradually typed languages, + * which commonly allow for type-changing assignment. + * ``` + * + * `repeated string override_documentation = 4 [json_name = "overrideDocumentation"];` + * @param value The overrideDocumentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addOverrideDocumentation") + public fun com.google.protobuf.kotlin.DslList.add(value: kotlin.String) { + _builder.addOverrideDocumentation(value) + } + /** + * ``` + * (optional) CommonMark-formatted documentation for this specific range. If + * empty, the `Symbol.documentation` field is used instead. One example + * where this field might be useful is when the symbol represents a generic + * function (with abstract type parameters such as `List`) and at this + * occurrence we know the exact values (such as `List`). + * + * This field can also be used for dynamically or gradually typed languages, + * which commonly allow for type-changing assignment. + * ``` + * + * `repeated string override_documentation = 4 [json_name = "overrideDocumentation"];` + * @param value The overrideDocumentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignOverrideDocumentation") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: kotlin.String) { + add(value) + } + /** + * ``` + * (optional) CommonMark-formatted documentation for this specific range. If + * empty, the `Symbol.documentation` field is used instead. One example + * where this field might be useful is when the symbol represents a generic + * function (with abstract type parameters such as `List`) and at this + * occurrence we know the exact values (such as `List`). + * + * This field can also be used for dynamically or gradually typed languages, + * which commonly allow for type-changing assignment. + * ``` + * + * `repeated string override_documentation = 4 [json_name = "overrideDocumentation"];` + * @param values The overrideDocumentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllOverrideDocumentation") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllOverrideDocumentation(values) + } + /** + * ``` + * (optional) CommonMark-formatted documentation for this specific range. If + * empty, the `Symbol.documentation` field is used instead. One example + * where this field might be useful is when the symbol represents a generic + * function (with abstract type parameters such as `List`) and at this + * occurrence we know the exact values (such as `List`). + * + * This field can also be used for dynamically or gradually typed languages, + * which commonly allow for type-changing assignment. + * ``` + * + * `repeated string override_documentation = 4 [json_name = "overrideDocumentation"];` + * @param values The overrideDocumentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllOverrideDocumentation") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * (optional) CommonMark-formatted documentation for this specific range. If + * empty, the `Symbol.documentation` field is used instead. One example + * where this field might be useful is when the symbol represents a generic + * function (with abstract type parameters such as `List`) and at this + * occurrence we know the exact values (such as `List`). + * + * This field can also be used for dynamically or gradually typed languages, + * which commonly allow for type-changing assignment. + * ``` + * + * `repeated string override_documentation = 4 [json_name = "overrideDocumentation"];` + * @param index The index to set the value at. + * @param value The overrideDocumentation to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setOverrideDocumentation") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: kotlin.String) { + _builder.setOverrideDocumentation(index, value) + }/** + * ``` + * (optional) CommonMark-formatted documentation for this specific range. If + * empty, the `Symbol.documentation` field is used instead. One example + * where this field might be useful is when the symbol represents a generic + * function (with abstract type parameters such as `List`) and at this + * occurrence we know the exact values (such as `List`). + * + * This field can also be used for dynamically or gradually typed languages, + * which commonly allow for type-changing assignment. + * ``` + * + * `repeated string override_documentation = 4 [json_name = "overrideDocumentation"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setOverrideDocumentation") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearOverrideDocumentation() + } + /** + * ``` + * (optional) What syntax highlighting class should be used for this range? + * ``` + * + * `.scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"];` + */ + public var syntaxKind: org.scip_code.scip.SyntaxKind + @kotlin.jvm.JvmName("getSyntaxKind") + get() = _builder.syntaxKind + @kotlin.jvm.JvmName("setSyntaxKind") + set(value) { + _builder.syntaxKind = value + } + public var syntaxKindValue: kotlin.Int + @kotlin.jvm.JvmName("getSyntaxKindValue") + get() = _builder.syntaxKindValue + @kotlin.jvm.JvmName("setSyntaxKindValue") + set(value) { + _builder.syntaxKindValue = value + } + /** + * ``` + * (optional) What syntax highlighting class should be used for this range? + * ``` + * + * `.scip.SyntaxKind syntax_kind = 5 [json_name = "syntaxKind"];` + */ + public fun clearSyntaxKind() { + _builder.clearSyntaxKind() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class DiagnosticsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * (optional) Diagnostics that have been reported for this specific range. + * ``` + * + * `repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"];` + */ + public val diagnostics: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.diagnosticsList + ) + /** + * ``` + * (optional) Diagnostics that have been reported for this specific range. + * ``` + * + * `repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"];` + * @param value The diagnostics to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addDiagnostics") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.Diagnostic) { + _builder.addDiagnostics(value) + } + /** + * ``` + * (optional) Diagnostics that have been reported for this specific range. + * ``` + * + * `repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"];` + * @param value The diagnostics to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignDiagnostics") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.Diagnostic) { + add(value) + } + /** + * ``` + * (optional) Diagnostics that have been reported for this specific range. + * ``` + * + * `repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"];` + * @param values The diagnostics to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllDiagnostics") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllDiagnostics(values) + } + /** + * ``` + * (optional) Diagnostics that have been reported for this specific range. + * ``` + * + * `repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"];` + * @param values The diagnostics to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllDiagnostics") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * (optional) Diagnostics that have been reported for this specific range. + * ``` + * + * `repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"];` + * @param index The index to set the value at. + * @param value The diagnostics to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setDiagnostics") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.Diagnostic) { + _builder.setDiagnostics(index, value) + } + /** + * ``` + * (optional) Diagnostics that have been reported for this specific range. + * ``` + * + * `repeated .scip.Diagnostic diagnostics = 6 [json_name = "diagnostics"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearDiagnostics") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearDiagnostics() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class EnclosingRangeProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * (optional) Using the same encoding as the sibling `range` field, half-open + * source range of the nearest non-trivial enclosing AST node. This range must + * enclose the `range` field. Example applications that make use of the + * enclosing_range field: + * + * - Call hierarchies: to determine what symbols are references from the body + * of a function + * - Symbol outline: to display breadcrumbs from the cursor position to the + * root of the file + * - Expand selection: to select the nearest enclosing AST node. + * - Highlight range: to indicate the AST expression that is associated with a + * hover popover + * + * For definition occurrences, the enclosing range should indicate the + * start/end bounds of the entire definition AST node, including + * documentation. + * ``` + * const n = 3 + * ^ range + * ^^^^^^^^^^^ enclosing_range + * + * /** Parses the string into something */ + * ^ enclosing_range start --------------------------------------| + * function parse(input string): string { | + * ^^^^^ range | + * return input.slice(n) | + * } | + * ^ enclosing_range end <---------------------------------------| + * ``` + * + * Any attributes/decorators/attached macros should also be part of the + * enclosing range. + * + * ```python + * @cache + * ^ enclosing_range start---------------------| + * def factorial(n): | + * return n * factorial(n-1) if n else 1 | + * < enclosing_range end-----------------------| + * + * ``` + * + * For reference occurrences, the enclosing range should indicate the start/end + * bounds of the parent expression. + * ``` + * const a = a.b + * ^ range + * ^^^ enclosing_range + * const b = a.b(41).f(42).g(43) + * ^ range + * ^^^^^^^^^^^^^ enclosing_range + * ``` + * ``` + * + * `repeated int32 enclosing_range = 7 [json_name = "enclosingRange"];` + */ + public val enclosingRange: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.enclosingRangeList + ) + /** + * ``` + * (optional) Using the same encoding as the sibling `range` field, half-open + * source range of the nearest non-trivial enclosing AST node. This range must + * enclose the `range` field. Example applications that make use of the + * enclosing_range field: + * + * - Call hierarchies: to determine what symbols are references from the body + * of a function + * - Symbol outline: to display breadcrumbs from the cursor position to the + * root of the file + * - Expand selection: to select the nearest enclosing AST node. + * - Highlight range: to indicate the AST expression that is associated with a + * hover popover + * + * For definition occurrences, the enclosing range should indicate the + * start/end bounds of the entire definition AST node, including + * documentation. + * ``` + * const n = 3 + * ^ range + * ^^^^^^^^^^^ enclosing_range + * + * /** Parses the string into something */ + * ^ enclosing_range start --------------------------------------| + * function parse(input string): string { | + * ^^^^^ range | + * return input.slice(n) | + * } | + * ^ enclosing_range end <---------------------------------------| + * ``` + * + * Any attributes/decorators/attached macros should also be part of the + * enclosing range. + * + * ```python + * @cache + * ^ enclosing_range start---------------------| + * def factorial(n): | + * return n * factorial(n-1) if n else 1 | + * < enclosing_range end-----------------------| + * + * ``` + * + * For reference occurrences, the enclosing range should indicate the start/end + * bounds of the parent expression. + * ``` + * const a = a.b + * ^ range + * ^^^ enclosing_range + * const b = a.b(41).f(42).g(43) + * ^ range + * ^^^^^^^^^^^^^ enclosing_range + * ``` + * ``` + * + * `repeated int32 enclosing_range = 7 [json_name = "enclosingRange"];` + * @param value The enclosingRange to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addEnclosingRange") + public fun com.google.protobuf.kotlin.DslList.add(value: kotlin.Int) { + _builder.addEnclosingRange(value) + }/** + * ``` + * (optional) Using the same encoding as the sibling `range` field, half-open + * source range of the nearest non-trivial enclosing AST node. This range must + * enclose the `range` field. Example applications that make use of the + * enclosing_range field: + * + * - Call hierarchies: to determine what symbols are references from the body + * of a function + * - Symbol outline: to display breadcrumbs from the cursor position to the + * root of the file + * - Expand selection: to select the nearest enclosing AST node. + * - Highlight range: to indicate the AST expression that is associated with a + * hover popover + * + * For definition occurrences, the enclosing range should indicate the + * start/end bounds of the entire definition AST node, including + * documentation. + * ``` + * const n = 3 + * ^ range + * ^^^^^^^^^^^ enclosing_range + * + * /** Parses the string into something */ + * ^ enclosing_range start --------------------------------------| + * function parse(input string): string { | + * ^^^^^ range | + * return input.slice(n) | + * } | + * ^ enclosing_range end <---------------------------------------| + * ``` + * + * Any attributes/decorators/attached macros should also be part of the + * enclosing range. + * + * ```python + * @cache + * ^ enclosing_range start---------------------| + * def factorial(n): | + * return n * factorial(n-1) if n else 1 | + * < enclosing_range end-----------------------| + * + * ``` + * + * For reference occurrences, the enclosing range should indicate the start/end + * bounds of the parent expression. + * ``` + * const a = a.b + * ^ range + * ^^^ enclosing_range + * const b = a.b(41).f(42).g(43) + * ^ range + * ^^^^^^^^^^^^^ enclosing_range + * ``` + * ``` + * + * `repeated int32 enclosing_range = 7 [json_name = "enclosingRange"];` + * @param value The enclosingRange to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignEnclosingRange") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: kotlin.Int) { + add(value) + }/** + * ``` + * (optional) Using the same encoding as the sibling `range` field, half-open + * source range of the nearest non-trivial enclosing AST node. This range must + * enclose the `range` field. Example applications that make use of the + * enclosing_range field: + * + * - Call hierarchies: to determine what symbols are references from the body + * of a function + * - Symbol outline: to display breadcrumbs from the cursor position to the + * root of the file + * - Expand selection: to select the nearest enclosing AST node. + * - Highlight range: to indicate the AST expression that is associated with a + * hover popover + * + * For definition occurrences, the enclosing range should indicate the + * start/end bounds of the entire definition AST node, including + * documentation. + * ``` + * const n = 3 + * ^ range + * ^^^^^^^^^^^ enclosing_range + * + * /** Parses the string into something */ + * ^ enclosing_range start --------------------------------------| + * function parse(input string): string { | + * ^^^^^ range | + * return input.slice(n) | + * } | + * ^ enclosing_range end <---------------------------------------| + * ``` + * + * Any attributes/decorators/attached macros should also be part of the + * enclosing range. + * + * ```python + * @cache + * ^ enclosing_range start---------------------| + * def factorial(n): | + * return n * factorial(n-1) if n else 1 | + * < enclosing_range end-----------------------| + * + * ``` + * + * For reference occurrences, the enclosing range should indicate the start/end + * bounds of the parent expression. + * ``` + * const a = a.b + * ^ range + * ^^^ enclosing_range + * const b = a.b(41).f(42).g(43) + * ^ range + * ^^^^^^^^^^^^^ enclosing_range + * ``` + * ``` + * + * `repeated int32 enclosing_range = 7 [json_name = "enclosingRange"];` + * @param values The enclosingRange to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllEnclosingRange") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllEnclosingRange(values) + }/** + * ``` + * (optional) Using the same encoding as the sibling `range` field, half-open + * source range of the nearest non-trivial enclosing AST node. This range must + * enclose the `range` field. Example applications that make use of the + * enclosing_range field: + * + * - Call hierarchies: to determine what symbols are references from the body + * of a function + * - Symbol outline: to display breadcrumbs from the cursor position to the + * root of the file + * - Expand selection: to select the nearest enclosing AST node. + * - Highlight range: to indicate the AST expression that is associated with a + * hover popover + * + * For definition occurrences, the enclosing range should indicate the + * start/end bounds of the entire definition AST node, including + * documentation. + * ``` + * const n = 3 + * ^ range + * ^^^^^^^^^^^ enclosing_range + * + * /** Parses the string into something */ + * ^ enclosing_range start --------------------------------------| + * function parse(input string): string { | + * ^^^^^ range | + * return input.slice(n) | + * } | + * ^ enclosing_range end <---------------------------------------| + * ``` + * + * Any attributes/decorators/attached macros should also be part of the + * enclosing range. + * + * ```python + * @cache + * ^ enclosing_range start---------------------| + * def factorial(n): | + * return n * factorial(n-1) if n else 1 | + * < enclosing_range end-----------------------| + * + * ``` + * + * For reference occurrences, the enclosing range should indicate the start/end + * bounds of the parent expression. + * ``` + * const a = a.b + * ^ range + * ^^^ enclosing_range + * const b = a.b(41).f(42).g(43) + * ^ range + * ^^^^^^^^^^^^^ enclosing_range + * ``` + * ``` + * + * `repeated int32 enclosing_range = 7 [json_name = "enclosingRange"];` + * @param values The enclosingRange to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllEnclosingRange") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + }/** + * ``` + * (optional) Using the same encoding as the sibling `range` field, half-open + * source range of the nearest non-trivial enclosing AST node. This range must + * enclose the `range` field. Example applications that make use of the + * enclosing_range field: + * + * - Call hierarchies: to determine what symbols are references from the body + * of a function + * - Symbol outline: to display breadcrumbs from the cursor position to the + * root of the file + * - Expand selection: to select the nearest enclosing AST node. + * - Highlight range: to indicate the AST expression that is associated with a + * hover popover + * + * For definition occurrences, the enclosing range should indicate the + * start/end bounds of the entire definition AST node, including + * documentation. + * ``` + * const n = 3 + * ^ range + * ^^^^^^^^^^^ enclosing_range + * + * /** Parses the string into something */ + * ^ enclosing_range start --------------------------------------| + * function parse(input string): string { | + * ^^^^^ range | + * return input.slice(n) | + * } | + * ^ enclosing_range end <---------------------------------------| + * ``` + * + * Any attributes/decorators/attached macros should also be part of the + * enclosing range. + * + * ```python + * @cache + * ^ enclosing_range start---------------------| + * def factorial(n): | + * return n * factorial(n-1) if n else 1 | + * < enclosing_range end-----------------------| + * + * ``` + * + * For reference occurrences, the enclosing range should indicate the start/end + * bounds of the parent expression. + * ``` + * const a = a.b + * ^ range + * ^^^ enclosing_range + * const b = a.b(41).f(42).g(43) + * ^ range + * ^^^^^^^^^^^^^ enclosing_range + * ``` + * ``` + * + * `repeated int32 enclosing_range = 7 [json_name = "enclosingRange"];` + * @param index The index to set the value at. + * @param value The enclosingRange to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setEnclosingRange") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: kotlin.Int) { + _builder.setEnclosingRange(index, value) + }/** + * ``` + * (optional) Using the same encoding as the sibling `range` field, half-open + * source range of the nearest non-trivial enclosing AST node. This range must + * enclose the `range` field. Example applications that make use of the + * enclosing_range field: + * + * - Call hierarchies: to determine what symbols are references from the body + * of a function + * - Symbol outline: to display breadcrumbs from the cursor position to the + * root of the file + * - Expand selection: to select the nearest enclosing AST node. + * - Highlight range: to indicate the AST expression that is associated with a + * hover popover + * + * For definition occurrences, the enclosing range should indicate the + * start/end bounds of the entire definition AST node, including + * documentation. + * ``` + * const n = 3 + * ^ range + * ^^^^^^^^^^^ enclosing_range + * + * /** Parses the string into something */ + * ^ enclosing_range start --------------------------------------| + * function parse(input string): string { | + * ^^^^^ range | + * return input.slice(n) | + * } | + * ^ enclosing_range end <---------------------------------------| + * ``` + * + * Any attributes/decorators/attached macros should also be part of the + * enclosing range. + * + * ```python + * @cache + * ^ enclosing_range start---------------------| + * def factorial(n): | + * return n * factorial(n-1) if n else 1 | + * < enclosing_range end-----------------------| + * + * ``` + * + * For reference occurrences, the enclosing range should indicate the start/end + * bounds of the parent expression. + * ``` + * const a = a.b + * ^ range + * ^^^ enclosing_range + * const b = a.b(41).f(42).g(43) + * ^ range + * ^^^^^^^^^^^^^ enclosing_range + * ``` + * ``` + * + * `repeated int32 enclosing_range = 7 [json_name = "enclosingRange"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearEnclosingRange") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearEnclosingRange() + }} +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Occurrence.copy(block: `org.scip_code.scip`.OccurrenceKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Occurrence = + `org.scip_code.scip`.OccurrenceKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/PackageKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/PackageKt.kt new file mode 100644 index 00000000..edbb0e4a --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/PackageKt.kt @@ -0,0 +1,92 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializepackage_") +public inline fun package_(block: org.scip_code.scip.PackageKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Package = + org.scip_code.scip.PackageKt.Dsl._create(org.scip_code.scip.Package.newBuilder()).apply { block() }._build() +/** + * ``` + * Unit of packaging and distribution. + * + * NOTE: This corresponds to a module in Go and JVM languages. + * ``` + * + * Protobuf type `scip.Package` + */ +public object PackageKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Package.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Package.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Package = _builder.build() + + /** + * `string manager = 1 [json_name = "manager"];` + */ + public var manager: kotlin.String + @kotlin.jvm.JvmName("getManager") + get() = _builder.manager + @kotlin.jvm.JvmName("setManager") + set(value) { + _builder.manager = value + } + /** + * `string manager = 1 [json_name = "manager"];` + */ + public fun clearManager() { + _builder.clearManager() + } + + /** + * `string name = 2 [json_name = "name"];` + */ + public var name: kotlin.String + @kotlin.jvm.JvmName("getName") + get() = _builder.name + @kotlin.jvm.JvmName("setName") + set(value) { + _builder.name = value + } + /** + * `string name = 2 [json_name = "name"];` + */ + public fun clearName() { + _builder.clearName() + } + + /** + * `string version = 3 [json_name = "version"];` + */ + public var version: kotlin.String + @kotlin.jvm.JvmName("getVersion") + get() = _builder.version + @kotlin.jvm.JvmName("setVersion") + set(value) { + _builder.version = value + } + /** + * `string version = 3 [json_name = "version"];` + */ + public fun clearVersion() { + _builder.clearVersion() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Package.copy(block: `org.scip_code.scip`.PackageKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Package = + `org.scip_code.scip`.PackageKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/RelationshipKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/RelationshipKt.kt new file mode 100644 index 00000000..56adc6e1 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/RelationshipKt.kt @@ -0,0 +1,234 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializerelationship") +public inline fun relationship(block: org.scip_code.scip.RelationshipKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Relationship = + org.scip_code.scip.RelationshipKt.Dsl._create(org.scip_code.scip.Relationship.newBuilder()).apply { block() }._build() +/** + * Protobuf type `scip.Relationship` + */ +public object RelationshipKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Relationship.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Relationship.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Relationship = _builder.build() + + /** + * `string symbol = 1 [json_name = "symbol"];` + */ + public var symbol: kotlin.String + @kotlin.jvm.JvmName("getSymbol") + get() = _builder.symbol + @kotlin.jvm.JvmName("setSymbol") + set(value) { + _builder.symbol = value + } + /** + * `string symbol = 1 [json_name = "symbol"];` + */ + public fun clearSymbol() { + _builder.clearSymbol() + } + + /** + * ``` + * When resolving "Find references", this field documents what other symbols + * should be included together with this symbol. For example, consider the + * following TypeScript code that defines two symbols `Animal#sound()` and + * `Dog#sound()`: + * ```ts + * interface Animal { + * ^^^^^^ definition Animal# + * sound(): string + * ^^^^^ definition Animal#sound() + * } + * class Dog implements Animal { + * ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}] + * public sound(): string { return "woof" } + * ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}] + * } + * const animal: Animal = new Dog() + * ^^^^^^ reference Animal# + * console.log(animal.sound()) + * ^^^^^ reference Animal#sound() + * ``` + * Doing "Find references" on the symbol `Animal#sound()` should return + * references to the `Dog#sound()` method as well. Vice-versa, doing "Find + * references" on the `Dog#sound()` method should include references to the + * `Animal#sound()` method as well. + * ``` + * + * `bool is_reference = 2 [json_name = "isReference"];` + */ + public var isReference: kotlin.Boolean + @kotlin.jvm.JvmName("getIsReference") + get() = _builder.isReference + @kotlin.jvm.JvmName("setIsReference") + set(value) { + _builder.isReference = value + } + /** + * ``` + * When resolving "Find references", this field documents what other symbols + * should be included together with this symbol. For example, consider the + * following TypeScript code that defines two symbols `Animal#sound()` and + * `Dog#sound()`: + * ```ts + * interface Animal { + * ^^^^^^ definition Animal# + * sound(): string + * ^^^^^ definition Animal#sound() + * } + * class Dog implements Animal { + * ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}] + * public sound(): string { return "woof" } + * ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}] + * } + * const animal: Animal = new Dog() + * ^^^^^^ reference Animal# + * console.log(animal.sound()) + * ^^^^^ reference Animal#sound() + * ``` + * Doing "Find references" on the symbol `Animal#sound()` should return + * references to the `Dog#sound()` method as well. Vice-versa, doing "Find + * references" on the `Dog#sound()` method should include references to the + * `Animal#sound()` method as well. + * ``` + * + * `bool is_reference = 2 [json_name = "isReference"];` + */ + public fun clearIsReference() { + _builder.clearIsReference() + } + + /** + * ``` + * Similar to `is_reference` but for "Find implementations". + * It's common for `is_implementation` and `is_reference` to both be true but + * it's not always the case. + * In the TypeScript example above, observe that `Dog#` has an + * `is_implementation` relationship with `"Animal#"` but not `is_reference`. + * This is because "Find references" on the "Animal#" symbol should not return + * "Dog#". We only want "Dog#" to return as a result for "Find + * implementations" on the "Animal#" symbol. + * ``` + * + * `bool is_implementation = 3 [json_name = "isImplementation"];` + */ + public var isImplementation: kotlin.Boolean + @kotlin.jvm.JvmName("getIsImplementation") + get() = _builder.isImplementation + @kotlin.jvm.JvmName("setIsImplementation") + set(value) { + _builder.isImplementation = value + } + /** + * ``` + * Similar to `is_reference` but for "Find implementations". + * It's common for `is_implementation` and `is_reference` to both be true but + * it's not always the case. + * In the TypeScript example above, observe that `Dog#` has an + * `is_implementation` relationship with `"Animal#"` but not `is_reference`. + * This is because "Find references" on the "Animal#" symbol should not return + * "Dog#". We only want "Dog#" to return as a result for "Find + * implementations" on the "Animal#" symbol. + * ``` + * + * `bool is_implementation = 3 [json_name = "isImplementation"];` + */ + public fun clearIsImplementation() { + _builder.clearIsImplementation() + } + + /** + * ``` + * Similar to `references_symbols` but for "Go to type definition". + * ``` + * + * `bool is_type_definition = 4 [json_name = "isTypeDefinition"];` + */ + public var isTypeDefinition: kotlin.Boolean + @kotlin.jvm.JvmName("getIsTypeDefinition") + get() = _builder.isTypeDefinition + @kotlin.jvm.JvmName("setIsTypeDefinition") + set(value) { + _builder.isTypeDefinition = value + } + /** + * ``` + * Similar to `references_symbols` but for "Go to type definition". + * ``` + * + * `bool is_type_definition = 4 [json_name = "isTypeDefinition"];` + */ + public fun clearIsTypeDefinition() { + _builder.clearIsTypeDefinition() + } + + /** + * ``` + * Allows overriding the behavior of "Go to definition" and "Find references" + * for symbols which do not have a definition of their own or could + * potentially have multiple definitions. + * + * For example, in a language with single inheritance and no field overriding, + * inherited fields can reuse the same symbol as the ancestor which declares + * the field. In such a situation, is_definition is not needed. + * + * On the other hand, in languages with single inheritance and some form + * of mixins, you can use is_definition to relate the symbol to the + * matching symbol in ancestor classes, and is_reference to relate the + * symbol to the matching symbol in mixins. + * ``` + * + * `bool is_definition = 5 [json_name = "isDefinition"];` + */ + public var isDefinition: kotlin.Boolean + @kotlin.jvm.JvmName("getIsDefinition") + get() = _builder.isDefinition + @kotlin.jvm.JvmName("setIsDefinition") + set(value) { + _builder.isDefinition = value + } + /** + * ``` + * Allows overriding the behavior of "Go to definition" and "Find references" + * for symbols which do not have a definition of their own or could + * potentially have multiple definitions. + * + * For example, in a language with single inheritance and no field overriding, + * inherited fields can reuse the same symbol as the ancestor which declares + * the field. In such a situation, is_definition is not needed. + * + * On the other hand, in languages with single inheritance and some form + * of mixins, you can use is_definition to relate the symbol to the + * matching symbol in ancestor classes, and is_reference to relate the + * symbol to the matching symbol in mixins. + * ``` + * + * `bool is_definition = 5 [json_name = "isDefinition"];` + */ + public fun clearIsDefinition() { + _builder.clearIsDefinition() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Relationship.copy(block: `org.scip_code.scip`.RelationshipKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Relationship = + `org.scip_code.scip`.RelationshipKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/ScipProtoKt.proto.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/ScipProtoKt.proto.kt new file mode 100644 index 00000000..7d14b337 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/ScipProtoKt.proto.kt @@ -0,0 +1,8 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SignatureKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SignatureKt.kt new file mode 100644 index 00000000..83f0da45 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SignatureKt.kt @@ -0,0 +1,205 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializesignature") +public inline fun signature(block: org.scip_code.scip.SignatureKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Signature = + org.scip_code.scip.SignatureKt.Dsl._create(org.scip_code.scip.Signature.newBuilder()).apply { block() }._build() +/** + * ``` + * Signature represents the signature of a symbol as it's displayed in API + * documentation or hover tooltips. It uses a subset of Document's fields with + * the same field numbers for wire compatibility with older indexes that encoded + * signatures using the Document message type. + * ``` + * + * Protobuf type `scip.Signature` + */ +public object SignatureKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Signature.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Signature.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Signature = _builder.build() + + /** + * ``` + * The language of the signature, e.g. "java", "go", "python". + * ``` + * + * `string language = 4 [json_name = "language"];` + */ + public var language: kotlin.String + @kotlin.jvm.JvmName("getLanguage") + get() = _builder.language + @kotlin.jvm.JvmName("setLanguage") + set(value) { + _builder.language = value + } + /** + * ``` + * The language of the signature, e.g. "java", "go", "python". + * ``` + * + * `string language = 4 [json_name = "language"];` + */ + public fun clearLanguage() { + _builder.clearLanguage() + } + + /** + * ``` + * The text content of the signature, e.g. "void add(int a, int b)". + * ``` + * + * `string text = 5 [json_name = "text"];` + */ + public var text: kotlin.String + @kotlin.jvm.JvmName("getText") + get() = _builder.text + @kotlin.jvm.JvmName("setText") + set(value) { + _builder.text = value + } + /** + * ``` + * The text content of the signature, e.g. "void add(int a, int b)". + * ``` + * + * `string text = 5 [json_name = "text"];` + */ + public fun clearText() { + _builder.clearText() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class OccurrencesProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * (optional) Occurrences within the signature text that reference other + * symbols, enabling hyperlinking of types in the signature. Ranges are + * relative to the `text` field. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + */ + public val occurrences: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.occurrencesList + ) + /** + * ``` + * (optional) Occurrences within the signature text that reference other + * symbols, enabling hyperlinking of types in the signature. Ranges are + * relative to the `text` field. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param value The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addOccurrences") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.Occurrence) { + _builder.addOccurrences(value) + } + /** + * ``` + * (optional) Occurrences within the signature text that reference other + * symbols, enabling hyperlinking of types in the signature. Ranges are + * relative to the `text` field. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param value The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignOccurrences") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.Occurrence) { + add(value) + } + /** + * ``` + * (optional) Occurrences within the signature text that reference other + * symbols, enabling hyperlinking of types in the signature. Ranges are + * relative to the `text` field. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param values The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllOccurrences") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllOccurrences(values) + } + /** + * ``` + * (optional) Occurrences within the signature text that reference other + * symbols, enabling hyperlinking of types in the signature. Ranges are + * relative to the `text` field. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param values The occurrences to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllOccurrences") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * (optional) Occurrences within the signature text that reference other + * symbols, enabling hyperlinking of types in the signature. Ranges are + * relative to the `text` field. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + * @param index The index to set the value at. + * @param value The occurrences to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setOccurrences") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.Occurrence) { + _builder.setOccurrences(index, value) + } + /** + * ``` + * (optional) Occurrences within the signature text that reference other + * symbols, enabling hyperlinking of types in the signature. Ranges are + * relative to the `text` field. + * ``` + * + * `repeated .scip.Occurrence occurrences = 2 [json_name = "occurrences"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearOccurrences") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearOccurrences() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Signature.copy(block: `org.scip_code.scip`.SignatureKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Signature = + `org.scip_code.scip`.SignatureKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SymbolInformationKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SymbolInformationKt.kt new file mode 100644 index 00000000..681b0aca --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SymbolInformationKt.kt @@ -0,0 +1,490 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializesymbolInformation") +public inline fun symbolInformation(block: org.scip_code.scip.SymbolInformationKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.SymbolInformation = + org.scip_code.scip.SymbolInformationKt.Dsl._create(org.scip_code.scip.SymbolInformation.newBuilder()).apply { block() }._build() +/** + * ``` + * SymbolInformation defines metadata about a symbol, such as the symbol's + * docstring or what package it's defined it. + * ``` + * + * Protobuf type `scip.SymbolInformation` + */ +public object SymbolInformationKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.SymbolInformation.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.SymbolInformation.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.SymbolInformation = _builder.build() + + /** + * ``` + * Identifier of this symbol, which can be referenced from `Occurence.symbol`. + * The string must be formatted according to the grammar in `Symbol`. + * ``` + * + * `string symbol = 1 [json_name = "symbol"];` + */ + public var symbol: kotlin.String + @kotlin.jvm.JvmName("getSymbol") + get() = _builder.symbol + @kotlin.jvm.JvmName("setSymbol") + set(value) { + _builder.symbol = value + } + /** + * ``` + * Identifier of this symbol, which can be referenced from `Occurence.symbol`. + * The string must be formatted according to the grammar in `Symbol`. + * ``` + * + * `string symbol = 1 [json_name = "symbol"];` + */ + public fun clearSymbol() { + _builder.clearSymbol() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class DocumentationProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * (optional, but strongly recommended) The markdown-formatted documentation + * for this symbol. Use `SymbolInformation.signature_documentation` to + * document the method/class/type signature of this symbol. + * Due to historical reasons, indexers may include signature documentation in + * this field by rendering markdown code blocks. New indexers should only + * include non-code documentation in this field, for example docstrings. + * ``` + * + * `repeated string documentation = 3 [json_name = "documentation"];` + * @return A list containing the documentation. + */ + public val documentation: com.google.protobuf.kotlin.DslList + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + get() = com.google.protobuf.kotlin.DslList( + _builder.documentationList + ) + /** + * ``` + * (optional, but strongly recommended) The markdown-formatted documentation + * for this symbol. Use `SymbolInformation.signature_documentation` to + * document the method/class/type signature of this symbol. + * Due to historical reasons, indexers may include signature documentation in + * this field by rendering markdown code blocks. New indexers should only + * include non-code documentation in this field, for example docstrings. + * ``` + * + * `repeated string documentation = 3 [json_name = "documentation"];` + * @param value The documentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addDocumentation") + public fun com.google.protobuf.kotlin.DslList.add(value: kotlin.String) { + _builder.addDocumentation(value) + } + /** + * ``` + * (optional, but strongly recommended) The markdown-formatted documentation + * for this symbol. Use `SymbolInformation.signature_documentation` to + * document the method/class/type signature of this symbol. + * Due to historical reasons, indexers may include signature documentation in + * this field by rendering markdown code blocks. New indexers should only + * include non-code documentation in this field, for example docstrings. + * ``` + * + * `repeated string documentation = 3 [json_name = "documentation"];` + * @param value The documentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignDocumentation") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: kotlin.String) { + add(value) + } + /** + * ``` + * (optional, but strongly recommended) The markdown-formatted documentation + * for this symbol. Use `SymbolInformation.signature_documentation` to + * document the method/class/type signature of this symbol. + * Due to historical reasons, indexers may include signature documentation in + * this field by rendering markdown code blocks. New indexers should only + * include non-code documentation in this field, for example docstrings. + * ``` + * + * `repeated string documentation = 3 [json_name = "documentation"];` + * @param values The documentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllDocumentation") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllDocumentation(values) + } + /** + * ``` + * (optional, but strongly recommended) The markdown-formatted documentation + * for this symbol. Use `SymbolInformation.signature_documentation` to + * document the method/class/type signature of this symbol. + * Due to historical reasons, indexers may include signature documentation in + * this field by rendering markdown code blocks. New indexers should only + * include non-code documentation in this field, for example docstrings. + * ``` + * + * `repeated string documentation = 3 [json_name = "documentation"];` + * @param values The documentation to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllDocumentation") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * (optional, but strongly recommended) The markdown-formatted documentation + * for this symbol. Use `SymbolInformation.signature_documentation` to + * document the method/class/type signature of this symbol. + * Due to historical reasons, indexers may include signature documentation in + * this field by rendering markdown code blocks. New indexers should only + * include non-code documentation in this field, for example docstrings. + * ``` + * + * `repeated string documentation = 3 [json_name = "documentation"];` + * @param index The index to set the value at. + * @param value The documentation to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setDocumentation") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: kotlin.String) { + _builder.setDocumentation(index, value) + }/** + * ``` + * (optional, but strongly recommended) The markdown-formatted documentation + * for this symbol. Use `SymbolInformation.signature_documentation` to + * document the method/class/type signature of this symbol. + * Due to historical reasons, indexers may include signature documentation in + * this field by rendering markdown code blocks. New indexers should only + * include non-code documentation in this field, for example docstrings. + * ``` + * + * `repeated string documentation = 3 [json_name = "documentation"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setDocumentation") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearDocumentation() + } + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class RelationshipsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * (optional) Relationships to other symbols (e.g., implements, type definition). + * ``` + * + * `repeated .scip.Relationship relationships = 4 [json_name = "relationships"];` + */ + public val relationships: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.relationshipsList + ) + /** + * ``` + * (optional) Relationships to other symbols (e.g., implements, type definition). + * ``` + * + * `repeated .scip.Relationship relationships = 4 [json_name = "relationships"];` + * @param value The relationships to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addRelationships") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.Relationship) { + _builder.addRelationships(value) + } + /** + * ``` + * (optional) Relationships to other symbols (e.g., implements, type definition). + * ``` + * + * `repeated .scip.Relationship relationships = 4 [json_name = "relationships"];` + * @param value The relationships to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignRelationships") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.Relationship) { + add(value) + } + /** + * ``` + * (optional) Relationships to other symbols (e.g., implements, type definition). + * ``` + * + * `repeated .scip.Relationship relationships = 4 [json_name = "relationships"];` + * @param values The relationships to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllRelationships") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllRelationships(values) + } + /** + * ``` + * (optional) Relationships to other symbols (e.g., implements, type definition). + * ``` + * + * `repeated .scip.Relationship relationships = 4 [json_name = "relationships"];` + * @param values The relationships to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllRelationships") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * (optional) Relationships to other symbols (e.g., implements, type definition). + * ``` + * + * `repeated .scip.Relationship relationships = 4 [json_name = "relationships"];` + * @param index The index to set the value at. + * @param value The relationships to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setRelationships") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.Relationship) { + _builder.setRelationships(index, value) + } + /** + * ``` + * (optional) Relationships to other symbols (e.g., implements, type definition). + * ``` + * + * `repeated .scip.Relationship relationships = 4 [json_name = "relationships"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearRelationships") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearRelationships() + } + + /** + * ``` + * The kind of this symbol. Use this field instead of + * `SymbolDescriptor.Suffix` to determine whether something is, for example, a + * class or a method. + * ``` + * + * `.scip.SymbolInformation.Kind kind = 5 [json_name = "kind"];` + */ + public var kind: org.scip_code.scip.SymbolInformation.Kind + @kotlin.jvm.JvmName("getKind") + get() = _builder.kind + @kotlin.jvm.JvmName("setKind") + set(value) { + _builder.kind = value + } + public var kindValue: kotlin.Int + @kotlin.jvm.JvmName("getKindValue") + get() = _builder.kindValue + @kotlin.jvm.JvmName("setKindValue") + set(value) { + _builder.kindValue = value + } + /** + * ``` + * The kind of this symbol. Use this field instead of + * `SymbolDescriptor.Suffix` to determine whether something is, for example, a + * class or a method. + * ``` + * + * `.scip.SymbolInformation.Kind kind = 5 [json_name = "kind"];` + */ + public fun clearKind() { + _builder.clearKind() + } + + /** + * ``` + * (optional) The name of this symbol as it should be displayed to the user. + * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the + * display name "myMethod". The `symbol` field is not a reliable source of + * the display name for several reasons: + * + * - Local symbols don't encode the name. + * - Some languages have case-insensitive names, so the symbol is all-lowercase. + * - The symbol may encode names with special characters that should not be + * displayed to the user. + * ``` + * + * `string display_name = 6 [json_name = "displayName"];` + */ + public var displayName: kotlin.String + @kotlin.jvm.JvmName("getDisplayName") + get() = _builder.displayName + @kotlin.jvm.JvmName("setDisplayName") + set(value) { + _builder.displayName = value + } + /** + * ``` + * (optional) The name of this symbol as it should be displayed to the user. + * For example, the symbol "com/example/MyClass#myMethod(+1)." should have the + * display name "myMethod". The `symbol` field is not a reliable source of + * the display name for several reasons: + * + * - Local symbols don't encode the name. + * - Some languages have case-insensitive names, so the symbol is all-lowercase. + * - The symbol may encode names with special characters that should not be + * displayed to the user. + * ``` + * + * `string display_name = 6 [json_name = "displayName"];` + */ + public fun clearDisplayName() { + _builder.clearDisplayName() + } + + /** + * ``` + * (optional) The signature of this symbol as it's displayed in API + * documentation or in hover tooltips. For example, a Java method that adds + * two numbers would have `Signature.language = "java"` and + * `Signature.text = "void add(int a, int b)"`. The `language` and `text` + * fields are required while `occurrences` can be optionally included to + * support hyperlinking referenced symbols in the signature. + * ``` + * + * `.scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"];` + */ + public var signatureDocumentation: org.scip_code.scip.Signature + @kotlin.jvm.JvmName("getSignatureDocumentation") + get() = _builder.signatureDocumentation + @kotlin.jvm.JvmName("setSignatureDocumentation") + set(value) { + _builder.signatureDocumentation = value + } + /** + * ``` + * (optional) The signature of this symbol as it's displayed in API + * documentation or in hover tooltips. For example, a Java method that adds + * two numbers would have `Signature.language = "java"` and + * `Signature.text = "void add(int a, int b)"`. The `language` and `text` + * fields are required while `occurrences` can be optionally included to + * support hyperlinking referenced symbols in the signature. + * ``` + * + * `.scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"];` + */ + public fun clearSignatureDocumentation() { + _builder.clearSignatureDocumentation() + } + /** + * ``` + * (optional) The signature of this symbol as it's displayed in API + * documentation or in hover tooltips. For example, a Java method that adds + * two numbers would have `Signature.language = "java"` and + * `Signature.text = "void add(int a, int b)"`. The `language` and `text` + * fields are required while `occurrences` can be optionally included to + * support hyperlinking referenced symbols in the signature. + * ``` + * + * `.scip.Signature signature_documentation = 7 [json_name = "signatureDocumentation"];` + * @return Whether the signatureDocumentation field is set. + */ + public fun hasSignatureDocumentation(): kotlin.Boolean { + return _builder.hasSignatureDocumentation() + } + + public val SymbolInformationKt.Dsl.signatureDocumentationOrNull: org.scip_code.scip.Signature? + get() = _builder.signatureDocumentationOrNull + + /** + * ``` + * (optional) The enclosing symbol if this is a local symbol. For non-local + * symbols, the enclosing symbol should be parsed from the `symbol` field + * using the `Descriptor` grammar. + * + * The primary use-case for this field is to allow local symbol to be displayed + * in a symbol hierarchy for API documentation. It's OK to leave this field + * empty for local variables since local variables usually don't belong in API + * documentation. However, in the situation that you wish to include a local + * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the + * "parent" or "owner" of this local symbol. For example, a Java indexer may + * choose to use local symbols for private class fields while providing an + * `enclosing_symbol` to reference the enclosing class to allow the field to + * be part of the class documentation hierarchy. From the perspective of an + * author of an indexer, the decision to use a local symbol or global symbol + * should exclusively be determined whether the local symbol is accessible + * outside the document, not by the capability to find the enclosing + * symbol. + * ``` + * + * `string enclosing_symbol = 8 [json_name = "enclosingSymbol"];` + */ + public var enclosingSymbol: kotlin.String + @kotlin.jvm.JvmName("getEnclosingSymbol") + get() = _builder.enclosingSymbol + @kotlin.jvm.JvmName("setEnclosingSymbol") + set(value) { + _builder.enclosingSymbol = value + } + /** + * ``` + * (optional) The enclosing symbol if this is a local symbol. For non-local + * symbols, the enclosing symbol should be parsed from the `symbol` field + * using the `Descriptor` grammar. + * + * The primary use-case for this field is to allow local symbol to be displayed + * in a symbol hierarchy for API documentation. It's OK to leave this field + * empty for local variables since local variables usually don't belong in API + * documentation. However, in the situation that you wish to include a local + * symbol in the hierarchy, then you can use `enclosing_symbol` to locate the + * "parent" or "owner" of this local symbol. For example, a Java indexer may + * choose to use local symbols for private class fields while providing an + * `enclosing_symbol` to reference the enclosing class to allow the field to + * be part of the class documentation hierarchy. From the perspective of an + * author of an indexer, the decision to use a local symbol or global symbol + * should exclusively be determined whether the local symbol is accessible + * outside the document, not by the capability to find the enclosing + * symbol. + * ``` + * + * `string enclosing_symbol = 8 [json_name = "enclosingSymbol"];` + */ + public fun clearEnclosingSymbol() { + _builder.clearEnclosingSymbol() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.SymbolInformation.copy(block: `org.scip_code.scip`.SymbolInformationKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.SymbolInformation = + `org.scip_code.scip`.SymbolInformationKt.Dsl._create(this.toBuilder()).apply { block() }._build() + +public val org.scip_code.scip.SymbolInformationOrBuilder.signatureDocumentationOrNull: org.scip_code.scip.Signature? + get() = if (hasSignatureDocumentation()) getSignatureDocumentation() else null + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SymbolKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SymbolKt.kt new file mode 100644 index 00000000..6d56d375 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/SymbolKt.kt @@ -0,0 +1,198 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializesymbol") +public inline fun symbol(block: org.scip_code.scip.SymbolKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Symbol = + org.scip_code.scip.SymbolKt.Dsl._create(org.scip_code.scip.Symbol.newBuilder()).apply { block() }._build() +/** + * ``` + * Symbol is similar to a URI, it identifies a class, method, or a local + * variable. `SymbolInformation` contains rich metadata about symbols such as + * the docstring. + * + * Symbol has a standardized string representation, which can be used + * interchangeably with `Symbol`. The syntax for Symbol is the following: + * ``` + * # ()+ stands for one or more repetitions of + * # ()? stands for zero or one occurrence of + * ::= ' ' ' ' ()+ | 'local ' + * ::= ' ' ' ' + * ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local' + * ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value + * ::= same as above + * ::= same as above + * ::= | | | | | | | + * ::= '/' + * ::= '#' + * ::= '.' + * ::= ':' + * ::= '!' + * ::= '(' ()? ').' + * ::= '[' ']' + * ::= '(' ')' + * ::= + * ::= + * ::= | + * ::= ()+ + * ::= '_' | '+' | '-' | '$' | ASCII letter or digit + * ::= '`' ()+ '`', must contain at least one non- + * ::= any UTF-8, escape backticks with double backtick. + * ::= + * ``` + * + * The list of descriptors for a symbol should together form a fully + * qualified name for the symbol. That is, it should serve as a unique + * identifier across the package. Typically, it will include one descriptor + * for every node in the AST (along the ancestry path) between the root of + * the file and the node corresponding to the symbol. + * + * Local symbols MUST only be used for entities which are local to a Document, + * and cannot be accessed from outside the Document. + * ``` + * + * Protobuf type `scip.Symbol` + */ +public object SymbolKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.Symbol.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.Symbol.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.Symbol = _builder.build() + + /** + * `string scheme = 1 [json_name = "scheme"];` + */ + public var scheme: kotlin.String + @kotlin.jvm.JvmName("getScheme") + get() = _builder.scheme + @kotlin.jvm.JvmName("setScheme") + set(value) { + _builder.scheme = value + } + /** + * `string scheme = 1 [json_name = "scheme"];` + */ + public fun clearScheme() { + _builder.clearScheme() + } + + /** + * `.scip.Package package = 2 [json_name = "package"];` + */ + public var package_: org.scip_code.scip.Package + @kotlin.jvm.JvmName("getPackage_") + get() = _builder.`package` + @kotlin.jvm.JvmName("setPackage_") + set(value) { + _builder.`package` = value + } + /** + * `.scip.Package package = 2 [json_name = "package"];` + */ + public fun clearPackage_() { + _builder.clearPackage() + } + /** + * `.scip.Package package = 2 [json_name = "package"];` + * @return Whether the package field is set. + */ + public fun hasPackage_(): kotlin.Boolean { + return _builder.hasPackage() + } + + public val SymbolKt.Dsl.packageOrNull: org.scip_code.scip.Package? + get() = _builder.packageOrNull + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class DescriptorsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * `repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"];` + */ + public val descriptors: com.google.protobuf.kotlin.DslList + @kotlin.jvm.JvmSynthetic + get() = com.google.protobuf.kotlin.DslList( + _builder.descriptorsList + ) + /** + * `repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"];` + * @param value The descriptors to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addDescriptors") + public fun com.google.protobuf.kotlin.DslList.add(value: org.scip_code.scip.Descriptor) { + _builder.addDescriptors(value) + } + /** + * `repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"];` + * @param value The descriptors to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignDescriptors") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: org.scip_code.scip.Descriptor) { + add(value) + } + /** + * `repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"];` + * @param values The descriptors to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllDescriptors") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllDescriptors(values) + } + /** + * `repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"];` + * @param values The descriptors to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllDescriptors") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * `repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"];` + * @param index The index to set the value at. + * @param value The descriptors to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setDescriptors") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: org.scip_code.scip.Descriptor) { + _builder.setDescriptors(index, value) + } + /** + * `repeated .scip.Descriptor descriptors = 3 [json_name = "descriptors"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("clearDescriptors") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearDescriptors() + } + } +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.Symbol.copy(block: `org.scip_code.scip`.SymbolKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.Symbol = + `org.scip_code.scip`.SymbolKt.Dsl._create(this.toBuilder()).apply { block() }._build() + +public val org.scip_code.scip.SymbolOrBuilder.packageOrNull: org.scip_code.scip.Package? + get() = if (hasPackage()) getPackage() else null + diff --git a/bindings/kotlin/src/main/kotlin/org/scip_code/scip/ToolInfoKt.kt b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/ToolInfoKt.kt new file mode 100644 index 00000000..148a1c90 --- /dev/null +++ b/bindings/kotlin/src/main/kotlin/org/scip_code/scip/ToolInfoKt.kt @@ -0,0 +1,183 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// NO CHECKED-IN PROTOBUF GENCODE +// source: scip.proto + +// Generated files should ignore deprecation warnings +@file:Suppress("DEPRECATION") +package org.scip_code.scip; + +@kotlin.jvm.JvmName("-initializetoolInfo") +public inline fun toolInfo(block: org.scip_code.scip.ToolInfoKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.ToolInfo = + org.scip_code.scip.ToolInfoKt.Dsl._create(org.scip_code.scip.ToolInfo.newBuilder()).apply { block() }._build() +/** + * Protobuf type `scip.ToolInfo` + */ +public object ToolInfoKt { + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + @com.google.protobuf.kotlin.ProtoDslMarker + public class Dsl private constructor( + private val _builder: org.scip_code.scip.ToolInfo.Builder + ) { + public companion object { + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _create(builder: org.scip_code.scip.ToolInfo.Builder): Dsl = Dsl(builder) + } + + @kotlin.jvm.JvmSynthetic + @kotlin.PublishedApi + internal fun _build(): org.scip_code.scip.ToolInfo = _builder.build() + + /** + * ``` + * Name of the indexer that produced this index. + * ``` + * + * `string name = 1 [json_name = "name"];` + */ + public var name: kotlin.String + @kotlin.jvm.JvmName("getName") + get() = _builder.name + @kotlin.jvm.JvmName("setName") + set(value) { + _builder.name = value + } + /** + * ``` + * Name of the indexer that produced this index. + * ``` + * + * `string name = 1 [json_name = "name"];` + */ + public fun clearName() { + _builder.clearName() + } + + /** + * ``` + * Version of the indexer that produced this index. + * ``` + * + * `string version = 2 [json_name = "version"];` + */ + public var version: kotlin.String + @kotlin.jvm.JvmName("getVersion") + get() = _builder.version + @kotlin.jvm.JvmName("setVersion") + set(value) { + _builder.version = value + } + /** + * ``` + * Version of the indexer that produced this index. + * ``` + * + * `string version = 2 [json_name = "version"];` + */ + public fun clearVersion() { + _builder.clearVersion() + } + + /** + * An uninstantiable, behaviorless type to represent the field in + * generics. + */ + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + public class ArgumentsProxy private constructor() : com.google.protobuf.kotlin.DslProxy() + /** + * ``` + * Command-line arguments that were used to invoke this indexer. + * ``` + * + * `repeated string arguments = 3 [json_name = "arguments"];` + * @return A list containing the arguments. + */ + public val arguments: com.google.protobuf.kotlin.DslList + @kotlin.OptIn(com.google.protobuf.kotlin.OnlyForUseByGeneratedProtoCode::class) + get() = com.google.protobuf.kotlin.DslList( + _builder.argumentsList + ) + /** + * ``` + * Command-line arguments that were used to invoke this indexer. + * ``` + * + * `repeated string arguments = 3 [json_name = "arguments"];` + * @param value The arguments to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addArguments") + public fun com.google.protobuf.kotlin.DslList.add(value: kotlin.String) { + _builder.addArguments(value) + } + /** + * ``` + * Command-line arguments that were used to invoke this indexer. + * ``` + * + * `repeated string arguments = 3 [json_name = "arguments"];` + * @param value The arguments to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignArguments") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(value: kotlin.String) { + add(value) + } + /** + * ``` + * Command-line arguments that were used to invoke this indexer. + * ``` + * + * `repeated string arguments = 3 [json_name = "arguments"];` + * @param values The arguments to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("addAllArguments") + public fun com.google.protobuf.kotlin.DslList.addAll(values: kotlin.collections.Iterable) { + _builder.addAllArguments(values) + } + /** + * ``` + * Command-line arguments that were used to invoke this indexer. + * ``` + * + * `repeated string arguments = 3 [json_name = "arguments"];` + * @param values The arguments to add. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("plusAssignAllArguments") + @Suppress("NOTHING_TO_INLINE") + public inline operator fun com.google.protobuf.kotlin.DslList.plusAssign(values: kotlin.collections.Iterable) { + addAll(values) + } + /** + * ``` + * Command-line arguments that were used to invoke this indexer. + * ``` + * + * `repeated string arguments = 3 [json_name = "arguments"];` + * @param index The index to set the value at. + * @param value The arguments to set. + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setArguments") + public operator fun com.google.protobuf.kotlin.DslList.set(index: kotlin.Int, value: kotlin.String) { + _builder.setArguments(index, value) + }/** + * ``` + * Command-line arguments that were used to invoke this indexer. + * ``` + * + * `repeated string arguments = 3 [json_name = "arguments"];` + */ + @kotlin.jvm.JvmSynthetic +@kotlin.jvm.JvmName("setArguments") + public fun com.google.protobuf.kotlin.DslList.clear() { + _builder.clearArguments() + }} +} +@kotlin.jvm.JvmSynthetic +public inline fun org.scip_code.scip.ToolInfo.copy(block: `org.scip_code.scip`.ToolInfoKt.Dsl.() -> kotlin.Unit): org.scip_code.scip.ToolInfo = + `org.scip_code.scip`.ToolInfoKt.Dsl._create(this.toBuilder()).apply { block() }._build() + diff --git a/bindings/kotlin/src/main/proto/scip.proto b/bindings/kotlin/src/main/proto/scip.proto new file mode 100644 index 00000000..b7c33bfb --- /dev/null +++ b/bindings/kotlin/src/main/proto/scip.proto @@ -0,0 +1,903 @@ +// An index contains one or more pieces of information about a given piece of +// source code or software artifact. Complementary information can be merged +// together from multiple sources to provide a unified code intelligence +// experience. +// +// Programs producing a file of this format is an "indexer" and may operate +// somewhere on the spectrum between precision, such as indexes produced by +// compiler-backed indexers, and heurstics, such as indexes produced by local +// syntax-directed analysis for scope rules. + +syntax = "proto3"; + +package scip; + +option go_package = "github.com/scip-code/scip/bindings/go/scip/"; +option java_multiple_files = true; +// Avoid collision between the file-level outer class (which holds the file +// descriptor and registerAllExtensions) and messages also called "Scip*" +// once java_multiple_files emits each message as its own top-level class. +option java_outer_classname = "ScipProto"; +option java_package = "org.scip_code.scip"; + +// Index represents a complete SCIP index for a workspace this is rooted at a +// single directory. An Index message payload can have a large memory footprint +// and it's therefore recommended to emit and consume an Index payload one field +// value at a time. To permit streaming consumption of an Index payload, the +// `metadata` field must appear at the start of the stream and must only appear +// once in the stream. Other field values may appear in any order. +message Index { + // Metadata about this index. + Metadata metadata = 1; + // Documents that belong to this index. + repeated Document documents = 2; + // (optional) Symbols that are referenced from this index but are defined in + // an external package (a separate `Index` message). Leave this field empty + // if you assume the external package will get indexed separately. If the + // external package won't get indexed for some reason then you can use this + // field to provide hover documentation for those external symbols. + repeated SymbolInformation external_symbols = 3; + // IMPORTANT: When adding a new field to `Index` here, add a matching + // function in `IndexVisitor` and update `ParseStreaming`. +} + +message Metadata { + // Which version of this protocol was used to generate this index? + ProtocolVersion version = 1; + // Information about the tool that produced this index. + ToolInfo tool_info = 2; + // URI-encoded absolute path to the root directory of this index. All + // documents in this index must appear in a subdirectory of this root + // directory. + string project_root = 3; + // Text encoding of the source files on disk that are referenced from + // `Document.relative_path`. This value is unrelated to the `Document.text` + // field, which is a Protobuf string and hence must be UTF-8 encoded. + TextEncoding text_document_encoding = 4; +} + +enum ProtocolVersion { + UnspecifiedProtocolVersion = 0; +} + +enum TextEncoding { + UnspecifiedTextEncoding = 0; + UTF8 = 1; + UTF16 = 2; +} + +message ToolInfo { + // Name of the indexer that produced this index. + string name = 1; + // Version of the indexer that produced this index. + string version = 2; + // Command-line arguments that were used to invoke this indexer. + repeated string arguments = 3; +} + +// Document defines the metadata about a source file on disk. +message Document { + // The string ID for the programming language this file is written in. + // The `Language` enum contains the names of most common programming languages. + // This field is typed as a string to permit any programming language, including + // ones that are not specified by the `Language` enum. + string language = 4; + // (Required) Unique path to the text document. + // + // 1. The path must be relative to the directory supplied in the associated + // `Metadata.project_root`. + // 2. The path must not begin with a leading '/'. + // 3. The path must point to a regular file, not a symbolic link. + // 4. The path must use '/' as the separator, including on Windows. + // 5. The path must be canonical; it cannot include empty components ('//'), + // or '.' or '..'. + string relative_path = 1; + // Occurrences that appear in this file. + repeated Occurrence occurrences = 2; + // Symbols that are "defined" within this document. + // + // This should include symbols which technically do not have any definition, + // but have a reference and are defined by some other symbol (see + // Relationship.is_definition). + repeated SymbolInformation symbols = 3; + + // (optional) Text contents of this document. Indexers are not expected to + // include the text by default. It's preferable that clients read the text + // contents from the file system by resolving the absolute path from joining + // `Index.metadata.project_root` and `Document.relative_path`. This field + // can be useful for testing or when working with virtual/in-memory documents. + string text = 5; + + // Specifies the encoding used for source ranges in this Document. + // + // Usually, this will match the type used to index the string type + // in the indexer's implementation language in O(1) time. + // - For an indexer implemented in JVM/.NET language or JavaScript/TypeScript, + // use UTF16CodeUnitOffsetFromLineStart. + // - For an indexer implemented in Python, + // use UTF32CodeUnitOffsetFromLineStart. + // - For an indexer implemented in Go, Rust or C++, + // use UTF8ByteOffsetFromLineStart. + PositionEncoding position_encoding = 6; +} + +// Encoding used to interpret the 'character' value in source ranges. +enum PositionEncoding { + // Default value. This value should not be used by new SCIP indexers + // so that a consumer can process the SCIP index without ambiguity. + UnspecifiedPositionEncoding = 0; + // The 'character' value is interpreted as an offset in terms + // of UTF-8 code units (i.e. bytes). + // + // Example: For the string "🚀 Woo" in UTF-8, the bytes are + // [240, 159, 154, 128, 32, 87, 111, 111], so the offset for 'W' + // would be 5. + UTF8CodeUnitOffsetFromLineStart = 1; + // The 'character' value is interpreted as an offset in terms + // of UTF-16 code units (each is 2 bytes). + // + // Example: For the string "🚀 Woo", the UTF-16 code units are + // ['\ud83d', '\ude80', ' ', 'W', 'o', 'o'], so the offset for 'W' + // would be 3. + UTF16CodeUnitOffsetFromLineStart = 2; + // The 'character' value is interpreted as an offset in terms + // of UTF-32 code units (each is 4 bytes). + // + // Example: For the string "🚀 Woo", the UTF-32 code units are + // ['🚀', ' ', 'W', 'o', 'o'], so the offset for 'W' would be 2. + UTF32CodeUnitOffsetFromLineStart = 3; +} + +// Symbol is similar to a URI, it identifies a class, method, or a local +// variable. `SymbolInformation` contains rich metadata about symbols such as +// the docstring. +// +// Symbol has a standardized string representation, which can be used +// interchangeably with `Symbol`. The syntax for Symbol is the following: +// ``` +// # ()+ stands for one or more repetitions of +// # ()? stands for zero or one occurrence of +// ::= ' ' ' ' ()+ | 'local ' +// ::= ' ' ' ' +// ::= any UTF-8, escape spaces with double space. Must not be empty nor start with 'local' +// ::= any UTF-8, escape spaces with double space. Use the placeholder '.' to indicate an empty value +// ::= same as above +// ::= same as above +// ::= | | | | | | | +// ::= '/' +// ::= '#' +// ::= '.' +// ::= ':' +// ::= '!' +// ::= '(' ()? ').' +// ::= '[' ']' +// ::= '(' ')' +// ::= +// ::= +// ::= | +// ::= ()+ +// ::= '_' | '+' | '-' | '$' | ASCII letter or digit +// ::= '`' ()+ '`', must contain at least one non- +// ::= any UTF-8, escape backticks with double backtick. +// ::= +// ``` +// +// The list of descriptors for a symbol should together form a fully +// qualified name for the symbol. That is, it should serve as a unique +// identifier across the package. Typically, it will include one descriptor +// for every node in the AST (along the ancestry path) between the root of +// the file and the node corresponding to the symbol. +// +// Local symbols MUST only be used for entities which are local to a Document, +// and cannot be accessed from outside the Document. +message Symbol { + string scheme = 1; + Package package = 2; + repeated Descriptor descriptors = 3; +} + +// Unit of packaging and distribution. +// +// NOTE: This corresponds to a module in Go and JVM languages. +message Package { + string manager = 1; + string name = 2; + string version = 3; +} + +message Descriptor { + enum Suffix { + option allow_alias = true; + UnspecifiedSuffix = 0; + // Unit of code abstraction and/or namespacing. + // + // NOTE: This corresponds to a package in Go and JVM languages. + Namespace = 1; + // Use Namespace instead. + Package = 1 [deprecated = true]; + Type = 2; + Term = 3; + Method = 4; + TypeParameter = 5; + Parameter = 6; + // Can be used for any purpose. + Meta = 7; + Local = 8; + Macro = 9; + } + string name = 1; + string disambiguator = 2; + Suffix suffix = 3; + // NOTE: If you add new fields here, make sure to update the prepareSlot() + // function responsible for parsing symbols. +} + +// Signature represents the signature of a symbol as it's displayed in API +// documentation or hover tooltips. It uses a subset of Document's fields with +// the same field numbers for wire compatibility with older indexes that encoded +// signatures using the Document message type. +message Signature { + // The language of the signature, e.g. "java", "go", "python". + string language = 4; + // The text content of the signature, e.g. "void add(int a, int b)". + string text = 5; + // (optional) Occurrences within the signature text that reference other + // symbols, enabling hyperlinking of types in the signature. Ranges are + // relative to the `text` field. + repeated Occurrence occurrences = 2; + + // Reserved field numbers from the Document message to prevent accidental + // reuse, which would break wire compatibility with older indexes. + reserved 1, 3, 6; +} + +// SymbolInformation defines metadata about a symbol, such as the symbol's +// docstring or what package it's defined it. +message SymbolInformation { + // Identifier of this symbol, which can be referenced from `Occurence.symbol`. + // The string must be formatted according to the grammar in `Symbol`. + string symbol = 1; + // (optional, but strongly recommended) The markdown-formatted documentation + // for this symbol. Use `SymbolInformation.signature_documentation` to + // document the method/class/type signature of this symbol. + // Due to historical reasons, indexers may include signature documentation in + // this field by rendering markdown code blocks. New indexers should only + // include non-code documentation in this field, for example docstrings. + repeated string documentation = 3; + // (optional) Relationships to other symbols (e.g., implements, type definition). + repeated Relationship relationships = 4; + // The kind of this symbol. Use this field instead of + // `SymbolDescriptor.Suffix` to determine whether something is, for example, a + // class or a method. + Kind kind = 5; + // (optional) Kind represents the fine-grained category of a symbol, suitable for presenting + // information about the symbol's meaning in the language. + // + // For example: + // - A Java method would have the kind `Method` while a Go function would + // have the kind `Function`, even if the symbols for these use the same + // syntax for the descriptor `SymbolDescriptor.Suffix.Method`. + // - A Go struct has the symbol kind `Struct` while a Java class has + // the symbol kind `Class` even if they both have the same descriptor: + // `SymbolDescriptor.Suffix.Type`. + // + // Since Kind is more fine-grained than Suffix: + // - If two symbols have the same Kind, they should share the same Suffix. + // - If two symbols have different Suffixes, they should have different Kinds. + enum Kind { + UnspecifiedKind = 0; + // A method which may or may not have a body. For Java, Kotlin etc. + AbstractMethod = 66; + // For Ruby's attr_accessor + Accessor = 72; + Array = 1; + // For Alloy + Assertion = 2; + AssociatedType = 3; + // For C++ + Attribute = 4; + // For Lean + Axiom = 5; + Boolean = 6; + Class = 7; + // For C++ + Concept = 86; + Constant = 8; + Constructor = 9; + // For Solidity + Contract = 62; + // For Haskell + DataFamily = 10; + // For C# and F# + Delegate = 73; + Enum = 11; + EnumMember = 12; + Error = 63; + Event = 13; + // For Dart + Extension = 84; + // For Alloy + Fact = 14; + Field = 15; + File = 16; + Function = 17; + // For 'get' in Swift, 'attr_reader' in Ruby + Getter = 18; + // For Raku + Grammar = 19; + // For Purescript and Lean + Instance = 20; + Interface = 21; + Key = 22; + // For Racket + Lang = 23; + // For Lean + Lemma = 24; + // For solidity + Library = 64; + Macro = 25; + Method = 26; + // For Ruby + MethodAlias = 74; + // Analogous to 'ThisParameter' and 'SelfParameter', but for languages + // like Go where the receiver doesn't have a conventional name. + MethodReceiver = 27; + // Analogous to 'AbstractMethod', for Go. + MethodSpecification = 67; + // For Protobuf + Message = 28; + // For Dart + Mixin = 85; + // For Solidity + Modifier = 65; + Module = 29; + Namespace = 30; + Null = 31; + Number = 32; + Object = 33; + Operator = 34; + Package = 35; + PackageObject = 36; + Parameter = 37; + ParameterLabel = 38; + // For Haskell's PatternSynonyms + Pattern = 39; + // For Alloy + Predicate = 40; + Property = 41; + // Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C + Protocol = 42; + // Analogous to 'AbstractMethod', for Swift and Objective-C. + ProtocolMethod = 68; + // Analogous to 'AbstractMethod', for C++. + PureVirtualMethod = 69; + // For Haskell + Quasiquoter = 43; + // 'self' in Python, Rust, Swift etc. + SelfParameter = 44; + // For 'set' in Swift, 'attr_writer' in Ruby + Setter = 45; + // For Alloy, analogous to 'Struct'. + Signature = 46; + // For Ruby + SingletonClass = 75; + // Analogous to 'StaticMethod', for Ruby. + SingletonMethod = 76; + // Analogous to 'StaticField', for C++ + StaticDataMember = 77; + // For C# + StaticEvent = 78; + // For C# + StaticField = 79; + // For Java, C#, C++ etc. + StaticMethod = 80; + // For C#, TypeScript etc. + StaticProperty = 81; + // For C, C++ + StaticVariable = 82; + String = 48; + Struct = 49; + // For Swift + Subscript = 47; + // For Lean + Tactic = 50; + // For Lean + Theorem = 51; + // Method receiver for languages + // 'this' in JavaScript, C++, Java etc. + ThisParameter = 52; + // Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc. + Trait = 53; + // Analogous to 'AbstractMethod', for Rust, Scala etc. + TraitMethod = 70; + // Data type definition for languages like OCaml which use `type` + // rather than separate keywords like `struct` and `enum`. + Type = 54; + TypeAlias = 55; + // Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc. + TypeClass = 56; + // Analogous to 'AbstractMethod', for Haskell, Purescript etc. + TypeClassMethod = 71; + // For Haskell + TypeFamily = 57; + TypeParameter = 58; + // For C, C++, Capn Proto + Union = 59; + Value = 60; + Variable = 61; + // Next = 87; + // Feel free to open a PR proposing new language-specific kinds. + } + // (optional) The name of this symbol as it should be displayed to the user. + // For example, the symbol "com/example/MyClass#myMethod(+1)." should have the + // display name "myMethod". The `symbol` field is not a reliable source of + // the display name for several reasons: + // + // - Local symbols don't encode the name. + // - Some languages have case-insensitive names, so the symbol is all-lowercase. + // - The symbol may encode names with special characters that should not be + // displayed to the user. + string display_name = 6; + // (optional) The signature of this symbol as it's displayed in API + // documentation or in hover tooltips. For example, a Java method that adds + // two numbers would have `Signature.language = "java"` and + // `Signature.text = "void add(int a, int b)"`. The `language` and `text` + // fields are required while `occurrences` can be optionally included to + // support hyperlinking referenced symbols in the signature. + Signature signature_documentation = 7; + // (optional) The enclosing symbol if this is a local symbol. For non-local + // symbols, the enclosing symbol should be parsed from the `symbol` field + // using the `Descriptor` grammar. + // + // The primary use-case for this field is to allow local symbol to be displayed + // in a symbol hierarchy for API documentation. It's OK to leave this field + // empty for local variables since local variables usually don't belong in API + // documentation. However, in the situation that you wish to include a local + // symbol in the hierarchy, then you can use `enclosing_symbol` to locate the + // "parent" or "owner" of this local symbol. For example, a Java indexer may + // choose to use local symbols for private class fields while providing an + // `enclosing_symbol` to reference the enclosing class to allow the field to + // be part of the class documentation hierarchy. From the perspective of an + // author of an indexer, the decision to use a local symbol or global symbol + // should exclusively be determined whether the local symbol is accessible + // outside the document, not by the capability to find the enclosing + // symbol. + string enclosing_symbol = 8; +} + +message Relationship { + string symbol = 1; + // When resolving "Find references", this field documents what other symbols + // should be included together with this symbol. For example, consider the + // following TypeScript code that defines two symbols `Animal#sound()` and + // `Dog#sound()`: + // ```ts + // interface Animal { + // ^^^^^^ definition Animal# + // sound(): string + // ^^^^^ definition Animal#sound() + // } + // class Dog implements Animal { + // ^^^ definition Dog#, relationships = [{symbol: "Animal#", is_implementation: true}] + // public sound(): string { return "woof" } + // ^^^^^ definition Dog#sound(), references_symbols = Animal#sound(), relationships = [{symbol: "Animal#sound()", is_implementation:true, is_reference: true}] + // } + // const animal: Animal = new Dog() + // ^^^^^^ reference Animal# + // console.log(animal.sound()) + // ^^^^^ reference Animal#sound() + // ``` + // Doing "Find references" on the symbol `Animal#sound()` should return + // references to the `Dog#sound()` method as well. Vice-versa, doing "Find + // references" on the `Dog#sound()` method should include references to the + // `Animal#sound()` method as well. + bool is_reference = 2; + // Similar to `is_reference` but for "Find implementations". + // It's common for `is_implementation` and `is_reference` to both be true but + // it's not always the case. + // In the TypeScript example above, observe that `Dog#` has an + // `is_implementation` relationship with `"Animal#"` but not `is_reference`. + // This is because "Find references" on the "Animal#" symbol should not return + // "Dog#". We only want "Dog#" to return as a result for "Find + // implementations" on the "Animal#" symbol. + bool is_implementation = 3; + // Similar to `references_symbols` but for "Go to type definition". + bool is_type_definition = 4; + // Allows overriding the behavior of "Go to definition" and "Find references" + // for symbols which do not have a definition of their own or could + // potentially have multiple definitions. + // + // For example, in a language with single inheritance and no field overriding, + // inherited fields can reuse the same symbol as the ancestor which declares + // the field. In such a situation, is_definition is not needed. + // + // On the other hand, in languages with single inheritance and some form + // of mixins, you can use is_definition to relate the symbol to the + // matching symbol in ancestor classes, and is_reference to relate the + // symbol to the matching symbol in mixins. + bool is_definition = 5; + // Update registerInverseRelationships on adding a new field here. +} + +// SymbolRole declares what "role" a symbol has in an occurrence. A role is +// encoded as a bitset where each bit represents a different role. For example, +// to determine if the `Import` role is set, test whether the second bit of the +// enum value is defined. In pseudocode, this can be implemented with the +// logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`. +enum SymbolRole { + // This case is not meant to be used; it only exists to avoid an error + // from the Protobuf code generator. + UnspecifiedSymbolRole = 0; + // Is the symbol defined here? If not, then this is a symbol reference. + Definition = 0x1; + // Is the symbol imported here? + Import = 0x2; + // Is the symbol written here? + WriteAccess = 0x4; + // Is the symbol read here? + ReadAccess = 0x8; + // Is the symbol in generated code? + Generated = 0x10; + // Is the symbol in test code? + Test = 0x20; + // Is this a signature for a symbol that is defined elsewhere? + // + // Applies to forward declarations for languages like C, C++ + // and Objective-C, as well as `val` declarations in interface + // files in languages like SML and OCaml. + ForwardDefinition = 0x40; +} + +enum SyntaxKind { + option allow_alias = true; + + UnspecifiedSyntaxKind = 0; + + // Comment, including comment markers and text + Comment = 1; + + // `;` `.` `,` + PunctuationDelimiter = 2; + // (), {}, [] when used syntactically + PunctuationBracket = 3; + + // `if`, `else`, `return`, `class`, etc. + Keyword = 4; + IdentifierKeyword = 4 [deprecated = true]; + + // `+`, `*`, etc. + IdentifierOperator = 5; + + // non-specific catch-all for any identifier not better described elsewhere + Identifier = 6; + // Identifiers builtin to the language: `min`, `print` in Python. + IdentifierBuiltin = 7; + // Identifiers representing `null`-like values: `None` in Python, `nil` in Go. + IdentifierNull = 8; + // `xyz` in `const xyz = "hello"` + IdentifierConstant = 9; + // `var X = "hello"` in Go + IdentifierMutableGlobal = 10; + // Parameter definition and references + IdentifierParameter = 11; + // Identifiers for variable definitions and references within a local scope + IdentifierLocal = 12; + // Identifiers that shadow other identifiers in an outer scope + IdentifierShadowed = 13; + // Identifier representing a unit of code abstraction and/or namespacing. + // + // NOTE: This corresponds to a package in Go and JVM languages, + // and a module in languages like Python and JavaScript. + IdentifierNamespace = 14; + IdentifierModule = 14 [deprecated = true]; + + // Function references, including calls + IdentifierFunction = 15; + // Function definition only + IdentifierFunctionDefinition = 16; + + // Macro references, including invocations + IdentifierMacro = 17; + // Macro definition only + IdentifierMacroDefinition = 18; + + // non-builtin types + IdentifierType = 19; + // builtin types only, such as `str` for Python or `int` in Go + IdentifierBuiltinType = 20; + + // Python decorators, c-like __attribute__ + IdentifierAttribute = 21; + + // `\b` + RegexEscape = 22; + // `*`, `+` + RegexRepeated = 23; + // `.` + RegexWildcard = 24; + // `(`, `)`, `[`, `]` + RegexDelimiter = 25; + // `|`, `-` + RegexJoin = 26; + + // Literal strings: "Hello, world!" + StringLiteral = 27; + // non-regex escapes: "\t", "\n" + StringLiteralEscape = 28; + // datetimes within strings, special words within a string, `{}` in format strings + StringLiteralSpecial = 29; + // "key" in { "key": "value" }, useful for example in JSON + StringLiteralKey = 30; + // 'c' or similar, in languages that differentiate strings and characters + CharacterLiteral = 31; + // Literal numbers, both floats and integers + NumericLiteral = 32; + // `true`, `false` + BooleanLiteral = 33; + + // Used for XML-like tags + Tag = 34; + // Attribute name in XML-like tags + TagAttribute = 35; + // Delimiters for XML-like tags + TagDelimiter = 36; +} + +// Occurrence associates a source position with a symbol and/or highlighting +// information. +// +// If possible, indexers should try to bundle logically related information +// across occurrences into a single occurrence to reduce payload sizes. +message Occurrence { + // Half-open [start, end) range of this occurrence. Must be exactly three or four + // elements: + // + // - Four elements: `[startLine, startCharacter, endLine, endCharacter]` + // - Three elements: `[startLine, startCharacter, endCharacter]`. The end line + // is inferred to have the same value as the start line. + // + // It is allowed for the range to be empty (i.e. start==end). + // + // Line numbers and characters are always 0-based. Make sure to increment the + // line/character values before displaying them in an editor-like UI because + // editors conventionally use 1-based numbers. + // + // The 'character' value is interpreted based on the PositionEncoding for + // the Document. + // + // Historical note: the original draft of this schema had a `Range` message + // type with `start` and `end` fields of type `Position`, mirroring LSP. + // Benchmarks revealed that this encoding was inefficient and that we could + // reduce the total payload size of an index by 50% by using `repeated int32` + // instead. The `repeated int32` encoding is admittedly more embarrassing to + // work with in some programming languages but we hope the performance + // improvements make up for it. + repeated int32 range = 1; + // (optional) The symbol that appears at this position. See + // `SymbolInformation.symbol` for how to format symbols as strings. + string symbol = 2; + // (optional) Bitset containing `SymbolRole`s in this occurrence. + // See `SymbolRole`'s documentation for how to read and write this field. + int32 symbol_roles = 3; + // (optional) CommonMark-formatted documentation for this specific range. If + // empty, the `Symbol.documentation` field is used instead. One example + // where this field might be useful is when the symbol represents a generic + // function (with abstract type parameters such as `List`) and at this + // occurrence we know the exact values (such as `List`). + // + // This field can also be used for dynamically or gradually typed languages, + // which commonly allow for type-changing assignment. + repeated string override_documentation = 4; + // (optional) What syntax highlighting class should be used for this range? + SyntaxKind syntax_kind = 5; + // (optional) Diagnostics that have been reported for this specific range. + repeated Diagnostic diagnostics = 6; + // (optional) Using the same encoding as the sibling `range` field, half-open + // source range of the nearest non-trivial enclosing AST node. This range must + // enclose the `range` field. Example applications that make use of the + // enclosing_range field: + // + // - Call hierarchies: to determine what symbols are references from the body + // of a function + // - Symbol outline: to display breadcrumbs from the cursor position to the + // root of the file + // - Expand selection: to select the nearest enclosing AST node. + // - Highlight range: to indicate the AST expression that is associated with a + // hover popover + // + // For definition occurrences, the enclosing range should indicate the + // start/end bounds of the entire definition AST node, including + // documentation. + // ``` + // const n = 3 + // ^ range + // ^^^^^^^^^^^ enclosing_range + // + // /** Parses the string into something */ + // ^ enclosing_range start --------------------------------------| + // function parse(input string): string { | + // ^^^^^ range | + // return input.slice(n) | + // } | + // ^ enclosing_range end <---------------------------------------| + // ``` + // + // Any attributes/decorators/attached macros should also be part of the + // enclosing range. + // + // ```python + // @cache + // ^ enclosing_range start---------------------| + // def factorial(n): | + // return n * factorial(n-1) if n else 1 | + // < enclosing_range end-----------------------| + // + // ``` + // + // For reference occurrences, the enclosing range should indicate the start/end + // bounds of the parent expression. + // ``` + // const a = a.b + // ^ range + // ^^^ enclosing_range + // const b = a.b(41).f(42).g(43) + // ^ range + // ^^^^^^^^^^^^^ enclosing_range + // ``` + repeated int32 enclosing_range = 7; +} + +// Represents a diagnostic, such as a compiler error or warning, which should be +// reported for a document. +message Diagnostic { + // Should this diagnostic be reported as an error, warning, info, or hint? + Severity severity = 1; + // (optional) Code of this diagnostic, which might appear in the user interface. + string code = 2; + // Message of this diagnostic. + string message = 3; + // (optional) Human-readable string describing the source of this diagnostic, e.g. + // 'typescript' or 'super lint'. + string source = 4; + repeated DiagnosticTag tags = 5; +} + +enum Severity { + UnspecifiedSeverity = 0; + Error = 1; + Warning = 2; + Information = 3; + Hint = 4; +} + +enum DiagnosticTag { + UnspecifiedDiagnosticTag = 0; + Unnecessary = 1; + Deprecated = 2; +} + +// Language standardises names of common programming languages that can be used +// for the `Document.language` field. The primary purpose of this enum is to +// prevent a situation where we have a single programming language ends up with +// multiple string representations. For example, the C++ language uses the name +// "CPP" in this enum and other names such as "cpp" are incompatible. +// Feel free to send a pull-request to add missing programming languages. +enum Language { + UnspecifiedLanguage = 0; + ABAP = 60; + Apex = 96; + APL = 49; + Ada = 39; + Agda = 45; + AsciiDoc = 86; + Assembly = 58; + Awk = 66; + Bat = 68; + BibTeX = 81; + C = 34; + COBOL = 59; + CPP = 35; // C++ (the name "CPP" was chosen for consistency with LSP) + CSS = 26; + CSharp = 1; + Clojure = 8; + Coffeescript = 21; + CommonLisp = 9; + Coq = 47; + CUDA = 97; + Dart = 3; + Delphi = 57; + Diff = 88; + Dockerfile = 80; + Dyalog = 50; + Elixir = 17; + Erlang = 18; + FSharp = 42; + Fish = 65; + Flow = 24; + Fortran = 56; + Git_Commit = 91; + Git_Config = 89; + Git_Rebase = 92; + Go = 33; + GraphQL = 98; + Groovy = 7; + HTML = 30; + Hack = 20; + Handlebars = 90; + Haskell = 44; + Idris = 46; + Ini = 72; + J = 51; + JSON = 75; + Java = 6; + JavaScript = 22; + JavaScriptReact = 93; + Jsonnet = 76; + Julia = 55; + Justfile = 109; + Kotlin = 4; + LaTeX = 83; + Lean = 48; + Less = 27; + Lua = 12; + Luau = 108; + Makefile = 79; + Markdown = 84; + Matlab = 52; + Nickel = 110; // https://nickel-lang.org/ + Nix = 77; + OCaml = 41; + Objective_C = 36; + Objective_CPP = 37; + Pascal = 99; + PHP = 19; + PLSQL = 70; + Perl = 13; + PowerShell = 67; + Prolog = 71; + Protobuf = 100; + Python = 15; + R = 54; + Racket = 11; + Raku = 14; + Razor = 62; + Repro = 102; // Internal language for testing SCIP + ReST = 85; + Ruby = 16; + Rust = 40; + SAS = 61; + SCSS = 29; + SML = 43; + SQL = 69; + Sass = 28; + Scala = 5; + Scheme = 10; + ShellScript = 64; // Bash + Skylark = 78; + Slang = 107; + Solidity = 95; + Svelte = 106; + Swift = 2; + Tcl = 101; + TOML = 73; + TeX = 82; + Thrift = 103; + TypeScript = 23; + TypeScriptReact = 94; + Verilog = 104; + VHDL = 105; + VisualBasic = 63; + Vue = 25; + Wolfram = 53; + XML = 31; + XSL = 32; + YAML = 74; + Zig = 38; + // NextLanguage = 111; + // Steps add a new language: + // 1. Copy-paste the "NextLanguage = N" line above + // 2. Increment "NextLanguage = N" to "NextLanguage = N+1" + // 3. Replace "NextLanguage = N" with the name of the new language. + // 4. Move the new language to the correct line above using alphabetical order + // 5. (optional) Add a brief comment behind the language if the name is not self-explanatory +} diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 56fa13b8..b5569fac 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -4836,21 +4836,29 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ct\x10^\x12\x0b\n\x07Verilog\x10h\x12\x08\n\x04VHDL\x10i\x12\x0f\n\x0bVi\ sualBasic\x10?\x12\x07\n\x03Vue\x10\x19\x12\x0b\n\x07Wolfram\x105\x12\ \x07\n\x03XML\x10\x1f\x12\x07\n\x03XSL\x10\x20\x12\x08\n\x04YAML\x10J\ - \x12\x07\n\x03Zig\x10&B-Z+github.com/scip-code/scip/bindings/go/scip/J\ - \xe3\xbe\x02\n\x07\x12\x05\n\0\x80\x07\x01\n\x82\x04\n\x01\x0c\x12\x03\n\ - \0\x122\xf7\x03\x20An\x20index\x20contains\x20one\x20or\x20more\x20piece\ - s\x20of\x20information\x20about\x20a\x20given\x20piece\x20of\n\x20source\ - \x20code\x20or\x20software\x20artifact.\x20Complementary\x20information\ - \x20can\x20be\x20merged\n\x20together\x20from\x20multiple\x20sources\x20\ - to\x20provide\x20a\x20unified\x20code\x20intelligence\n\x20experience.\n\ - \n\x20Programs\x20producing\x20a\x20file\x20of\x20this\x20format\x20is\ - \x20an\x20\"indexer\"\x20and\x20may\x20operate\n\x20somewhere\x20on\x20t\ - he\x20spectrum\x20between\x20precision,\x20such\x20as\x20indexes\x20prod\ - uced\x20by\n\x20compiler-backed\x20indexers,\x20and\x20heurstics,\x20suc\ - h\x20as\x20indexes\x20produced\x20by\x20local\n\x20syntax-directed\x20an\ - alysis\x20for\x20scope\x20rules.\n\n\x08\n\x01\x02\x12\x03\x0c\0\r\n\x08\ - \n\x01\x08\x12\x03\x0e\0B\n\t\n\x02\x08\x0b\x12\x03\x0e\0B\n\xd0\x03\n\ - \x02\x04\0\x12\x04\x16\0#\x01\x1a\xc3\x03\x20Index\x20represents\x20a\ + \x12\x07\n\x03Zig\x10&BN\n\x12org.scip_code.scipB\tScipProtoP\x01Z+githu\ + b.com/scip-code/scip/bindings/go/scip/J\x81\xc1\x02\n\x07\x12\x05\n\0\ + \x86\x07\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\x122\xf7\x03\x20An\x20index\ + \x20contains\x20one\x20or\x20more\x20pieces\x20of\x20information\x20abou\ + t\x20a\x20given\x20piece\x20of\n\x20source\x20code\x20or\x20software\x20\ + artifact.\x20Complementary\x20information\x20can\x20be\x20merged\n\x20to\ + gether\x20from\x20multiple\x20sources\x20to\x20provide\x20a\x20unified\ + \x20code\x20intelligence\n\x20experience.\n\n\x20Programs\x20producing\ + \x20a\x20file\x20of\x20this\x20format\x20is\x20an\x20\"indexer\"\x20and\ + \x20may\x20operate\n\x20somewhere\x20on\x20the\x20spectrum\x20between\ + \x20precision,\x20such\x20as\x20indexes\x20produced\x20by\n\x20compiler-\ + backed\x20indexers,\x20and\x20heurstics,\x20such\x20as\x20indexes\x20pro\ + duced\x20by\x20local\n\x20syntax-directed\x20analysis\x20for\x20scope\ + \x20rules.\n\n\x08\n\x01\x02\x12\x03\x0c\0\r\n\x08\n\x01\x08\x12\x03\x0e\ + \0B\n\t\n\x02\x08\x0b\x12\x03\x0e\0B\n\x08\n\x01\x08\x12\x03\x0f\0\"\n\t\ + \n\x02\x08\n\x12\x03\x0f\0\"\n\x08\n\x01\x08\x12\x03\x13\0*\n\xe7\x01\n\ + \x02\x08\x08\x12\x03\x13\0*\x1a\xdb\x01\x20Avoid\x20collision\x20between\ + \x20the\x20file-level\x20outer\x20class\x20(which\x20holds\x20the\x20fil\ + e\n\x20descriptor\x20and\x20registerAllExtensions)\x20and\x20messages\ + \x20also\x20called\x20\"Scip*\"\n\x20once\x20java_multiple_files\x20emit\ + s\x20each\x20message\x20as\x20its\x20own\x20top-level\x20class.\n\n\x08\ + \n\x01\x08\x12\x03\x14\0+\n\t\n\x02\x08\x01\x12\x03\x14\0+\n\xd0\x03\n\ + \x02\x04\0\x12\x04\x1c\0)\x01\x1a\xc3\x03\x20Index\x20represents\x20a\ \x20complete\x20SCIP\x20index\x20for\x20a\x20workspace\x20this\x20is\x20\ rooted\x20at\x20a\n\x20single\x20directory.\x20An\x20Index\x20message\ \x20payload\x20can\x20have\x20a\x20large\x20memory\x20footprint\n\x20and\ @@ -4860,15 +4868,15 @@ static file_descriptor_proto_data: &'static [u8] = b"\ load,\x20the\n\x20`metadata`\x20field\x20must\x20appear\x20at\x20the\x20\ start\x20of\x20the\x20stream\x20and\x20must\x20only\x20appear\n\x20once\ \x20in\x20the\x20stream.\x20Other\x20field\x20values\x20may\x20appear\ - \x20in\x20any\x20order.\n\n\n\n\x03\x04\0\x01\x12\x03\x16\x08\r\n)\n\x04\ - \x04\0\x02\0\x12\x03\x18\x02\x18\x1a\x1c\x20Metadata\x20about\x20this\ - \x20index.\n\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03\x18\x02\n\n\x0c\n\x05\ - \x04\0\x02\0\x01\x12\x03\x18\x0b\x13\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\ - \x18\x16\x17\n3\n\x04\x04\0\x02\x01\x12\x03\x1a\x02\"\x1a&\x20Documents\ + \x20in\x20any\x20order.\n\n\n\n\x03\x04\0\x01\x12\x03\x1c\x08\r\n)\n\x04\ + \x04\0\x02\0\x12\x03\x1e\x02\x18\x1a\x1c\x20Metadata\x20about\x20this\ + \x20index.\n\n\x0c\n\x05\x04\0\x02\0\x06\x12\x03\x1e\x02\n\n\x0c\n\x05\ + \x04\0\x02\0\x01\x12\x03\x1e\x0b\x13\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\ + \x1e\x16\x17\n3\n\x04\x04\0\x02\x01\x12\x03\x20\x02\"\x1a&\x20Documents\ \x20that\x20belong\x20to\x20this\x20index.\n\n\x0c\n\x05\x04\0\x02\x01\ - \x04\x12\x03\x1a\x02\n\n\x0c\n\x05\x04\0\x02\x01\x06\x12\x03\x1a\x0b\x13\ - \n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x1a\x14\x1d\n\x0c\n\x05\x04\0\x02\ - \x01\x03\x12\x03\x1a\x20!\n\xf6\x03\n\x04\x04\0\x02\x02\x12\x03\x20\x022\ + \x04\x12\x03\x20\x02\n\n\x0c\n\x05\x04\0\x02\x01\x06\x12\x03\x20\x0b\x13\ + \n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x20\x14\x1d\n\x0c\n\x05\x04\0\x02\ + \x01\x03\x12\x03\x20\x20!\n\xf6\x03\n\x04\x04\0\x02\x02\x12\x03&\x022\ \x1a\xe9\x02\x20(optional)\x20Symbols\x20that\x20are\x20referenced\x20fr\ om\x20this\x20index\x20but\x20are\x20defined\x20in\n\x20an\x20external\ \x20package\x20(a\x20separate\x20`Index`\x20message).\x20Leave\x20this\ @@ -4879,1054 +4887,1054 @@ static file_descriptor_proto_data: &'static [u8] = b"\ cumentation\x20for\x20those\x20external\x20symbols.\n\"}\x20IMPORTANT:\ \x20When\x20adding\x20a\x20new\x20field\x20to\x20`Index`\x20here,\x20add\ \x20a\x20matching\n\x20function\x20in\x20`IndexVisitor`\x20and\x20update\ - \x20`ParseStreaming`.\n\n\x0c\n\x05\x04\0\x02\x02\x04\x12\x03\x20\x02\n\ - \n\x0c\n\x05\x04\0\x02\x02\x06\x12\x03\x20\x0b\x1c\n\x0c\n\x05\x04\0\x02\ - \x02\x01\x12\x03\x20\x1d-\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03\x2001\n\ - \n\n\x02\x04\x01\x12\x04%\02\x01\n\n\n\x03\x04\x01\x01\x12\x03%\x08\x10\ - \nN\n\x04\x04\x01\x02\0\x12\x03'\x02\x1e\x1aA\x20Which\x20version\x20of\ - \x20this\x20protocol\x20was\x20used\x20to\x20generate\x20this\x20index?\ - \n\n\x0c\n\x05\x04\x01\x02\0\x06\x12\x03'\x02\x11\n\x0c\n\x05\x04\x01\ - \x02\0\x01\x12\x03'\x12\x19\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03'\x1c\ - \x1d\nC\n\x04\x04\x01\x02\x01\x12\x03)\x02\x19\x1a6\x20Information\x20ab\ - out\x20the\x20tool\x20that\x20produced\x20this\x20index.\n\n\x0c\n\x05\ - \x04\x01\x02\x01\x06\x12\x03)\x02\n\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\ - \x03)\x0b\x14\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03)\x17\x18\n\xa2\x01\ - \n\x04\x04\x01\x02\x02\x12\x03-\x02\x1a\x1a\x94\x01\x20URI-encoded\x20ab\ - solute\x20path\x20to\x20the\x20root\x20directory\x20of\x20this\x20index.\ - \x20All\n\x20documents\x20in\x20this\x20index\x20must\x20appear\x20in\ - \x20a\x20subdirectory\x20of\x20this\x20root\n\x20directory.\n\n\x0c\n\ - \x05\x04\x01\x02\x02\x05\x12\x03-\x02\x08\n\x0c\n\x05\x04\x01\x02\x02\ - \x01\x12\x03-\t\x15\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\x03-\x18\x19\n\ - \xe0\x01\n\x04\x04\x01\x02\x03\x12\x031\x02*\x1a\xd2\x01\x20Text\x20enco\ - ding\x20of\x20the\x20source\x20files\x20on\x20disk\x20that\x20are\x20ref\ - erenced\x20from\n\x20`Document.relative_path`.\x20This\x20value\x20is\ - \x20unrelated\x20to\x20the\x20`Document.text`\n\x20field,\x20which\x20is\ - \x20a\x20Protobuf\x20string\x20and\x20hence\x20must\x20be\x20UTF-8\x20en\ - coded.\n\n\x0c\n\x05\x04\x01\x02\x03\x06\x12\x031\x02\x0e\n\x0c\n\x05\ - \x04\x01\x02\x03\x01\x12\x031\x0f%\n\x0c\n\x05\x04\x01\x02\x03\x03\x12\ - \x031()\n\n\n\x02\x05\0\x12\x044\06\x01\n\n\n\x03\x05\0\x01\x12\x034\x05\ - \x14\n\x0b\n\x04\x05\0\x02\0\x12\x035\x02!\n\x0c\n\x05\x05\0\x02\0\x01\ - \x12\x035\x02\x1c\n\x0c\n\x05\x05\0\x02\0\x02\x12\x035\x1f\x20\n\n\n\x02\ - \x05\x01\x12\x048\0<\x01\n\n\n\x03\x05\x01\x01\x12\x038\x05\x11\n\x0b\n\ - \x04\x05\x01\x02\0\x12\x039\x02\x1e\n\x0c\n\x05\x05\x01\x02\0\x01\x12\ - \x039\x02\x19\n\x0c\n\x05\x05\x01\x02\0\x02\x12\x039\x1c\x1d\n\x0b\n\x04\ - \x05\x01\x02\x01\x12\x03:\x02\x0b\n\x0c\n\x05\x05\x01\x02\x01\x01\x12\ - \x03:\x02\x06\n\x0c\n\x05\x05\x01\x02\x01\x02\x12\x03:\t\n\n\x0b\n\x04\ - \x05\x01\x02\x02\x12\x03;\x02\x0c\n\x0c\n\x05\x05\x01\x02\x02\x01\x12\ - \x03;\x02\x07\n\x0c\n\x05\x05\x01\x02\x02\x02\x12\x03;\n\x0b\n\n\n\x02\ - \x04\x02\x12\x04>\0E\x01\n\n\n\x03\x04\x02\x01\x12\x03>\x08\x10\n<\n\x04\ - \x04\x02\x02\0\x12\x03@\x02\x12\x1a/\x20Name\x20of\x20the\x20indexer\x20\ - that\x20produced\x20this\x20index.\n\n\x0c\n\x05\x04\x02\x02\0\x05\x12\ - \x03@\x02\x08\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03@\t\r\n\x0c\n\x05\x04\ - \x02\x02\0\x03\x12\x03@\x10\x11\n?\n\x04\x04\x02\x02\x01\x12\x03B\x02\ - \x15\x1a2\x20Version\x20of\x20the\x20indexer\x20that\x20produced\x20this\ - \x20index.\n\n\x0c\n\x05\x04\x02\x02\x01\x05\x12\x03B\x02\x08\n\x0c\n\ - \x05\x04\x02\x02\x01\x01\x12\x03B\t\x10\n\x0c\n\x05\x04\x02\x02\x01\x03\ - \x12\x03B\x13\x14\nL\n\x04\x04\x02\x02\x02\x12\x03D\x02\x20\x1a?\x20Comm\ - and-line\x20arguments\x20that\x20were\x20used\x20to\x20invoke\x20this\ - \x20indexer.\n\n\x0c\n\x05\x04\x02\x02\x02\x04\x12\x03D\x02\n\n\x0c\n\ - \x05\x04\x02\x02\x02\x05\x12\x03D\x0b\x11\n\x0c\n\x05\x04\x02\x02\x02\ - \x01\x12\x03D\x12\x1b\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03D\x1e\x1f\n\ - H\n\x02\x04\x03\x12\x04H\0s\x01\x1a<\x20Document\x20defines\x20the\x20me\ - tadata\x20about\x20a\x20source\x20file\x20on\x20disk.\n\n\n\n\x03\x04\ - \x03\x01\x12\x03H\x08\x10\n\xa5\x02\n\x04\x04\x03\x02\0\x12\x03M\x02\x16\ - \x1a\x97\x02\x20The\x20string\x20ID\x20for\x20the\x20programming\x20lang\ - uage\x20this\x20file\x20is\x20written\x20in.\n\x20The\x20`Language`\x20e\ - num\x20contains\x20the\x20names\x20of\x20most\x20common\x20programming\ - \x20languages.\n\x20This\x20field\x20is\x20typed\x20as\x20a\x20string\ - \x20to\x20permit\x20any\x20programming\x20language,\x20including\n\x20on\ - es\x20that\x20are\x20not\x20specified\x20by\x20the\x20`Language`\x20enum\ - .\n\n\x0c\n\x05\x04\x03\x02\0\x05\x12\x03M\x02\x08\n\x0c\n\x05\x04\x03\ - \x02\0\x01\x12\x03M\t\x11\n\x0c\n\x05\x04\x03\x02\0\x03\x12\x03M\x14\x15\ - \n\xb5\x03\n\x04\x04\x03\x02\x01\x12\x03W\x02\x1b\x1a\xa7\x03\x20(Requir\ - ed)\x20Unique\x20path\x20to\x20the\x20text\x20document.\n\n\x201.\x20The\ - \x20path\x20must\x20be\x20relative\x20to\x20the\x20directory\x20supplied\ - \x20in\x20the\x20associated\n\x20\x20\x20\x20`Metadata.project_root`.\n\ - \x202.\x20The\x20path\x20must\x20not\x20begin\x20with\x20a\x20leading\ - \x20'/'.\n\x203.\x20The\x20path\x20must\x20point\x20to\x20a\x20regular\ - \x20file,\x20not\x20a\x20symbolic\x20link.\n\x204.\x20The\x20path\x20mus\ - t\x20use\x20'/'\x20as\x20the\x20separator,\x20including\x20on\x20Windows\ - .\n\x205.\x20The\x20path\x20must\x20be\x20canonical;\x20it\x20cannot\x20\ - include\x20empty\x20components\x20('//'),\n\x20\x20\x20\x20or\x20'.'\x20\ - or\x20'..'.\n\n\x0c\n\x05\x04\x03\x02\x01\x05\x12\x03W\x02\x08\n\x0c\n\ - \x05\x04\x03\x02\x01\x01\x12\x03W\t\x16\n\x0c\n\x05\x04\x03\x02\x01\x03\ - \x12\x03W\x19\x1a\n4\n\x04\x04\x03\x02\x02\x12\x03Y\x02&\x1a'\x20Occurre\ - nces\x20that\x20appear\x20in\x20this\x20file.\n\n\x0c\n\x05\x04\x03\x02\ - \x02\x04\x12\x03Y\x02\n\n\x0c\n\x05\x04\x03\x02\x02\x06\x12\x03Y\x0b\x15\ - \n\x0c\n\x05\x04\x03\x02\x02\x01\x12\x03Y\x16!\n\x0c\n\x05\x04\x03\x02\ - \x02\x03\x12\x03Y$%\n\xea\x01\n\x04\x04\x03\x02\x03\x12\x03_\x02)\x1a\ - \xdc\x01\x20Symbols\x20that\x20are\x20\"defined\"\x20within\x20this\x20d\ - ocument.\n\n\x20This\x20should\x20include\x20symbols\x20which\x20technic\ - ally\x20do\x20not\x20have\x20any\x20definition,\n\x20but\x20have\x20a\ - \x20reference\x20and\x20are\x20defined\x20by\x20some\x20other\x20symbol\ - \x20(see\n\x20Relationship.is_definition).\n\n\x0c\n\x05\x04\x03\x02\x03\ - \x04\x12\x03_\x02\n\n\x0c\n\x05\x04\x03\x02\x03\x06\x12\x03_\x0b\x1c\n\ - \x0c\n\x05\x04\x03\x02\x03\x01\x12\x03_\x1d$\n\x0c\n\x05\x04\x03\x02\x03\ - \x03\x12\x03_'(\n\x80\x03\n\x04\x04\x03\x02\x04\x12\x03f\x02\x12\x1a\xf2\ - \x02\x20(optional)\x20Text\x20contents\x20of\x20this\x20document.\x20Ind\ - exers\x20are\x20not\x20expected\x20to\n\x20include\x20the\x20text\x20by\ - \x20default.\x20It's\x20preferable\x20that\x20clients\x20read\x20the\x20\ - text\n\x20contents\x20from\x20the\x20file\x20system\x20by\x20resolving\ - \x20the\x20absolute\x20path\x20from\x20joining\n\x20`Index.metadata.proj\ - ect_root`\x20and\x20`Document.relative_path`.\x20This\x20field\n\x20can\ - \x20be\x20useful\x20for\x20testing\x20or\x20when\x20working\x20with\x20v\ - irtual/in-memory\x20documents.\n\n\x0c\n\x05\x04\x03\x02\x04\x05\x12\x03\ - f\x02\x08\n\x0c\n\x05\x04\x03\x02\x04\x01\x12\x03f\t\r\n\x0c\n\x05\x04\ - \x03\x02\x04\x03\x12\x03f\x10\x11\n\xe7\x03\n\x04\x04\x03\x02\x05\x12\ - \x03r\x02)\x1a\xd9\x03\x20Specifies\x20the\x20encoding\x20used\x20for\ - \x20source\x20ranges\x20in\x20this\x20Document.\n\n\x20Usually,\x20this\ - \x20will\x20match\x20the\x20type\x20used\x20to\x20index\x20the\x20string\ - \x20type\n\x20in\x20the\x20indexer's\x20implementation\x20language\x20in\ - \x20O(1)\x20time.\n\x20-\x20For\x20an\x20indexer\x20implemented\x20in\ - \x20JVM/.NET\x20language\x20or\x20JavaScript/TypeScript,\n\x20\x20\x20us\ - e\x20UTF16CodeUnitOffsetFromLineStart.\n\x20-\x20For\x20an\x20indexer\ - \x20implemented\x20in\x20Python,\n\x20\x20\x20use\x20UTF32CodeUnitOffset\ - FromLineStart.\n\x20-\x20For\x20an\x20indexer\x20implemented\x20in\x20Go\ - ,\x20Rust\x20or\x20C++,\n\x20\x20\x20use\x20UTF8ByteOffsetFromLineStart.\ - \n\n\x0c\n\x05\x04\x03\x02\x05\x06\x12\x03r\x02\x12\n\x0c\n\x05\x04\x03\ - \x02\x05\x01\x12\x03r\x13$\n\x0c\n\x05\x04\x03\x02\x05\x03\x12\x03r'(\nQ\ - \n\x02\x05\x02\x12\x05v\0\x8e\x01\x01\x1aD\x20Encoding\x20used\x20to\x20\ - interpret\x20the\x20'character'\x20value\x20in\x20source\x20ranges.\n\n\ - \n\n\x03\x05\x02\x01\x12\x03v\x05\x15\n\x93\x01\n\x04\x05\x02\x02\0\x12\ - \x03y\x02\"\x1a\x85\x01\x20Default\x20value.\x20This\x20value\x20should\ - \x20not\x20be\x20used\x20by\x20new\x20SCIP\x20indexers\n\x20so\x20that\ - \x20a\x20consumer\x20can\x20process\x20the\x20SCIP\x20index\x20without\ - \x20ambiguity.\n\n\x0c\n\x05\x05\x02\x02\0\x01\x12\x03y\x02\x1d\n\x0c\n\ - \x05\x05\x02\x02\0\x02\x12\x03y\x20!\n\xf7\x01\n\x04\x05\x02\x02\x01\x12\ - \x04\x80\x01\x02&\x1a\xe8\x01\x20The\x20'character'\x20value\x20is\x20in\ - terpreted\x20as\x20an\x20offset\x20in\x20terms\n\x20of\x20UTF-8\x20code\ - \x20units\x20(i.e.\x20bytes).\n\n\x20Example:\x20For\x20the\x20string\ - \x20\"\xf0\x9f\x9a\x80\x20Woo\"\x20in\x20UTF-8,\x20the\x20bytes\x20are\n\ - \x20[240,\x20159,\x20154,\x20128,\x2032,\x2087,\x20111,\x20111],\x20so\ - \x20the\x20offset\x20for\x20'W'\n\x20would\x20be\x205.\n\n\r\n\x05\x05\ - \x02\x02\x01\x01\x12\x04\x80\x01\x02!\n\r\n\x05\x05\x02\x02\x01\x02\x12\ - \x04\x80\x01$%\n\x82\x02\n\x04\x05\x02\x02\x02\x12\x04\x87\x01\x02'\x1a\ - \xf3\x01\x20The\x20'character'\x20value\x20is\x20interpreted\x20as\x20an\ - \x20offset\x20in\x20terms\n\x20of\x20UTF-16\x20code\x20units\x20(each\ - \x20is\x202\x20bytes).\n\n\x20Example:\x20For\x20the\x20string\x20\"\xf0\ - \x9f\x9a\x80\x20Woo\",\x20the\x20UTF-16\x20code\x20units\x20are\n\x20['\ - \\ud83d',\x20'\\ude80',\x20'\x20',\x20'W',\x20'o',\x20'o'],\x20so\x20the\ - \x20offset\x20for\x20'W'\n\x20would\x20be\x203.\n\n\r\n\x05\x05\x02\x02\ - \x02\x01\x12\x04\x87\x01\x02\"\n\r\n\x05\x05\x02\x02\x02\x02\x12\x04\x87\ - \x01%&\n\xf5\x01\n\x04\x05\x02\x02\x03\x12\x04\x8d\x01\x02'\x1a\xe6\x01\ - \x20The\x20'character'\x20value\x20is\x20interpreted\x20as\x20an\x20offs\ - et\x20in\x20terms\n\x20of\x20UTF-32\x20code\x20units\x20(each\x20is\x204\ - \x20bytes).\n\n\x20Example:\x20For\x20the\x20string\x20\"\xf0\x9f\x9a\ - \x80\x20Woo\",\x20the\x20UTF-32\x20code\x20units\x20are\n\x20['\xf0\x9f\ - \x9a\x80',\x20'\x20',\x20'W',\x20'o',\x20'o'],\x20so\x20the\x20offset\ - \x20for\x20'W'\x20would\x20be\x202.\n\n\r\n\x05\x05\x02\x02\x03\x01\x12\ - \x04\x8d\x01\x02\"\n\r\n\x05\x05\x02\x02\x03\x02\x12\x04\x8d\x01%&\n\xcc\ - \x12\n\x02\x04\x04\x12\x06\xba\x01\0\xbe\x01\x01\x1a\xbd\x12\x20Symbol\ - \x20is\x20similar\x20to\x20a\x20URI,\x20it\x20identifies\x20a\x20class,\ - \x20method,\x20or\x20a\x20local\n\x20variable.\x20`SymbolInformation`\ - \x20contains\x20rich\x20metadata\x20about\x20symbols\x20such\x20as\n\x20\ - the\x20docstring.\n\n\x20Symbol\x20has\x20a\x20standardized\x20string\ - \x20representation,\x20which\x20can\x20be\x20used\n\x20interchangeably\ - \x20with\x20`Symbol`.\x20The\x20syntax\x20for\x20Symbol\x20is\x20the\x20\ - following:\n\x20```\n\x20#\x20()+\x20stands\x20for\x20one\x20or\x20mo\ - re\x20repetitions\x20of\x20\n\x20#\x20()?\x20stands\x20for\x20zero\ - \x20or\x20one\x20occurrence\x20of\x20\n\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'\x20'\ - \x20\x20'\x20'\x20()+\x20|\x20'local\x20'\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20::=\x20\x20'\x20'\x20\x20'\x20'\x20\ - \n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20::=\x20any\x20UTF-8,\x20escape\x20spaces\x20with\x20double\x20space.\ - \x20Must\x20not\x20be\x20empty\x20nor\x20start\x20with\x20'local'\n\x20<\ - manager>\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20a\ - ny\x20UTF-8,\x20escape\x20spaces\x20with\x20double\x20space.\x20Use\x20t\ - he\x20placeholder\x20'.'\x20to\x20indicate\x20an\x20empty\x20value\n\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20a\ - bove\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20::=\x20same\x20as\x20above\n\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20::=\x20\x20|\x20\x20|\x20\x20\ - |\x20\x20|\x20\x20|\x20\x20|\x20\x20|\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20::=\x20\x20'/'\n\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'#'\n\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\ - \x20\x20'.'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20::=\x20\x20':'\n\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\ - \x20'!'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20::=\x20\x20'('\x20()?\x20').'\n\ - \x20\x20\x20\x20\x20\x20\x20\x20::=\x20'['\x20\x20\ - ']'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\ - \x20'('\x20\x20')'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20::=\x20\n\x20\x20::=\x20\n\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20::=\x20\x20|\x20\n\x20\x20\x20\x20\x20::=\x20()+\n\x20\x20::=\x20'_'\x20|\x20'+'\x20|\ - \x20'-'\x20|\x20'$'\x20|\x20ASCII\x20letter\x20or\x20digit\n\x20\x20\x20\x20::=\x20'`'\x20()+\x20'`',\x20\ - must\x20contain\x20at\x20least\x20one\x20non-\n\ - \x20\x20\x20\x20::=\x20any\x20UTF-8,\x20escape\x20ba\ - ckticks\x20with\x20double\x20backtick.\n\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\n\x20```\ - \n\n\x20The\x20list\x20of\x20descriptors\x20for\x20a\x20symbol\x20should\ - \x20together\x20form\x20a\x20fully\n\x20qualified\x20name\x20for\x20the\ - \x20symbol.\x20That\x20is,\x20it\x20should\x20serve\x20as\x20a\x20unique\ - \n\x20identifier\x20across\x20the\x20package.\x20Typically,\x20it\x20wil\ - l\x20include\x20one\x20descriptor\n\x20for\x20every\x20node\x20in\x20the\ - \x20AST\x20(along\x20the\x20ancestry\x20path)\x20between\x20the\x20root\ - \x20of\n\x20the\x20file\x20and\x20the\x20node\x20corresponding\x20to\x20\ - the\x20symbol.\n\n\x20Local\x20symbols\x20MUST\x20only\x20be\x20used\x20\ - for\x20entities\x20which\x20are\x20local\x20to\x20a\x20Document,\n\x20an\ - d\x20cannot\x20be\x20accessed\x20from\x20outside\x20the\x20Document.\n\n\ - \x0b\n\x03\x04\x04\x01\x12\x04\xba\x01\x08\x0e\n\x0c\n\x04\x04\x04\x02\0\ - \x12\x04\xbb\x01\x02\x14\n\r\n\x05\x04\x04\x02\0\x05\x12\x04\xbb\x01\x02\ - \x08\n\r\n\x05\x04\x04\x02\0\x01\x12\x04\xbb\x01\t\x0f\n\r\n\x05\x04\x04\ - \x02\0\x03\x12\x04\xbb\x01\x12\x13\n\x0c\n\x04\x04\x04\x02\x01\x12\x04\ - \xbc\x01\x02\x16\n\r\n\x05\x04\x04\x02\x01\x06\x12\x04\xbc\x01\x02\t\n\r\ - \n\x05\x04\x04\x02\x01\x01\x12\x04\xbc\x01\n\x11\n\r\n\x05\x04\x04\x02\ - \x01\x03\x12\x04\xbc\x01\x14\x15\n\x0c\n\x04\x04\x04\x02\x02\x12\x04\xbd\ - \x01\x02&\n\r\n\x05\x04\x04\x02\x02\x04\x12\x04\xbd\x01\x02\n\n\r\n\x05\ - \x04\x04\x02\x02\x06\x12\x04\xbd\x01\x0b\x15\n\r\n\x05\x04\x04\x02\x02\ - \x01\x12\x04\xbd\x01\x16!\n\r\n\x05\x04\x04\x02\x02\x03\x12\x04\xbd\x01$\ - %\nq\n\x02\x04\x05\x12\x06\xc3\x01\0\xc7\x01\x01\x1ac\x20Unit\x20of\x20p\ - ackaging\x20and\x20distribution.\n\n\x20NOTE:\x20This\x20corresponds\x20\ - to\x20a\x20module\x20in\x20Go\x20and\x20JVM\x20languages.\n\n\x0b\n\x03\ - \x04\x05\x01\x12\x04\xc3\x01\x08\x0f\n\x0c\n\x04\x04\x05\x02\0\x12\x04\ - \xc4\x01\x02\x15\n\r\n\x05\x04\x05\x02\0\x05\x12\x04\xc4\x01\x02\x08\n\r\ - \n\x05\x04\x05\x02\0\x01\x12\x04\xc4\x01\t\x10\n\r\n\x05\x04\x05\x02\0\ - \x03\x12\x04\xc4\x01\x13\x14\n\x0c\n\x04\x04\x05\x02\x01\x12\x04\xc5\x01\ - \x02\x12\n\r\n\x05\x04\x05\x02\x01\x05\x12\x04\xc5\x01\x02\x08\n\r\n\x05\ - \x04\x05\x02\x01\x01\x12\x04\xc5\x01\t\r\n\r\n\x05\x04\x05\x02\x01\x03\ - \x12\x04\xc5\x01\x10\x11\n\x0c\n\x04\x04\x05\x02\x02\x12\x04\xc6\x01\x02\ - \x15\n\r\n\x05\x04\x05\x02\x02\x05\x12\x04\xc6\x01\x02\x08\n\r\n\x05\x04\ - \x05\x02\x02\x01\x12\x04\xc6\x01\t\x10\n\r\n\x05\x04\x05\x02\x02\x03\x12\ - \x04\xc6\x01\x13\x14\n\x0c\n\x02\x04\x06\x12\x06\xc9\x01\0\xe2\x01\x01\n\ - \x0b\n\x03\x04\x06\x01\x12\x04\xc9\x01\x08\x12\n\x0e\n\x04\x04\x06\x04\0\ - \x12\x06\xca\x01\x02\xdc\x01\x03\n\r\n\x05\x04\x06\x04\0\x01\x12\x04\xca\ - \x01\x07\r\n\r\n\x05\x04\x06\x04\0\x03\x12\x04\xcb\x01\x04\x1e\n\x0e\n\ - \x06\x04\x06\x04\0\x03\x02\x12\x04\xcb\x01\x04\x1e\n\x0e\n\x06\x04\x06\ - \x04\0\x02\0\x12\x04\xcc\x01\x04\x1a\n\x0f\n\x07\x04\x06\x04\0\x02\0\x01\ - \x12\x04\xcc\x01\x04\x15\n\x0f\n\x07\x04\x06\x04\0\x02\0\x02\x12\x04\xcc\ - \x01\x18\x19\n}\n\x06\x04\x06\x04\0\x02\x01\x12\x04\xd0\x01\x04\x12\x1am\ - \x20Unit\x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\n\x20N\ - OTE:\x20This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20\ - JVM\x20languages.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x01\x01\x12\x04\xd0\ - \x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x01\x02\x12\x04\xd0\x01\x10\x11\ - \n(\n\x06\x04\x06\x04\0\x02\x02\x12\x04\xd2\x01\x04$\x1a\x18\x20Use\x20N\ - amespace\x20instead.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x01\x12\x04\xd2\ - \x01\x04\x0b\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x02\x12\x04\xd2\x01\x0e\ - \x0f\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x03\x12\x04\xd2\x01\x10#\n\x10\n\ - \x08\x04\x06\x04\0\x02\x02\x03\x01\x12\x04\xd2\x01\x11\"\n\x0e\n\x06\x04\ - \x06\x04\0\x02\x03\x12\x04\xd3\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\ - \x03\x01\x12\x04\xd3\x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\x03\x02\ - \x12\x04\xd3\x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\x02\x04\x12\x04\xd4\ - \x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x04\x01\x12\x04\xd4\x01\x04\x08\ - \n\x0f\n\x07\x04\x06\x04\0\x02\x04\x02\x12\x04\xd4\x01\x0b\x0c\n\x0e\n\ - \x06\x04\x06\x04\0\x02\x05\x12\x04\xd5\x01\x04\x0f\n\x0f\n\x07\x04\x06\ - \x04\0\x02\x05\x01\x12\x04\xd5\x01\x04\n\n\x0f\n\x07\x04\x06\x04\0\x02\ - \x05\x02\x12\x04\xd5\x01\r\x0e\n\x0e\n\x06\x04\x06\x04\0\x02\x06\x12\x04\ - \xd6\x01\x04\x16\n\x0f\n\x07\x04\x06\x04\0\x02\x06\x01\x12\x04\xd6\x01\ - \x04\x11\n\x0f\n\x07\x04\x06\x04\0\x02\x06\x02\x12\x04\xd6\x01\x14\x15\n\ - \x0e\n\x06\x04\x06\x04\0\x02\x07\x12\x04\xd7\x01\x04\x12\n\x0f\n\x07\x04\ - \x06\x04\0\x02\x07\x01\x12\x04\xd7\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\ - \x02\x07\x02\x12\x04\xd7\x01\x10\x11\n.\n\x06\x04\x06\x04\0\x02\x08\x12\ - \x04\xd9\x01\x04\r\x1a\x1e\x20Can\x20be\x20used\x20for\x20any\x20purpose\ - .\n\n\x0f\n\x07\x04\x06\x04\0\x02\x08\x01\x12\x04\xd9\x01\x04\x08\n\x0f\ - \n\x07\x04\x06\x04\0\x02\x08\x02\x12\x04\xd9\x01\x0b\x0c\n\x0e\n\x06\x04\ - \x06\x04\0\x02\t\x12\x04\xda\x01\x04\x0e\n\x0f\n\x07\x04\x06\x04\0\x02\t\ - \x01\x12\x04\xda\x01\x04\t\n\x0f\n\x07\x04\x06\x04\0\x02\t\x02\x12\x04\ - \xda\x01\x0c\r\n\x0e\n\x06\x04\x06\x04\0\x02\n\x12\x04\xdb\x01\x04\x0e\n\ - \x0f\n\x07\x04\x06\x04\0\x02\n\x01\x12\x04\xdb\x01\x04\t\n\x0f\n\x07\x04\ - \x06\x04\0\x02\n\x02\x12\x04\xdb\x01\x0c\r\n\x0c\n\x04\x04\x06\x02\0\x12\ - \x04\xdd\x01\x02\x12\n\r\n\x05\x04\x06\x02\0\x05\x12\x04\xdd\x01\x02\x08\ - \n\r\n\x05\x04\x06\x02\0\x01\x12\x04\xdd\x01\t\r\n\r\n\x05\x04\x06\x02\0\ - \x03\x12\x04\xdd\x01\x10\x11\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xde\x01\ - \x02\x1b\n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xde\x01\x02\x08\n\r\n\x05\ - \x04\x06\x02\x01\x01\x12\x04\xde\x01\t\x16\n\r\n\x05\x04\x06\x02\x01\x03\ - \x12\x04\xde\x01\x19\x1a\n\x82\x01\n\x04\x04\x06\x02\x02\x12\x04\xdf\x01\ - \x02\x14\"t\x20NOTE:\x20If\x20you\x20add\x20new\x20fields\x20here,\x20ma\ - ke\x20sure\x20to\x20update\x20the\x20prepareSlot()\n\x20function\x20resp\ - onsible\x20for\x20parsing\x20symbols.\n\n\r\n\x05\x04\x06\x02\x02\x06\ - \x12\x04\xdf\x01\x02\x08\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\xdf\x01\t\ - \x0f\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xdf\x01\x12\x13\n\xa1\x02\n\ - \x02\x04\x07\x12\x06\xe8\x01\0\xf5\x01\x01\x1a\x92\x02\x20Signature\x20r\ - epresents\x20the\x20signature\x20of\x20a\x20symbol\x20as\x20it's\x20disp\ - layed\x20in\x20API\n\x20documentation\x20or\x20hover\x20tooltips.\x20It\ - \x20uses\x20a\x20subset\x20of\x20Document's\x20fields\x20with\n\x20the\ - \x20same\x20field\x20numbers\x20for\x20wire\x20compatibility\x20with\x20\ - older\x20indexes\x20that\x20encoded\n\x20signatures\x20using\x20the\x20D\ - ocument\x20message\x20type.\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xe8\x01\ - \x08\x11\nK\n\x04\x04\x07\x02\0\x12\x04\xea\x01\x02\x16\x1a=\x20The\x20l\ - anguage\x20of\x20the\x20signature,\x20e.g.\x20\"java\",\x20\"go\",\x20\"\ - python\".\n\n\r\n\x05\x04\x07\x02\0\x05\x12\x04\xea\x01\x02\x08\n\r\n\ - \x05\x04\x07\x02\0\x01\x12\x04\xea\x01\t\x11\n\r\n\x05\x04\x07\x02\0\x03\ - \x12\x04\xea\x01\x14\x15\nQ\n\x04\x04\x07\x02\x01\x12\x04\xec\x01\x02\ - \x12\x1aC\x20The\x20text\x20content\x20of\x20the\x20signature,\x20e.g.\ - \x20\"void\x20add(int\x20a,\x20int\x20b)\".\n\n\r\n\x05\x04\x07\x02\x01\ - \x05\x12\x04\xec\x01\x02\x08\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xec\ - \x01\t\r\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\xec\x01\x10\x11\n\xbb\x01\ - \n\x04\x04\x07\x02\x02\x12\x04\xf0\x01\x02&\x1a\xac\x01\x20(optional)\ - \x20Occurrences\x20within\x20the\x20signature\x20text\x20that\x20referen\ - ce\x20other\n\x20symbols,\x20enabling\x20hyperlinking\x20of\x20types\x20\ - in\x20the\x20signature.\x20Ranges\x20are\n\x20relative\x20to\x20the\x20`\ - text`\x20field.\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xf0\x01\x02\n\n\ - \r\n\x05\x04\x07\x02\x02\x06\x12\x04\xf0\x01\x0b\x15\n\r\n\x05\x04\x07\ - \x02\x02\x01\x12\x04\xf0\x01\x16!\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\ - \xf0\x01$%\n\x97\x01\n\x03\x04\x07\t\x12\x04\xf4\x01\x02\x13\x1a\x89\x01\ - \x20Reserved\x20field\x20numbers\x20from\x20the\x20Document\x20message\ - \x20to\x20prevent\x20accidental\n\x20reuse,\x20which\x20would\x20break\ - \x20wire\x20compatibility\x20with\x20older\x20indexes.\n\n\x0c\n\x04\x04\ - \x07\t\0\x12\x04\xf4\x01\x0b\x0c\n\r\n\x05\x04\x07\t\0\x01\x12\x04\xf4\ - \x01\x0b\x0c\n\r\n\x05\x04\x07\t\0\x02\x12\x04\xf4\x01\x0b\x0c\n\x0c\n\ - \x04\x04\x07\t\x01\x12\x04\xf4\x01\x0e\x0f\n\r\n\x05\x04\x07\t\x01\x01\ - \x12\x04\xf4\x01\x0e\x0f\n\r\n\x05\x04\x07\t\x01\x02\x12\x04\xf4\x01\x0e\ - \x0f\n\x0c\n\x04\x04\x07\t\x02\x12\x04\xf4\x01\x11\x12\n\r\n\x05\x04\x07\ - \t\x02\x01\x12\x04\xf4\x01\x11\x12\n\r\n\x05\x04\x07\t\x02\x02\x12\x04\ - \xf4\x01\x11\x12\n\x83\x01\n\x02\x04\x08\x12\x06\xf9\x01\0\xcb\x03\x01\ - \x1au\x20SymbolInformation\x20defines\x20metadata\x20about\x20a\x20symbo\ - l,\x20such\x20as\x20the\x20symbol's\n\x20docstring\x20or\x20what\x20pack\ - age\x20it's\x20defined\x20it.\n\n\x0b\n\x03\x04\x08\x01\x12\x04\xf9\x01\ - \x08\x19\n\xa0\x01\n\x04\x04\x08\x02\0\x12\x04\xfc\x01\x02\x14\x1a\x91\ - \x01\x20Identifier\x20of\x20this\x20symbol,\x20which\x20can\x20be\x20ref\ - erenced\x20from\x20`Occurence.symbol`.\n\x20The\x20string\x20must\x20be\ - \x20formatted\x20according\x20to\x20the\x20grammar\x20in\x20`Symbol`.\n\ - \n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xfc\x01\x02\x08\n\r\n\x05\x04\x08\ - \x02\0\x01\x12\x04\xfc\x01\t\x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\xfc\ - \x01\x12\x13\n\xb4\x03\n\x04\x04\x08\x02\x01\x12\x04\x83\x02\x02$\x1a\ - \xa5\x03\x20(optional,\x20but\x20strongly\x20recommended)\x20The\x20mark\ - down-formatted\x20documentation\n\x20for\x20this\x20symbol.\x20Use\x20`S\ - ymbolInformation.signature_documentation`\x20to\n\x20document\x20the\x20\ - method/class/type\x20signature\x20of\x20this\x20symbol.\n\x20Due\x20to\ - \x20historical\x20reasons,\x20indexers\x20may\x20include\x20signature\ - \x20documentation\x20in\n\x20this\x20field\x20by\x20rendering\x20markdow\ - n\x20code\x20blocks.\x20New\x20indexers\x20should\x20only\n\x20include\ - \x20non-code\x20documentation\x20in\x20this\x20field,\x20for\x20example\ - \x20docstrings.\n\n\r\n\x05\x04\x08\x02\x01\x04\x12\x04\x83\x02\x02\n\n\ - \r\n\x05\x04\x08\x02\x01\x05\x12\x04\x83\x02\x0b\x11\n\r\n\x05\x04\x08\ - \x02\x01\x01\x12\x04\x83\x02\x12\x1f\n\r\n\x05\x04\x08\x02\x01\x03\x12\ - \x04\x83\x02\"#\n^\n\x04\x04\x08\x02\x02\x12\x04\x85\x02\x02*\x1aP\x20(o\ - ptional)\x20Relationships\x20to\x20other\x20symbols\x20(e.g.,\x20impleme\ - nts,\x20type\x20definition).\n\n\r\n\x05\x04\x08\x02\x02\x04\x12\x04\x85\ - \x02\x02\n\n\r\n\x05\x04\x08\x02\x02\x06\x12\x04\x85\x02\x0b\x17\n\r\n\ - \x05\x04\x08\x02\x02\x01\x12\x04\x85\x02\x18%\n\r\n\x05\x04\x08\x02\x02\ - \x03\x12\x04\x85\x02()\n\xa4\x01\n\x04\x04\x08\x02\x03\x12\x04\x89\x02\ - \x02\x10\x1a\x95\x01\x20The\x20kind\x20of\x20this\x20symbol.\x20Use\x20t\ - his\x20field\x20instead\x20of\n\x20`SymbolDescriptor.Suffix`\x20to\x20de\ - termine\x20whether\x20something\x20is,\x20for\x20example,\x20a\n\x20clas\ - s\x20or\x20a\x20method.\n\n\r\n\x05\x04\x08\x02\x03\x06\x12\x04\x89\x02\ - \x02\x06\n\r\n\x05\x04\x08\x02\x03\x01\x12\x04\x89\x02\x07\x0b\n\r\n\x05\ - \x04\x08\x02\x03\x03\x12\x04\x89\x02\x0e\x0f\n\xf5\x05\n\x04\x04\x08\x04\ - \0\x12\x06\x98\x02\x02\xa7\x03\x03\x1a\xe4\x05\x20(optional)\x20Kind\x20\ - represents\x20the\x20fine-grained\x20category\x20of\x20a\x20symbol,\x20s\ - uitable\x20for\x20presenting\n\x20information\x20about\x20the\x20symbol'\ - s\x20meaning\x20in\x20the\x20language.\n\n\x20For\x20example:\n\x20-\x20\ - A\x20Java\x20method\x20would\x20have\x20the\x20kind\x20`Method`\x20while\ - \x20a\x20Go\x20function\x20would\n\x20\x20\x20have\x20the\x20kind\x20`Fu\ - nction`,\x20even\x20if\x20the\x20symbols\x20for\x20these\x20use\x20the\ - \x20same\n\x20\x20\x20syntax\x20for\x20the\x20descriptor\x20`SymbolDescr\ - iptor.Suffix.Method`.\n\x20-\x20A\x20Go\x20struct\x20has\x20the\x20symbo\ - l\x20kind\x20`Struct`\x20while\x20a\x20Java\x20class\x20has\n\x20\x20\ - \x20the\x20symbol\x20kind\x20`Class`\x20even\x20if\x20they\x20both\x20ha\ - ve\x20the\x20same\x20descriptor:\n\x20\x20\x20`SymbolDescriptor.Suffix.T\ - ype`.\n\n\x20Since\x20Kind\x20is\x20more\x20fine-grained\x20than\x20Suff\ - ix:\n\x20-\x20If\x20two\x20symbols\x20have\x20the\x20same\x20Kind,\x20th\ - ey\x20should\x20share\x20the\x20same\x20Suffix.\n\x20-\x20If\x20two\x20s\ - ymbols\x20have\x20different\x20Suffixes,\x20they\x20should\x20have\x20di\ - fferent\x20Kinds.\n\n\r\n\x05\x04\x08\x04\0\x01\x12\x04\x98\x02\x07\x0b\ - \n\x0e\n\x06\x04\x08\x04\0\x02\0\x12\x04\x99\x02\x04\x18\n\x0f\n\x07\x04\ - \x08\x04\0\x02\0\x01\x12\x04\x99\x02\x04\x13\n\x0f\n\x07\x04\x08\x04\0\ - \x02\0\x02\x12\x04\x99\x02\x16\x17\nR\n\x06\x04\x08\x04\0\x02\x01\x12\ - \x04\x9b\x02\x04\x18\x1aB\x20A\x20method\x20which\x20may\x20or\x20may\ - \x20not\x20have\x20a\x20body.\x20For\x20Java,\x20Kotlin\x20etc.\n\n\x0f\ - \n\x07\x04\x08\x04\0\x02\x01\x01\x12\x04\x9b\x02\x04\x12\n\x0f\n\x07\x04\ - \x08\x04\0\x02\x01\x02\x12\x04\x9b\x02\x15\x17\n*\n\x06\x04\x08\x04\0\ - \x02\x02\x12\x04\x9d\x02\x04\x12\x1a\x1a\x20For\x20Ruby's\x20attr_access\ - or\n\n\x0f\n\x07\x04\x08\x04\0\x02\x02\x01\x12\x04\x9d\x02\x04\x0c\n\x0f\ - \n\x07\x04\x08\x04\0\x02\x02\x02\x12\x04\x9d\x02\x0f\x11\n\x0e\n\x06\x04\ - \x08\x04\0\x02\x03\x12\x04\x9e\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\ - \x03\x01\x12\x04\x9e\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\x03\x02\x12\ - \x04\x9e\x02\x0c\r\n\x1b\n\x06\x04\x08\x04\0\x02\x04\x12\x04\xa0\x02\x04\ - \x12\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x08\x04\0\x02\x04\x01\x12\ - \x04\xa0\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02\x04\x02\x12\x04\xa0\x02\ - \x10\x11\n\x0e\n\x06\x04\x08\x04\0\x02\x05\x12\x04\xa1\x02\x04\x17\n\x0f\ - \n\x07\x04\x08\x04\0\x02\x05\x01\x12\x04\xa1\x02\x04\x12\n\x0f\n\x07\x04\ - \x08\x04\0\x02\x05\x02\x12\x04\xa1\x02\x15\x16\n\x19\n\x06\x04\x08\x04\0\ - \x02\x06\x12\x04\xa3\x02\x04\x12\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\ - \x08\x04\0\x02\x06\x01\x12\x04\xa3\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\ - \x02\x06\x02\x12\x04\xa3\x02\x10\x11\n\x1a\n\x06\x04\x08\x04\0\x02\x07\ - \x12\x04\xa5\x02\x04\x0e\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x08\x04\ - \0\x02\x07\x01\x12\x04\xa5\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\x07\ - \x02\x12\x04\xa5\x02\x0c\r\n\x0e\n\x06\x04\x08\x04\0\x02\x08\x12\x04\xa6\ - \x02\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02\x08\x01\x12\x04\xa6\x02\x04\ - \x0b\n\x0f\n\x07\x04\x08\x04\0\x02\x08\x02\x12\x04\xa6\x02\x0e\x0f\n\x0e\ - \n\x06\x04\x08\x04\0\x02\t\x12\x04\xa7\x02\x04\x0e\n\x0f\n\x07\x04\x08\ - \x04\0\x02\t\x01\x12\x04\xa7\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\t\ - \x02\x12\x04\xa7\x02\x0c\r\n\x19\n\x06\x04\x08\x04\0\x02\n\x12\x04\xa9\ - \x02\x04\x11\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x08\x04\0\x02\n\x01\ - \x12\x04\xa9\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02\n\x02\x12\x04\xa9\ - \x02\x0e\x10\n\x0e\n\x06\x04\x08\x04\0\x02\x0b\x12\x04\xaa\x02\x04\x11\n\ - \x0f\n\x07\x04\x08\x04\0\x02\x0b\x01\x12\x04\xaa\x02\x04\x0c\n\x0f\n\x07\ - \x04\x08\x04\0\x02\x0b\x02\x12\x04\xaa\x02\x0f\x10\n\x0e\n\x06\x04\x08\ - \x04\0\x02\x0c\x12\x04\xab\x02\x04\x14\n\x0f\n\x07\x04\x08\x04\0\x02\x0c\ - \x01\x12\x04\xab\x02\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\x02\x0c\x02\x12\ - \x04\xab\x02\x12\x13\n\x1e\n\x06\x04\x08\x04\0\x02\r\x12\x04\xad\x02\x04\ - \x12\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x08\x04\0\x02\r\x01\ - \x12\x04\xad\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02\r\x02\x12\x04\xad\ - \x02\x0f\x11\n\x1d\n\x06\x04\x08\x04\0\x02\x0e\x12\x04\xaf\x02\x04\x14\ - \x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\x08\x04\0\x02\x0e\x01\x12\x04\ - \xaf\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\x0e\x02\x12\x04\xaf\x02\ - \x11\x13\n\x1f\n\x06\x04\x08\x04\0\x02\x0f\x12\x04\xb1\x02\x04\x12\x1a\ - \x0f\x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\x08\x04\0\x02\x0f\x01\ - \x12\x04\xb1\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02\x0f\x02\x12\x04\ - \xb1\x02\x0f\x11\n\x0e\n\x06\x04\x08\x04\0\x02\x10\x12\x04\xb2\x02\x04\ - \x0e\n\x0f\n\x07\x04\x08\x04\0\x02\x10\x01\x12\x04\xb2\x02\x04\x08\n\x0f\ - \n\x07\x04\x08\x04\0\x02\x10\x02\x12\x04\xb2\x02\x0b\r\n\x0e\n\x06\x04\ - \x08\x04\0\x02\x11\x12\x04\xb3\x02\x04\x14\n\x0f\n\x07\x04\x08\x04\0\x02\ - \x11\x01\x12\x04\xb3\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\x11\x02\ - \x12\x04\xb3\x02\x11\x13\n\x0e\n\x06\x04\x08\x04\0\x02\x12\x12\x04\xb4\ - \x02\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\x02\x12\x01\x12\x04\xb4\x02\x04\t\ - \n\x0f\n\x07\x04\x08\x04\0\x02\x12\x02\x12\x04\xb4\x02\x0c\x0e\n\x0e\n\ - \x06\x04\x08\x04\0\x02\x13\x12\x04\xb5\x02\x04\x0f\n\x0f\n\x07\x04\x08\ - \x04\0\x02\x13\x01\x12\x04\xb5\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\ - \x13\x02\x12\x04\xb5\x02\x0c\x0e\n\x1a\n\x06\x04\x08\x04\0\x02\x14\x12\ - \x04\xb7\x02\x04\x13\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x08\x04\0\ - \x02\x14\x01\x12\x04\xb7\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02\x14\x02\ - \x12\x04\xb7\x02\x10\x12\n\x1b\n\x06\x04\x08\x04\0\x02\x15\x12\x04\xb9\ - \x02\x04\x0e\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x08\x04\0\x02\x15\ - \x01\x12\x04\xb9\x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02\x15\x02\x12\ - \x04\xb9\x02\x0b\r\n\x0e\n\x06\x04\x08\x04\0\x02\x16\x12\x04\xba\x02\x04\ - \x0f\n\x0f\n\x07\x04\x08\x04\0\x02\x16\x01\x12\x04\xba\x02\x04\t\n\x0f\n\ - \x07\x04\x08\x04\0\x02\x16\x02\x12\x04\xba\x02\x0c\x0e\n\x0e\n\x06\x04\ - \x08\x04\0\x02\x17\x12\x04\xbb\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\ - \x17\x01\x12\x04\xbb\x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02\x17\x02\ - \x12\x04\xbb\x02\x0b\r\n\x0e\n\x06\x04\x08\x04\0\x02\x18\x12\x04\xbc\x02\ - \x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02\x18\x01\x12\x04\xbc\x02\x04\x0c\n\ - \x0f\n\x07\x04\x08\x04\0\x02\x18\x02\x12\x04\xbc\x02\x0f\x11\n;\n\x06\ - \x04\x08\x04\0\x02\x19\x12\x04\xbe\x02\x04\x10\x1a+\x20For\x20'get'\x20i\ - n\x20Swift,\x20'attr_reader'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x08\x04\0\ - \x02\x19\x01\x12\x04\xbe\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02\x19\x02\ - \x12\x04\xbe\x02\r\x0f\n\x1a\n\x06\x04\x08\x04\0\x02\x1a\x12\x04\xc0\x02\ - \x04\x11\x1a\n\x20For\x20Raku\n\n\x0f\n\x07\x04\x08\x04\0\x02\x1a\x01\ - \x12\x04\xc0\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02\x1a\x02\x12\x04\ - \xc0\x02\x0e\x10\n)\n\x06\x04\x08\x04\0\x02\x1b\x12\x04\xc2\x02\x04\x12\ - \x1a\x19\x20For\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x08\x04\0\ - \x02\x1b\x01\x12\x04\xc2\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02\x1b\ - \x02\x12\x04\xc2\x02\x0f\x11\n\x0e\n\x06\x04\x08\x04\0\x02\x1c\x12\x04\ - \xc3\x02\x04\x13\n\x0f\n\x07\x04\x08\x04\0\x02\x1c\x01\x12\x04\xc3\x02\ - \x04\r\n\x0f\n\x07\x04\x08\x04\0\x02\x1c\x02\x12\x04\xc3\x02\x10\x12\n\ - \x0e\n\x06\x04\x08\x04\0\x02\x1d\x12\x04\xc4\x02\x04\r\n\x0f\n\x07\x04\ - \x08\x04\0\x02\x1d\x01\x12\x04\xc4\x02\x04\x07\n\x0f\n\x07\x04\x08\x04\0\ - \x02\x1d\x02\x12\x04\xc4\x02\n\x0c\n\x1c\n\x06\x04\x08\x04\0\x02\x1e\x12\ - \x04\xc6\x02\x04\x0e\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\x08\x04\ - \0\x02\x1e\x01\x12\x04\xc6\x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02\x1e\ - \x02\x12\x04\xc6\x02\x0b\r\n\x1a\n\x06\x04\x08\x04\0\x02\x1f\x12\x04\xc8\ - \x02\x04\x0f\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x08\x04\0\x02\x1f\ - \x01\x12\x04\xc8\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\x1f\x02\x12\x04\ - \xc8\x02\x0c\x0e\n\x1e\n\x06\x04\x08\x04\0\x02\x20\x12\x04\xca\x02\x04\ - \x11\x1a\x0e\x20For\x20solidity\n\n\x0f\n\x07\x04\x08\x04\0\x02\x20\x01\ - \x12\x04\xca\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02\x20\x02\x12\x04\ - \xca\x02\x0e\x10\n\x0e\n\x06\x04\x08\x04\0\x02!\x12\x04\xcb\x02\x04\x0f\ - \n\x0f\n\x07\x04\x08\x04\0\x02!\x01\x12\x04\xcb\x02\x04\t\n\x0f\n\x07\ - \x04\x08\x04\0\x02!\x02\x12\x04\xcb\x02\x0c\x0e\n\x0e\n\x06\x04\x08\x04\ - \0\x02\"\x12\x04\xcc\x02\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02\"\x01\x12\ - \x04\xcc\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02\"\x02\x12\x04\xcc\x02\r\ - \x0f\n\x1a\n\x06\x04\x08\x04\0\x02#\x12\x04\xce\x02\x04\x15\x1a\n\x20For\ - \x20Ruby\n\n\x0f\n\x07\x04\x08\x04\0\x02#\x01\x12\x04\xce\x02\x04\x0f\n\ - \x0f\n\x07\x04\x08\x04\0\x02#\x02\x12\x04\xce\x02\x12\x14\n\x94\x01\n\ - \x06\x04\x08\x04\0\x02$\x12\x04\xd1\x02\x04\x18\x1a\x83\x01\x20Analogous\ - \x20to\x20'ThisParameter'\x20and\x20'SelfParameter',\x20but\x20for\x20la\ - nguages\n\x20like\x20Go\x20where\x20the\x20receiver\x20doesn't\x20have\ - \x20a\x20conventional\x20name.\n\n\x0f\n\x07\x04\x08\x04\0\x02$\x01\x12\ - \x04\xd1\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02$\x02\x12\x04\xd1\x02\ - \x15\x17\n8\n\x06\x04\x08\x04\0\x02%\x12\x04\xd3\x02\x04\x1d\x1a(\x20Ana\ - logous\x20to\x20'AbstractMethod',\x20for\x20Go.\n\n\x0f\n\x07\x04\x08\ - \x04\0\x02%\x01\x12\x04\xd3\x02\x04\x17\n\x0f\n\x07\x04\x08\x04\0\x02%\ - \x02\x12\x04\xd3\x02\x1a\x1c\n\x1e\n\x06\x04\x08\x04\0\x02&\x12\x04\xd5\ - \x02\x04\x11\x1a\x0e\x20For\x20Protobuf\n\n\x0f\n\x07\x04\x08\x04\0\x02&\ - \x01\x12\x04\xd5\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02&\x02\x12\x04\ - \xd5\x02\x0e\x10\n\x1a\n\x06\x04\x08\x04\0\x02'\x12\x04\xd7\x02\x04\x0f\ - \x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x08\x04\0\x02'\x01\x12\x04\xd7\ - \x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02'\x02\x12\x04\xd7\x02\x0c\x0e\n\ - \x1e\n\x06\x04\x08\x04\0\x02(\x12\x04\xd9\x02\x04\x12\x1a\x0e\x20For\x20\ - Solidity\n\n\x0f\n\x07\x04\x08\x04\0\x02(\x01\x12\x04\xd9\x02\x04\x0c\n\ - \x0f\n\x07\x04\x08\x04\0\x02(\x02\x12\x04\xd9\x02\x0f\x11\n\x0e\n\x06\ - \x04\x08\x04\0\x02)\x12\x04\xda\x02\x04\x10\n\x0f\n\x07\x04\x08\x04\0\ - \x02)\x01\x12\x04\xda\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02)\x02\x12\ - \x04\xda\x02\r\x0f\n\x0e\n\x06\x04\x08\x04\0\x02*\x12\x04\xdb\x02\x04\ - \x13\n\x0f\n\x07\x04\x08\x04\0\x02*\x01\x12\x04\xdb\x02\x04\r\n\x0f\n\ - \x07\x04\x08\x04\0\x02*\x02\x12\x04\xdb\x02\x10\x12\n\x0e\n\x06\x04\x08\ - \x04\0\x02+\x12\x04\xdc\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02+\x01\ - \x12\x04\xdc\x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02+\x02\x12\x04\xdc\ - \x02\x0b\r\n\x0e\n\x06\x04\x08\x04\0\x02,\x12\x04\xdd\x02\x04\x10\n\x0f\ - \n\x07\x04\x08\x04\0\x02,\x01\x12\x04\xdd\x02\x04\n\n\x0f\n\x07\x04\x08\ - \x04\0\x02,\x02\x12\x04\xdd\x02\r\x0f\n\x0e\n\x06\x04\x08\x04\0\x02-\x12\ - \x04\xde\x02\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02-\x01\x12\x04\xde\x02\ - \x04\n\n\x0f\n\x07\x04\x08\x04\0\x02-\x02\x12\x04\xde\x02\r\x0f\n\x0e\n\ - \x06\x04\x08\x04\0\x02.\x12\x04\xdf\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\ - \0\x02.\x01\x12\x04\xdf\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02.\x02\ - \x12\x04\xdf\x02\x0f\x11\n\x0e\n\x06\x04\x08\x04\0\x02/\x12\x04\xe0\x02\ - \x04\x11\n\x0f\n\x07\x04\x08\x04\0\x02/\x01\x12\x04\xe0\x02\x04\x0b\n\ - \x0f\n\x07\x04\x08\x04\0\x02/\x02\x12\x04\xe0\x02\x0e\x10\n\x0e\n\x06\ - \x04\x08\x04\0\x020\x12\x04\xe1\x02\x04\x17\n\x0f\n\x07\x04\x08\x04\0\ - \x020\x01\x12\x04\xe1\x02\x04\x11\n\x0f\n\x07\x04\x08\x04\0\x020\x02\x12\ - \x04\xe1\x02\x14\x16\n\x0e\n\x06\x04\x08\x04\0\x021\x12\x04\xe2\x02\x04\ - \x13\n\x0f\n\x07\x04\x08\x04\0\x021\x01\x12\x04\xe2\x02\x04\r\n\x0f\n\ - \x07\x04\x08\x04\0\x021\x02\x12\x04\xe2\x02\x10\x12\n\x0e\n\x06\x04\x08\ - \x04\0\x022\x12\x04\xe3\x02\x04\x18\n\x0f\n\x07\x04\x08\x04\0\x022\x01\ - \x12\x04\xe3\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x022\x02\x12\x04\xe3\ - \x02\x15\x17\n/\n\x06\x04\x08\x04\0\x023\x12\x04\xe5\x02\x04\x11\x1a\x1f\ - \x20For\x20Haskell's\x20PatternSynonyms\n\n\x0f\n\x07\x04\x08\x04\0\x023\ - \x01\x12\x04\xe5\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x023\x02\x12\x04\ - \xe5\x02\x0e\x10\n\x1b\n\x06\x04\x08\x04\0\x024\x12\x04\xe7\x02\x04\x13\ - \x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x08\x04\0\x024\x01\x12\x04\ - \xe7\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\x024\x02\x12\x04\xe7\x02\x10\ - \x12\n\x0e\n\x06\x04\x08\x04\0\x025\x12\x04\xe8\x02\x04\x12\n\x0f\n\x07\ - \x04\x08\x04\0\x025\x01\x12\x04\xe8\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\ - \0\x025\x02\x12\x04\xe8\x02\x0f\x11\nQ\n\x06\x04\x08\x04\0\x026\x12\x04\ - \xea\x02\x04\x12\x1aA\x20Analogous\x20to\x20'Trait'\x20and\x20'TypeClass\ - ',\x20for\x20Swift\x20and\x20Objective-C\n\n\x0f\n\x07\x04\x08\x04\0\x02\ - 6\x01\x12\x04\xea\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x026\x02\x12\x04\ - \xea\x02\x0f\x11\nK\n\x06\x04\x08\x04\0\x027\x12\x04\xec\x02\x04\x18\x1a\ - ;\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Swift\x20and\x20Obje\ - ctive-C.\n\n\x0f\n\x07\x04\x08\x04\0\x027\x01\x12\x04\xec\x02\x04\x12\n\ - \x0f\n\x07\x04\x08\x04\0\x027\x02\x12\x04\xec\x02\x15\x17\n9\n\x06\x04\ - \x08\x04\0\x028\x12\x04\xee\x02\x04\x1b\x1a)\x20Analogous\x20to\x20'Abst\ - ractMethod',\x20for\x20C++.\n\n\x0f\n\x07\x04\x08\x04\0\x028\x01\x12\x04\ - \xee\x02\x04\x15\n\x0f\n\x07\x04\x08\x04\0\x028\x02\x12\x04\xee\x02\x18\ - \x1a\n\x1d\n\x06\x04\x08\x04\0\x029\x12\x04\xf0\x02\x04\x15\x1a\r\x20For\ - \x20Haskell\n\n\x0f\n\x07\x04\x08\x04\0\x029\x01\x12\x04\xf0\x02\x04\x0f\ - \n\x0f\n\x07\x04\x08\x04\0\x029\x02\x12\x04\xf0\x02\x12\x14\n4\n\x06\x04\ - \x08\x04\0\x02:\x12\x04\xf2\x02\x04\x17\x1a$\x20'self'\x20in\x20Python,\ - \x20Rust,\x20Swift\x20etc.\n\n\x0f\n\x07\x04\x08\x04\0\x02:\x01\x12\x04\ - \xf2\x02\x04\x11\n\x0f\n\x07\x04\x08\x04\0\x02:\x02\x12\x04\xf2\x02\x14\ - \x16\n;\n\x06\x04\x08\x04\0\x02;\x12\x04\xf4\x02\x04\x10\x1a+\x20For\x20\ - 'set'\x20in\x20Swift,\x20'attr_writer'\x20in\x20Ruby\n\n\x0f\n\x07\x04\ - \x08\x04\0\x02;\x01\x12\x04\xf4\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02;\ - \x02\x12\x04\xf4\x02\r\x0f\n3\n\x06\x04\x08\x04\0\x02<\x12\x04\xf6\x02\ - \x04\x13\x1a#\x20For\x20Alloy,\x20analogous\x20to\x20'Struct'.\n\n\x0f\n\ - \x07\x04\x08\x04\0\x02<\x01\x12\x04\xf6\x02\x04\r\n\x0f\n\x07\x04\x08\ - \x04\0\x02<\x02\x12\x04\xf6\x02\x10\x12\n\x1a\n\x06\x04\x08\x04\0\x02=\ - \x12\x04\xf8\x02\x04\x18\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x08\x04\ - \0\x02=\x01\x12\x04\xf8\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02=\x02\ - \x12\x04\xf8\x02\x15\x17\n8\n\x06\x04\x08\x04\0\x02>\x12\x04\xfa\x02\x04\ - \x19\x1a(\x20Analogous\x20to\x20'StaticMethod',\x20for\x20Ruby.\n\n\x0f\ - \n\x07\x04\x08\x04\0\x02>\x01\x12\x04\xfa\x02\x04\x13\n\x0f\n\x07\x04\ - \x08\x04\0\x02>\x02\x12\x04\xfa\x02\x16\x18\n5\n\x06\x04\x08\x04\0\x02?\ - \x12\x04\xfc\x02\x04\x1a\x1a%\x20Analogous\x20to\x20'StaticField',\x20fo\ - r\x20C++\n\n\x0f\n\x07\x04\x08\x04\0\x02?\x01\x12\x04\xfc\x02\x04\x14\n\ - \x0f\n\x07\x04\x08\x04\0\x02?\x02\x12\x04\xfc\x02\x17\x19\n\x18\n\x06\ - \x04\x08\x04\0\x02@\x12\x04\xfe\x02\x04\x15\x1a\x08\x20For\x20C#\n\n\x0f\ - \n\x07\x04\x08\x04\0\x02@\x01\x12\x04\xfe\x02\x04\x0f\n\x0f\n\x07\x04\ - \x08\x04\0\x02@\x02\x12\x04\xfe\x02\x12\x14\n\x18\n\x06\x04\x08\x04\0\ - \x02A\x12\x04\x80\x03\x04\x15\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x08\ - \x04\0\x02A\x01\x12\x04\x80\x03\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\x02A\ - \x02\x12\x04\x80\x03\x12\x14\n(\n\x06\x04\x08\x04\0\x02B\x12\x04\x82\x03\ - \x04\x16\x1a\x18\x20For\x20Java,\x20C#,\x20C++\x20etc.\n\n\x0f\n\x07\x04\ - \x08\x04\0\x02B\x01\x12\x04\x82\x03\x04\x10\n\x0f\n\x07\x04\x08\x04\0\ - \x02B\x02\x12\x04\x82\x03\x13\x15\n)\n\x06\x04\x08\x04\0\x02C\x12\x04\ - \x84\x03\x04\x18\x1a\x19\x20For\x20C#,\x20TypeScript\x20etc.\n\n\x0f\n\ - \x07\x04\x08\x04\0\x02C\x01\x12\x04\x84\x03\x04\x12\n\x0f\n\x07\x04\x08\ - \x04\0\x02C\x02\x12\x04\x84\x03\x15\x17\n\x1c\n\x06\x04\x08\x04\0\x02D\ - \x12\x04\x86\x03\x04\x18\x1a\x0c\x20For\x20C,\x20C++\n\n\x0f\n\x07\x04\ - \x08\x04\0\x02D\x01\x12\x04\x86\x03\x04\x12\n\x0f\n\x07\x04\x08\x04\0\ - \x02D\x02\x12\x04\x86\x03\x15\x17\n\x0e\n\x06\x04\x08\x04\0\x02E\x12\x04\ - \x87\x03\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02E\x01\x12\x04\x87\x03\x04\ - \n\n\x0f\n\x07\x04\x08\x04\0\x02E\x02\x12\x04\x87\x03\r\x0f\n\x0e\n\x06\ - \x04\x08\x04\0\x02F\x12\x04\x88\x03\x04\x10\n\x0f\n\x07\x04\x08\x04\0\ - \x02F\x01\x12\x04\x88\x03\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02F\x02\x12\ - \x04\x88\x03\r\x0f\n\x1b\n\x06\x04\x08\x04\0\x02G\x12\x04\x8a\x03\x04\ - \x13\x1a\x0b\x20For\x20Swift\n\n\x0f\n\x07\x04\x08\x04\0\x02G\x01\x12\ - \x04\x8a\x03\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02G\x02\x12\x04\x8a\x03\ - \x10\x12\n\x1a\n\x06\x04\x08\x04\0\x02H\x12\x04\x8c\x03\x04\x10\x1a\n\ - \x20For\x20Lean\n\n\x0f\n\x07\x04\x08\x04\0\x02H\x01\x12\x04\x8c\x03\x04\ - \n\n\x0f\n\x07\x04\x08\x04\0\x02H\x02\x12\x04\x8c\x03\r\x0f\n\x1a\n\x06\ - \x04\x08\x04\0\x02I\x12\x04\x8e\x03\x04\x11\x1a\n\x20For\x20Lean\n\n\x0f\ - \n\x07\x04\x08\x04\0\x02I\x01\x12\x04\x8e\x03\x04\x0b\n\x0f\n\x07\x04\ - \x08\x04\0\x02I\x02\x12\x04\x8e\x03\x0e\x10\nU\n\x06\x04\x08\x04\0\x02J\ - \x12\x04\x91\x03\x04\x17\x1aE\x20Method\x20receiver\x20for\x20languages\ - \n\x20'this'\x20in\x20JavaScript,\x20C++,\x20Java\x20etc.\n\n\x0f\n\x07\ - \x04\x08\x04\0\x02J\x01\x12\x04\x91\x03\x04\x11\n\x0f\n\x07\x04\x08\x04\ - \0\x02J\x02\x12\x04\x91\x03\x14\x16\nO\n\x06\x04\x08\x04\0\x02K\x12\x04\ - \x93\x03\x04\x0f\x1a?\x20Analogous\x20to\x20'Protocol'\x20and\x20'TypeCl\ - ass',\x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\x08\x04\0\x02K\ - \x01\x12\x04\x93\x03\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02K\x02\x12\x04\ - \x93\x03\x0c\x0e\nE\n\x06\x04\x08\x04\0\x02L\x12\x04\x95\x03\x04\x15\x1a\ - 5\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Rust,\x20Scala\x20et\ - c.\n\n\x0f\n\x07\x04\x08\x04\0\x02L\x01\x12\x04\x95\x03\x04\x0f\n\x0f\n\ - \x07\x04\x08\x04\0\x02L\x02\x12\x04\x95\x03\x12\x14\n\x89\x01\n\x06\x04\ - \x08\x04\0\x02M\x12\x04\x98\x03\x04\x0e\x1ay\x20Data\x20type\x20definiti\ - on\x20for\x20languages\x20like\x20OCaml\x20which\x20use\x20`type`\n\x20r\ - ather\x20than\x20separate\x20keywords\x20like\x20`struct`\x20and\x20`enu\ - m`.\n\n\x0f\n\x07\x04\x08\x04\0\x02M\x01\x12\x04\x98\x03\x04\x08\n\x0f\n\ - \x07\x04\x08\x04\0\x02M\x02\x12\x04\x98\x03\x0b\r\n\x0e\n\x06\x04\x08\ - \x04\0\x02N\x12\x04\x99\x03\x04\x13\n\x0f\n\x07\x04\x08\x04\0\x02N\x01\ - \x12\x04\x99\x03\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02N\x02\x12\x04\x99\ - \x03\x10\x12\nS\n\x06\x04\x08\x04\0\x02O\x12\x04\x9b\x03\x04\x13\x1aC\ - \x20Analogous\x20to\x20'Trait'\x20and\x20'Protocol',\x20for\x20Haskell,\ - \x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x08\x04\0\x02O\x01\x12\x04\x9b\ - \x03\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02O\x02\x12\x04\x9b\x03\x10\x12\nM\ - \n\x06\x04\x08\x04\0\x02P\x12\x04\x9d\x03\x04\x19\x1a=\x20Analogous\x20t\ - o\x20'AbstractMethod',\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\x0f\ - \n\x07\x04\x08\x04\0\x02P\x01\x12\x04\x9d\x03\x04\x13\n\x0f\n\x07\x04\ - \x08\x04\0\x02P\x02\x12\x04\x9d\x03\x16\x18\n\x1d\n\x06\x04\x08\x04\0\ - \x02Q\x12\x04\x9f\x03\x04\x14\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\ - \x08\x04\0\x02Q\x01\x12\x04\x9f\x03\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\ - \x02Q\x02\x12\x04\x9f\x03\x11\x13\n\x0e\n\x06\x04\x08\x04\0\x02R\x12\x04\ - \xa0\x03\x04\x17\n\x0f\n\x07\x04\x08\x04\0\x02R\x01\x12\x04\xa0\x03\x04\ - \x11\n\x0f\n\x07\x04\x08\x04\0\x02R\x02\x12\x04\xa0\x03\x14\x16\n(\n\x06\ - \x04\x08\x04\0\x02S\x12\x04\xa2\x03\x04\x0f\x1a\x18\x20For\x20C,\x20C++,\ - \x20Capn\x20Proto\n\n\x0f\n\x07\x04\x08\x04\0\x02S\x01\x12\x04\xa2\x03\ - \x04\t\n\x0f\n\x07\x04\x08\x04\0\x02S\x02\x12\x04\xa2\x03\x0c\x0e\n\x0e\ - \n\x06\x04\x08\x04\0\x02T\x12\x04\xa3\x03\x04\x0f\n\x0f\n\x07\x04\x08\ - \x04\0\x02T\x01\x12\x04\xa3\x03\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02T\x02\ - \x12\x04\xa3\x03\x0c\x0e\n[\n\x06\x04\x08\x04\0\x02U\x12\x04\xa4\x03\x04\ - \x12\"K\x20Next\x20=\x2087;\n\x20Feel\x20free\x20to\x20open\x20a\x20PR\ - \x20proposing\x20new\x20language-specific\x20kinds.\n\n\x0f\n\x07\x04\ - \x08\x04\0\x02U\x01\x12\x04\xa4\x03\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\ - \x02U\x02\x12\x04\xa4\x03\x0f\x11\n\xf3\x03\n\x04\x04\x08\x02\x04\x12\ - \x04\xb1\x03\x02\x1a\x1a\xe4\x03\x20(optional)\x20The\x20name\x20of\x20t\ - his\x20symbol\x20as\x20it\x20should\x20be\x20displayed\x20to\x20the\x20u\ - ser.\n\x20For\x20example,\x20the\x20symbol\x20\"com/example/MyClass#myMe\ - thod(+1).\"\x20should\x20have\x20the\n\x20display\x20name\x20\"myMethod\ - \".\x20The\x20`symbol`\x20field\x20is\x20not\x20a\x20reliable\x20source\ - \x20of\n\x20the\x20display\x20name\x20for\x20several\x20reasons:\n\n\x20\ - -\x20Local\x20symbols\x20don't\x20encode\x20the\x20name.\n\x20-\x20Some\ - \x20languages\x20have\x20case-insensitive\x20names,\x20so\x20the\x20symb\ - ol\x20is\x20all-lowercase.\n\x20-\x20The\x20symbol\x20may\x20encode\x20n\ - ames\x20with\x20special\x20characters\x20that\x20should\x20not\x20be\n\ - \x20\x20\x20displayed\x20to\x20the\x20user.\n\n\r\n\x05\x04\x08\x02\x04\ - \x05\x12\x04\xb1\x03\x02\x08\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xb1\ - \x03\t\x15\n\r\n\x05\x04\x08\x02\x04\x03\x12\x04\xb1\x03\x18\x19\n\x9f\ - \x03\n\x04\x04\x08\x02\x05\x12\x04\xb8\x03\x02(\x1a\x90\x03\x20(optional\ - )\x20The\x20signature\x20of\x20this\x20symbol\x20as\x20it's\x20displayed\ - \x20in\x20API\n\x20documentation\x20or\x20in\x20hover\x20tooltips.\x20Fo\ - r\x20example,\x20a\x20Java\x20method\x20that\x20adds\n\x20two\x20numbers\ - \x20would\x20have\x20`Signature.language\x20=\x20\"java\"`\x20and\n\x20`\ - Signature.text\x20=\x20\"void\x20add(int\x20a,\x20int\x20b)\"`.\x20The\ - \x20`language`\x20and\x20`text`\n\x20fields\x20are\x20required\x20while\ - \x20`occurrences`\x20can\x20be\x20optionally\x20included\x20to\n\x20supp\ - ort\x20hyperlinking\x20referenced\x20symbols\x20in\x20the\x20signature.\ - \n\n\r\n\x05\x04\x08\x02\x05\x06\x12\x04\xb8\x03\x02\x0b\n\r\n\x05\x04\ - \x08\x02\x05\x01\x12\x04\xb8\x03\x0c#\n\r\n\x05\x04\x08\x02\x05\x03\x12\ - \x04\xb8\x03&'\n\xc9\x08\n\x04\x04\x08\x02\x06\x12\x04\xca\x03\x02\x1e\ - \x1a\xba\x08\x20(optional)\x20The\x20enclosing\x20symbol\x20if\x20this\ - \x20is\x20a\x20local\x20symbol.\x20\x20For\x20non-local\n\x20symbols,\ - \x20the\x20enclosing\x20symbol\x20should\x20be\x20parsed\x20from\x20the\ - \x20`symbol`\x20field\n\x20using\x20the\x20`Descriptor`\x20grammar.\n\n\ - \x20The\x20primary\x20use-case\x20for\x20this\x20field\x20is\x20to\x20al\ - low\x20local\x20symbol\x20to\x20be\x20displayed\n\x20in\x20a\x20symbol\ - \x20hierarchy\x20for\x20API\x20documentation.\x20It's\x20OK\x20to\x20lea\ - ve\x20this\x20field\n\x20empty\x20for\x20local\x20variables\x20since\x20\ - local\x20variables\x20usually\x20don't\x20belong\x20in\x20API\n\x20docum\ - entation.\x20However,\x20in\x20the\x20situation\x20that\x20you\x20wish\ - \x20to\x20include\x20a\x20local\n\x20symbol\x20in\x20the\x20hierarchy,\ - \x20then\x20you\x20can\x20use\x20`enclosing_symbol`\x20to\x20locate\x20t\ - he\n\x20\"parent\"\x20or\x20\"owner\"\x20of\x20this\x20local\x20symbol.\ - \x20For\x20example,\x20a\x20Java\x20indexer\x20may\n\x20choose\x20to\x20\ - use\x20local\x20symbols\x20for\x20private\x20class\x20fields\x20while\ - \x20providing\x20an\n\x20`enclosing_symbol`\x20to\x20reference\x20the\ - \x20enclosing\x20class\x20to\x20allow\x20the\x20field\x20to\n\x20be\x20p\ - art\x20of\x20the\x20class\x20documentation\x20hierarchy.\x20From\x20the\ - \x20perspective\x20of\x20an\n\x20author\x20of\x20an\x20indexer,\x20the\ - \x20decision\x20to\x20use\x20a\x20local\x20symbol\x20or\x20global\x20sym\ - bol\n\x20should\x20exclusively\x20be\x20determined\x20whether\x20the\x20\ - local\x20symbol\x20is\x20accessible\n\x20outside\x20the\x20document,\x20\ - not\x20by\x20the\x20capability\x20to\x20find\x20the\x20enclosing\n\x20sy\ - mbol.\n\n\r\n\x05\x04\x08\x02\x06\x05\x12\x04\xca\x03\x02\x08\n\r\n\x05\ - \x04\x08\x02\x06\x01\x12\x04\xca\x03\t\x19\n\r\n\x05\x04\x08\x02\x06\x03\ - \x12\x04\xca\x03\x1c\x1d\n\x0c\n\x02\x04\t\x12\x06\xcd\x03\0\x81\x04\x01\ - \n\x0b\n\x03\x04\t\x01\x12\x04\xcd\x03\x08\x14\n\x0c\n\x04\x04\t\x02\0\ - \x12\x04\xce\x03\x02\x14\n\r\n\x05\x04\t\x02\0\x05\x12\x04\xce\x03\x02\ - \x08\n\r\n\x05\x04\t\x02\0\x01\x12\x04\xce\x03\t\x0f\n\r\n\x05\x04\t\x02\ - \0\x03\x12\x04\xce\x03\x12\x13\n\xde\x08\n\x04\x04\t\x02\x01\x12\x04\xe7\ - \x03\x02\x18\x1a\xcf\x08\x20When\x20resolving\x20\"Find\x20references\",\ - \x20this\x20field\x20documents\x20what\x20other\x20symbols\n\x20should\ - \x20be\x20included\x20together\x20with\x20this\x20symbol.\x20For\x20exam\ - ple,\x20consider\x20the\n\x20following\x20TypeScript\x20code\x20that\x20\ - defines\x20two\x20symbols\x20`Animal#sound()`\x20and\n\x20`Dog#sound()`:\ - \n\x20```ts\n\x20interface\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20^^^^^^\x20definition\x20Animal#\n\x20\x20\x20sound():\ - \x20string\n\x20\x20\x20^^^^^\x20definition\x20Animal#sound()\n\x20}\n\ - \x20class\x20Dog\x20implements\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\ - \x20^^^\x20definition\x20Dog#,\x20relationships\x20=\x20[{symbol:\x20\"A\ - nimal#\",\x20is_implementation:\x20true}]\n\x20\x20\x20public\x20sound()\ - :\x20string\x20{\x20return\x20\"woof\"\x20}\n\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20^^^^^\x20definition\x20Dog#sound(),\x20references_symbol\ - s\x20=\x20Animal#sound(),\x20relationships\x20=\x20[{symbol:\x20\"Animal\ - #sound()\",\x20is_implementation:true,\x20is_reference:\x20true}]\n\x20}\ - \n\x20const\x20animal:\x20Animal\x20=\x20new\x20Dog()\n\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^\x20reference\x20Anima\ - l#\n\x20console.log(animal.sound())\n\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20reference\x20An\ - imal#sound()\n\x20```\n\x20Doing\x20\"Find\x20references\"\x20on\x20the\ - \x20symbol\x20`Animal#sound()`\x20should\x20return\n\x20references\x20to\ - \x20the\x20`Dog#sound()`\x20method\x20as\x20well.\x20Vice-versa,\x20doin\ - g\x20\"Find\n\x20references\"\x20on\x20the\x20`Dog#sound()`\x20method\ - \x20should\x20include\x20references\x20to\x20the\n\x20`Animal#sound()`\ - \x20method\x20as\x20well.\n\n\r\n\x05\x04\t\x02\x01\x05\x12\x04\xe7\x03\ - \x02\x06\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\xe7\x03\x07\x13\n\r\n\x05\ - \x04\t\x02\x01\x03\x12\x04\xe7\x03\x16\x17\n\xee\x03\n\x04\x04\t\x02\x02\ - \x12\x04\xf0\x03\x02\x1d\x1a\xdf\x03\x20Similar\x20to\x20`is_reference`\ - \x20but\x20for\x20\"Find\x20implementations\".\n\x20It's\x20common\x20fo\ - r\x20`is_implementation`\x20and\x20`is_reference`\x20to\x20both\x20be\ - \x20true\x20but\n\x20it's\x20not\x20always\x20the\x20case.\n\x20In\x20th\ - e\x20TypeScript\x20example\x20above,\x20observe\x20that\x20`Dog#`\x20has\ - \x20an\n\x20`is_implementation`\x20relationship\x20with\x20`\"Animal#\"`\ - \x20but\x20not\x20`is_reference`.\n\x20This\x20is\x20because\x20\"Find\ - \x20references\"\x20on\x20the\x20\"Animal#\"\x20symbol\x20should\x20not\ - \x20return\n\x20\"Dog#\".\x20We\x20only\x20want\x20\"Dog#\"\x20to\x20ret\ - urn\x20as\x20a\x20result\x20for\x20\"Find\n\x20implementations\"\x20on\ - \x20the\x20\"Animal#\"\x20symbol.\n\n\r\n\x05\x04\t\x02\x02\x05\x12\x04\ - \xf0\x03\x02\x06\n\r\n\x05\x04\t\x02\x02\x01\x12\x04\xf0\x03\x07\x18\n\r\ - \n\x05\x04\t\x02\x02\x03\x12\x04\xf0\x03\x1b\x1c\nP\n\x04\x04\t\x02\x03\ - \x12\x04\xf2\x03\x02\x1e\x1aB\x20Similar\x20to\x20`references_symbols`\ - \x20but\x20for\x20\"Go\x20to\x20type\x20definition\".\n\n\r\n\x05\x04\t\ - \x02\x03\x05\x12\x04\xf2\x03\x02\x06\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\ - \xf2\x03\x07\x19\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\xf2\x03\x1c\x1d\n\ - \xd8\x05\n\x04\x04\t\x02\x04\x12\x04\xff\x03\x02\x19\x1a\x86\x05\x20Allo\ - ws\x20overriding\x20the\x20behavior\x20of\x20\"Go\x20to\x20definition\"\ - \x20and\x20\"Find\x20references\"\n\x20for\x20symbols\x20which\x20do\x20\ - not\x20have\x20a\x20definition\x20of\x20their\x20own\x20or\x20could\n\ - \x20potentially\x20have\x20multiple\x20definitions.\n\n\x20For\x20exampl\ - e,\x20in\x20a\x20language\x20with\x20single\x20inheritance\x20and\x20no\ - \x20field\x20overriding,\n\x20inherited\x20fields\x20can\x20reuse\x20the\ - \x20same\x20symbol\x20as\x20the\x20ancestor\x20which\x20declares\n\x20th\ - e\x20field.\x20In\x20such\x20a\x20situation,\x20is_definition\x20is\x20n\ - ot\x20needed.\n\n\x20On\x20the\x20other\x20hand,\x20in\x20languages\x20w\ - ith\x20single\x20inheritance\x20and\x20some\x20form\n\x20of\x20mixins,\ - \x20you\x20can\x20use\x20is_definition\x20to\x20relate\x20the\x20symbol\ - \x20to\x20the\n\x20matching\x20symbol\x20in\x20ancestor\x20classes,\x20a\ - nd\x20is_reference\x20to\x20relate\x20the\n\x20symbol\x20to\x20the\x20ma\ - tching\x20symbol\x20in\x20mixins.\n\"A\x20Update\x20registerInverseRelat\ - ionships\x20on\x20adding\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\t\ - \x02\x04\x05\x12\x04\xff\x03\x02\x06\n\r\n\x05\x04\t\x02\x04\x01\x12\x04\ - \xff\x03\x07\x14\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\xff\x03\x17\x18\n\ - \x88\x03\n\x02\x05\x03\x12\x06\x88\x04\0\x9e\x04\x01\x1a\xf9\x02\x20Symb\ - olRole\x20declares\x20what\x20\"role\"\x20a\x20symbol\x20has\x20in\x20an\ - \x20occurrence.\x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bitset\x20\ - where\x20each\x20bit\x20represents\x20a\x20different\x20role.\x20For\x20\ - example,\n\x20to\x20determine\x20if\x20the\x20`Import`\x20role\x20is\x20\ - set,\x20test\x20whether\x20the\x20second\x20bit\x20of\x20the\n\x20enum\ - \x20value\x20is\x20defined.\x20In\x20pseudocode,\x20this\x20can\x20be\ - \x20implemented\x20with\x20the\n\x20logic:\x20`const\x20isImportRole\x20\ - =\x20(role.value\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\x0b\n\ - \x03\x05\x03\x01\x12\x04\x88\x04\x05\x0f\nv\n\x04\x05\x03\x02\0\x12\x04\ - \x8b\x04\x02\x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20to\x20be\ - \x20used;\x20it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\x20fro\ - m\x20the\x20Protobuf\x20code\x20generator.\n\n\r\n\x05\x05\x03\x02\0\x01\ - \x12\x04\x8b\x04\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\x8b\x04\x1a\ - \x1b\nT\n\x04\x05\x03\x02\x01\x12\x04\x8d\x04\x02\x13\x1aF\x20Is\x20the\ - \x20symbol\x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\ - \x20symbol\x20reference.\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\x8d\x04\ - \x02\x0c\n\r\n\x05\x05\x03\x02\x01\x02\x12\x04\x8d\x04\x0f\x12\n,\n\x04\ - \x05\x03\x02\x02\x12\x04\x8f\x04\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\ - \x20imported\x20here?\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\x8f\x04\ - \x02\x08\n\r\n\x05\x05\x03\x02\x02\x02\x12\x04\x8f\x04\x0b\x0e\n+\n\x04\ - \x05\x03\x02\x03\x12\x04\x91\x04\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\ - \x20written\x20here?\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\x91\x04\x02\ - \r\n\r\n\x05\x05\x03\x02\x03\x02\x12\x04\x91\x04\x10\x13\n(\n\x04\x05\ - \x03\x02\x04\x12\x04\x93\x04\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20r\ - ead\x20here?\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x93\x04\x02\x0c\n\r\ - \n\x05\x05\x03\x02\x04\x02\x12\x04\x93\x04\x0f\x12\n0\n\x04\x05\x03\x02\ - \x05\x12\x04\x95\x04\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20gener\ - ated\x20code?\n\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x95\x04\x02\x0b\n\ - \r\n\x05\x05\x03\x02\x05\x02\x12\x04\x95\x04\x0e\x12\n+\n\x04\x05\x03\ - \x02\x06\x12\x04\x97\x04\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\ - \x20test\x20code?\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x97\x04\x02\ - \x06\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\x97\x04\t\r\n\xed\x01\n\x04\ - \x05\x03\x02\x07\x12\x04\x9d\x04\x02\x1b\x1a\xde\x01\x20Is\x20this\x20a\ - \x20signature\x20for\x20a\x20symbol\x20that\x20is\x20defined\x20elsewher\ - e?\n\n\x20Applies\x20to\x20forward\x20declarations\x20for\x20languages\ - \x20like\x20C,\x20C++\n\x20and\x20Objective-C,\x20as\x20well\x20as\x20`v\ - al`\x20declarations\x20in\x20interface\n\x20files\x20in\x20languages\x20\ - like\x20SML\x20and\x20OCaml.\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\x9d\ - \x04\x02\x13\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\x9d\x04\x16\x1a\n\x0c\ - \n\x02\x05\x04\x12\x06\xa0\x04\0\xfd\x04\x01\n\x0b\n\x03\x05\x04\x01\x12\ - \x04\xa0\x04\x05\x0f\n\x0b\n\x03\x05\x04\x03\x12\x04\xa1\x04\x02\x1c\n\ - \x0c\n\x04\x05\x04\x03\x02\x12\x04\xa1\x04\x02\x1c\n\x0c\n\x04\x05\x04\ - \x02\0\x12\x04\xa3\x04\x02\x1c\n\r\n\x05\x05\x04\x02\0\x01\x12\x04\xa3\ - \x04\x02\x17\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\xa3\x04\x1a\x1b\n;\n\ - \x04\x05\x04\x02\x01\x12\x04\xa6\x04\x02\x0e\x1a-\x20Comment,\x20includi\ - ng\x20comment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x04\x02\x01\x01\ - \x12\x04\xa6\x04\x02\t\n\r\n\x05\x05\x04\x02\x01\x02\x12\x04\xa6\x04\x0c\ - \r\n\x1b\n\x04\x05\x04\x02\x02\x12\x04\xa9\x04\x02\x1b\x1a\r\x20`;`\x20`\ - .`\x20`,`\n\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\xa9\x04\x02\x16\n\r\n\ - \x05\x05\x04\x02\x02\x02\x12\x04\xa9\x04\x19\x1a\n2\n\x04\x05\x04\x02\ - \x03\x12\x04\xab\x04\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\ - \x20syntactically\n\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\xab\x04\x02\ - \x14\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\xab\x04\x17\x18\n5\n\x04\x05\ - \x04\x02\x04\x12\x04\xae\x04\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return\ - `,\x20`class`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\xae\x04\ - \x02\t\n\r\n\x05\x05\x04\x02\x04\x02\x12\x04\xae\x04\x0c\r\n\x0c\n\x04\ - \x05\x04\x02\x05\x12\x04\xaf\x04\x02,\n\r\n\x05\x05\x04\x02\x05\x01\x12\ - \x04\xaf\x04\x02\x13\n\r\n\x05\x05\x04\x02\x05\x02\x12\x04\xaf\x04\x16\ - \x17\n\r\n\x05\x05\x04\x02\x05\x03\x12\x04\xaf\x04\x18+\n\x0e\n\x06\x05\ - \x04\x02\x05\x03\x01\x12\x04\xaf\x04\x19*\n\x1e\n\x04\x05\x04\x02\x06\ - \x12\x04\xb2\x04\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\ - \x04\x02\x06\x01\x12\x04\xb2\x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\ - \x12\x04\xb2\x04\x17\x18\nX\n\x04\x05\x04\x02\x07\x12\x04\xb5\x04\x02\ - \x11\x1aJ\x20non-specific\x20catch-all\x20for\x20any\x20identifier\x20no\ - t\x20better\x20described\x20elsewhere\n\n\r\n\x05\x05\x04\x02\x07\x01\ - \x12\x04\xb5\x04\x02\x0c\n\r\n\x05\x05\x04\x02\x07\x02\x12\x04\xb5\x04\ - \x0f\x10\nN\n\x04\x05\x04\x02\x08\x12\x04\xb7\x04\x02\x18\x1a@\x20Identi\ - fiers\x20builtin\x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\ - \x20Python.\n\n\r\n\x05\x05\x04\x02\x08\x01\x12\x04\xb7\x04\x02\x13\n\r\ - \n\x05\x05\x04\x02\x08\x02\x12\x04\xb7\x04\x16\x17\n[\n\x04\x05\x04\x02\ - \t\x12\x04\xb9\x04\x02\x15\x1aM\x20Identifiers\x20representing\x20`null`\ - -like\x20values:\x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\ - \n\x05\x05\x04\x02\t\x01\x12\x04\xb9\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\ - \x02\x12\x04\xb9\x04\x13\x14\n.\n\x04\x05\x04\x02\n\x12\x04\xbb\x04\x02\ - \x19\x1a\x20\x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\ - \x05\x05\x04\x02\n\x01\x12\x04\xbb\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\ - \x02\x12\x04\xbb\x04\x17\x18\n'\n\x04\x05\x04\x02\x0b\x12\x04\xbd\x04\ - \x02\x1f\x1a\x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\ - \x05\x04\x02\x0b\x01\x12\x04\xbd\x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\ - \x02\x12\x04\xbd\x04\x1c\x1e\n3\n\x04\x05\x04\x02\x0c\x12\x04\xbf\x04\ - \x02\x1b\x1a%\x20Parameter\x20definition\x20and\x20references\n\n\r\n\ - \x05\x05\x04\x02\x0c\x01\x12\x04\xbf\x04\x02\x15\n\r\n\x05\x05\x04\x02\ - \x0c\x02\x12\x04\xbf\x04\x18\x1a\nX\n\x04\x05\x04\x02\r\x12\x04\xc1\x04\ - \x02\x17\x1aJ\x20Identifiers\x20for\x20variable\x20definitions\x20and\ - \x20references\x20within\x20a\x20local\x20scope\n\n\r\n\x05\x05\x04\x02\ - \r\x01\x12\x04\xc1\x04\x02\x11\n\r\n\x05\x05\x04\x02\r\x02\x12\x04\xc1\ - \x04\x14\x16\nK\n\x04\x05\x04\x02\x0e\x12\x04\xc3\x04\x02\x1a\x1a=\x20Id\ - entifiers\x20that\x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\ - \x20scope\n\n\r\n\x05\x05\x04\x02\x0e\x01\x12\x04\xc3\x04\x02\x14\n\r\n\ - \x05\x05\x04\x02\x0e\x02\x12\x04\xc3\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\ - \x02\x0f\x12\x04\xc8\x04\x02\x1b\x1a\xbe\x01\x20Identifier\x20representi\ - ng\x20a\x20unit\x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\ - \n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20\ - and\x20JVM\x20languages,\n\x20and\x20a\x20module\x20in\x20languages\x20l\ - ike\x20Python\x20and\x20JavaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\ - \x04\xc8\x04\x02\x15\n\r\n\x05\x05\x04\x02\x0f\x02\x12\x04\xc8\x04\x18\ - \x1a\n\x0c\n\x04\x05\x04\x02\x10\x12\x04\xc9\x04\x02,\n\r\n\x05\x05\x04\ - \x02\x10\x01\x12\x04\xc9\x04\x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\ - \x04\xc9\x04\x15\x17\n\r\n\x05\x05\x04\x02\x10\x03\x12\x04\xc9\x04\x18+\ - \n\x0e\n\x06\x05\x04\x02\x10\x03\x01\x12\x04\xc9\x04\x19*\n4\n\x04\x05\ - \x04\x02\x11\x12\x04\xcc\x04\x02\x1a\x1a&\x20Function\x20references,\x20\ - including\x20calls\n\n\r\n\x05\x05\x04\x02\x11\x01\x12\x04\xcc\x04\x02\ - \x14\n\r\n\x05\x05\x04\x02\x11\x02\x12\x04\xcc\x04\x17\x19\n(\n\x04\x05\ - \x04\x02\x12\x12\x04\xce\x04\x02$\x1a\x1a\x20Function\x20definition\x20o\ - nly\n\n\r\n\x05\x05\x04\x02\x12\x01\x12\x04\xce\x04\x02\x1e\n\r\n\x05\ - \x05\x04\x02\x12\x02\x12\x04\xce\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\ - \xd1\x04\x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocation\ - s\n\n\r\n\x05\x05\x04\x02\x13\x01\x12\x04\xd1\x04\x02\x11\n\r\n\x05\x05\ - \x04\x02\x13\x02\x12\x04\xd1\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\ - \x04\xd3\x04\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\ - \x04\x02\x14\x01\x12\x04\xd3\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\ - \x12\x04\xd3\x04\x1e\x20\n!\n\x04\x05\x04\x02\x15\x12\x04\xd6\x04\x02\ - \x16\x1a\x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\ - \x04\xd6\x04\x02\x10\n\r\n\x05\x05\x04\x02\x15\x02\x12\x04\xd6\x04\x13\ - \x15\nK\n\x04\x05\x04\x02\x16\x12\x04\xd8\x04\x02\x1d\x1a=\x20builtin\ - \x20types\x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int\ - `\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\x16\x01\x12\x04\xd8\x04\x02\x17\n\ - \r\n\x05\x05\x04\x02\x16\x02\x12\x04\xd8\x04\x1a\x1c\n7\n\x04\x05\x04\ - \x02\x17\x12\x04\xdb\x04\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\ - \x20__attribute__\n\n\r\n\x05\x05\x04\x02\x17\x01\x12\x04\xdb\x04\x02\ - \x15\n\r\n\x05\x05\x04\x02\x17\x02\x12\x04\xdb\x04\x18\x1a\n\x14\n\x04\ - \x05\x04\x02\x18\x12\x04\xde\x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\ - \x05\x04\x02\x18\x01\x12\x04\xde\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\ - \x12\x04\xde\x04\x10\x12\n\x18\n\x04\x05\x04\x02\x19\x12\x04\xe0\x04\x02\ - \x15\x1a\n\x20`*`,\x20`+`\n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xe0\ - \x04\x02\x0f\n\r\n\x05\x05\x04\x02\x19\x02\x12\x04\xe0\x04\x12\x14\n\x13\ - \n\x04\x05\x04\x02\x1a\x12\x04\xe2\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\ - \x05\x05\x04\x02\x1a\x01\x12\x04\xe2\x04\x02\x0f\n\r\n\x05\x05\x04\x02\ - \x1a\x02\x12\x04\xe2\x04\x12\x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xe4\ - \x04\x02\x16\x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\ - \x02\x1b\x01\x12\x04\xe4\x04\x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\ - \x04\xe4\x04\x13\x15\n\x18\n\x04\x05\x04\x02\x1c\x12\x04\xe6\x04\x02\x11\ - \x1a\n\x20`|`,\x20`-`\n\n\r\n\x05\x05\x04\x02\x1c\x01\x12\x04\xe6\x04\ - \x02\x0b\n\r\n\x05\x05\x04\x02\x1c\x02\x12\x04\xe6\x04\x0e\x10\n0\n\x04\ - \x05\x04\x02\x1d\x12\x04\xe9\x04\x02\x15\x1a\"\x20Literal\x20strings:\ - \x20\"Hello,\x20world!\"\n\n\r\n\x05\x05\x04\x02\x1d\x01\x12\x04\xe9\x04\ - \x02\x0f\n\r\n\x05\x05\x04\x02\x1d\x02\x12\x04\xe9\x04\x12\x14\n-\n\x04\ - \x05\x04\x02\x1e\x12\x04\xeb\x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes\ - :\x20\"\\t\",\x20\"\\n\"\n\n\r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xeb\x04\ - \x02\x15\n\r\n\x05\x05\x04\x02\x1e\x02\x12\x04\xeb\x04\x18\x1a\n_\n\x04\ - \x05\x04\x02\x1f\x12\x04\xed\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20\ - strings,\x20special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20\ - format\x20strings\n\n\r\n\x05\x05\x04\x02\x1f\x01\x12\x04\xed\x04\x02\ - \x16\n\r\n\x05\x05\x04\x02\x1f\x02\x12\x04\xed\x04\x19\x1b\nG\n\x04\x05\ - \x04\x02\x20\x12\x04\xef\x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\ - \":\x20\"value\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\ - \x05\x05\x04\x02\x20\x01\x12\x04\xef\x04\x02\x12\n\r\n\x05\x05\x04\x02\ - \x20\x02\x12\x04\xef\x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xf1\x04\ - \x02\x18\x1aH\x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20dif\ - ferentiate\x20strings\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\ - \x12\x04\xf1\x04\x02\x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xf1\x04\x15\ - \x17\n9\n\x04\x05\x04\x02\"\x12\x04\xf3\x04\x02\x16\x1a+\x20Literal\x20n\ - umbers,\x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\ - \x01\x12\x04\xf3\x04\x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xf3\x04\ - \x13\x15\n\x1f\n\x04\x05\x04\x02#\x12\x04\xf5\x04\x02\x16\x1a\x11\x20`tr\ - ue`,\x20`false`\n\n\r\n\x05\x05\x04\x02#\x01\x12\x04\xf5\x04\x02\x10\n\r\ - \n\x05\x05\x04\x02#\x02\x12\x04\xf5\x04\x13\x15\n&\n\x04\x05\x04\x02$\ - \x12\x04\xf8\x04\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\ - \r\n\x05\x05\x04\x02$\x01\x12\x04\xf8\x04\x02\x05\n\r\n\x05\x05\x04\x02$\ - \x02\x12\x04\xf8\x04\x08\n\n/\n\x04\x05\x04\x02%\x12\x04\xfa\x04\x02\x14\ - \x1a!\x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\ - \x02%\x01\x12\x04\xfa\x04\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\xfa\ - \x04\x11\x13\n,\n\x04\x05\x04\x02&\x12\x04\xfc\x04\x02\x14\x1a\x1e\x20De\ - limiters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\ - \xfc\x04\x02\x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\xfc\x04\x11\x13\n\ - \xf9\x01\n\x02\x04\n\x12\x06\x84\x05\0\xe5\x05\x01\x1a\xea\x01\x20Occurr\ - ence\x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20\ - and/or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20index\ - ers\x20should\x20try\x20to\x20bundle\x20logically\x20related\x20informat\ - ion\n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20t\ - o\x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\n\x01\x12\x04\x84\x05\ - \x08\x12\n\xe8\x08\n\x04\x04\n\x02\0\x12\x04\x9c\x05\x02\x1b\x1a\xd9\x08\ - \x20Half-open\x20[start,\x20end)\x20range\x20of\x20this\x20occurrence.\ - \x20Must\x20be\x20exactly\x20three\x20or\x20four\n\x20elements:\n\n\x20-\ - \x20Four\x20elements:\x20`[startLine,\x20startCharacter,\x20endLine,\x20\ - endCharacter]`\n\x20-\x20Three\x20elements:\x20`[startLine,\x20startChar\ - acter,\x20endCharacter]`.\x20The\x20end\x20line\n\x20\x20\x20is\x20infer\ - red\x20to\x20have\x20the\x20same\x20value\x20as\x20the\x20start\x20line.\ - \n\n\x20It\x20is\x20allowed\x20for\x20the\x20range\x20to\x20be\x20empty\ - \x20(i.e.\x20start==end).\n\n\x20Line\x20numbers\x20and\x20characters\ - \x20are\x20always\x200-based.\x20Make\x20sure\x20to\x20increment\x20the\ - \n\x20line/character\x20values\x20before\x20displaying\x20them\x20in\x20\ - an\x20editor-like\x20UI\x20because\n\x20editors\x20conventionally\x20use\ - \x201-based\x20numbers.\n\n\x20The\x20'character'\x20value\x20is\x20inte\ - rpreted\x20based\x20on\x20the\x20PositionEncoding\x20for\n\x20the\x20Doc\ - ument.\n\n\x20Historical\x20note:\x20the\x20original\x20draft\x20of\x20t\ - his\x20schema\x20had\x20a\x20`Range`\x20message\n\x20type\x20with\x20`st\ - art`\x20and\x20`end`\x20fields\x20of\x20type\x20`Position`,\x20mirroring\ - \x20LSP.\n\x20Benchmarks\x20revealed\x20that\x20this\x20encoding\x20was\ - \x20inefficient\x20and\x20that\x20we\x20could\n\x20reduce\x20the\x20tota\ - l\x20payload\x20size\x20of\x20an\x20index\x20by\x2050%\x20by\x20using\ - \x20`repeated\x20int32`\n\x20instead.\x20The\x20`repeated\x20int32`\x20e\ - ncoding\x20is\x20admittedly\x20more\x20embarrassing\x20to\n\x20work\x20w\ - ith\x20in\x20some\x20programming\x20languages\x20but\x20we\x20hope\x20th\ - e\x20performance\n\x20improvements\x20make\x20up\x20for\x20it.\n\n\r\n\ - \x05\x04\n\x02\0\x04\x12\x04\x9c\x05\x02\n\n\r\n\x05\x04\n\x02\0\x05\x12\ - \x04\x9c\x05\x0b\x10\n\r\n\x05\x04\n\x02\0\x01\x12\x04\x9c\x05\x11\x16\n\ - \r\n\x05\x04\n\x02\0\x03\x12\x04\x9c\x05\x19\x1a\n\x8a\x01\n\x04\x04\n\ - \x02\x01\x12\x04\x9f\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20\ - that\x20appears\x20at\x20this\x20position.\x20See\n\x20`SymbolInformatio\ - n.symbol`\x20for\x20how\x20to\x20format\x20symbols\x20as\x20strings.\n\n\ - \r\n\x05\x04\n\x02\x01\x05\x12\x04\x9f\x05\x02\x08\n\r\n\x05\x04\n\x02\ - \x01\x01\x12\x04\x9f\x05\t\x0f\n\r\n\x05\x04\n\x02\x01\x03\x12\x04\x9f\ - \x05\x12\x13\n\x97\x01\n\x04\x04\n\x02\x02\x12\x04\xa2\x05\x02\x19\x1a\ - \x88\x01\x20(optional)\x20Bitset\x20containing\x20`SymbolRole`s\x20in\ - \x20this\x20occurrence.\n\x20See\x20`SymbolRole`'s\x20documentation\x20f\ - or\x20how\x20to\x20read\x20and\x20write\x20this\x20field.\n\n\r\n\x05\ - \x04\n\x02\x02\x05\x12\x04\xa2\x05\x02\x07\n\r\n\x05\x04\n\x02\x02\x01\ - \x12\x04\xa2\x05\x08\x14\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xa2\x05\x17\ - \x18\n\xf1\x03\n\x04\x04\n\x02\x03\x12\x04\xab\x05\x02-\x1a\xe2\x03\x20(\ - optional)\x20CommonMark-formatted\x20documentation\x20for\x20this\x20spe\ - cific\x20range.\x20If\n\x20empty,\x20the\x20`Symbol.documentation`\x20fi\ - eld\x20is\x20used\x20instead.\x20One\x20example\n\x20where\x20this\x20fi\ - eld\x20might\x20be\x20useful\x20is\x20when\x20the\x20symbol\x20represent\ - s\x20a\x20generic\n\x20function\x20(with\x20abstract\x20type\x20paramete\ - rs\x20such\x20as\x20`List`)\x20and\x20at\x20this\n\x20occurrence\x20w\ - e\x20know\x20the\x20exact\x20values\x20(such\x20as\x20`List`).\n\ - \n\x20This\x20field\x20can\x20also\x20be\x20used\x20for\x20dynamically\ - \x20or\x20gradually\x20typed\x20languages,\n\x20which\x20commonly\x20all\ - ow\x20for\x20type-changing\x20assignment.\n\n\r\n\x05\x04\n\x02\x03\x04\ - \x12\x04\xab\x05\x02\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\xab\x05\x0b\ - \x11\n\r\n\x05\x04\n\x02\x03\x01\x12\x04\xab\x05\x12(\n\r\n\x05\x04\n\ - \x02\x03\x03\x12\x04\xab\x05+,\nX\n\x04\x04\n\x02\x04\x12\x04\xad\x05\ - \x02\x1d\x1aJ\x20(optional)\x20What\x20syntax\x20highlighting\x20class\ - \x20should\x20be\x20used\x20for\x20this\x20range?\n\n\r\n\x05\x04\n\x02\ - \x04\x06\x12\x04\xad\x05\x02\x0c\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xad\ - \x05\r\x18\n\r\n\x05\x04\n\x02\x04\x03\x12\x04\xad\x05\x1b\x1c\nW\n\x04\ - \x04\n\x02\x05\x12\x04\xaf\x05\x02&\x1aI\x20(optional)\x20Diagnostics\ - \x20that\x20have\x20been\x20reported\x20for\x20this\x20specific\x20range\ - .\n\n\r\n\x05\x04\n\x02\x05\x04\x12\x04\xaf\x05\x02\n\n\r\n\x05\x04\n\ - \x02\x05\x06\x12\x04\xaf\x05\x0b\x15\n\r\n\x05\x04\n\x02\x05\x01\x12\x04\ - \xaf\x05\x16!\n\r\n\x05\x04\n\x02\x05\x03\x12\x04\xaf\x05$%\n\xb7\x0e\n\ - \x04\x04\n\x02\x06\x12\x04\xe4\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Usi\ - ng\x20the\x20same\x20encoding\x20as\x20the\x20sibling\x20`range`\x20fiel\ - d,\x20half-open\n\x20source\x20range\x20of\x20the\x20nearest\x20non-triv\ - ial\x20enclosing\x20AST\x20node.\x20This\x20range\x20must\n\x20enclose\ - \x20the\x20`range`\x20field.\x20Example\x20applications\x20that\x20make\ - \x20use\x20of\x20the\n\x20enclosing_range\x20field:\n\n\x20-\x20Call\x20\ - hierarchies:\x20to\x20determine\x20what\x20symbols\x20are\x20references\ - \x20from\x20the\x20body\n\x20\x20\x20of\x20a\x20function\n\x20-\x20Symbo\ - l\x20outline:\x20to\x20display\x20breadcrumbs\x20from\x20the\x20cursor\ - \x20position\x20to\x20the\n\x20\x20\x20root\x20of\x20the\x20file\n\x20-\ - \x20Expand\x20selection:\x20to\x20select\x20the\x20nearest\x20enclosing\ - \x20AST\x20node.\n\x20-\x20Highlight\x20range:\x20to\x20indicate\x20the\ - \x20AST\x20expression\x20that\x20is\x20associated\x20with\x20a\n\x20\x20\ - \x20hover\x20popover\n\n\x20For\x20definition\x20occurrences,\x20the\x20\ - enclosing\x20range\x20should\x20indicate\x20the\n\x20start/end\x20bounds\ - \x20of\x20the\x20entire\x20definition\x20AST\x20node,\x20including\n\x20\ - documentation.\n\x20```\n\x20const\x20n\x20=\x203\n\x20\x20\x20\x20\x20\ - \x20\x20^\x20range\n\x20^^^^^^^^^^^\x20enclosing_range\n\n\x20/**\x20Par\ - ses\x20the\x20string\x20into\x20something\x20*/\n\x20^\x20enclosing_rang\ - e\x20start\x20--------------------------------------|\n\x20function\x20p\ - arse(input\x20string):\x20string\x20{\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20range\x20\x20\x20\x20\x20\ + \x20`ParseStreaming`.\n\n\x0c\n\x05\x04\0\x02\x02\x04\x12\x03&\x02\n\n\ + \x0c\n\x05\x04\0\x02\x02\x06\x12\x03&\x0b\x1c\n\x0c\n\x05\x04\0\x02\x02\ + \x01\x12\x03&\x1d-\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x03&01\n\n\n\x02\ + \x04\x01\x12\x04+\08\x01\n\n\n\x03\x04\x01\x01\x12\x03+\x08\x10\nN\n\x04\ + \x04\x01\x02\0\x12\x03-\x02\x1e\x1aA\x20Which\x20version\x20of\x20this\ + \x20protocol\x20was\x20used\x20to\x20generate\x20this\x20index?\n\n\x0c\ + \n\x05\x04\x01\x02\0\x06\x12\x03-\x02\x11\n\x0c\n\x05\x04\x01\x02\0\x01\ + \x12\x03-\x12\x19\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03-\x1c\x1d\nC\n\ + \x04\x04\x01\x02\x01\x12\x03/\x02\x19\x1a6\x20Information\x20about\x20th\ + e\x20tool\x20that\x20produced\x20this\x20index.\n\n\x0c\n\x05\x04\x01\ + \x02\x01\x06\x12\x03/\x02\n\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03/\x0b\ + \x14\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03/\x17\x18\n\xa2\x01\n\x04\ + \x04\x01\x02\x02\x12\x033\x02\x1a\x1a\x94\x01\x20URI-encoded\x20absolute\ + \x20path\x20to\x20the\x20root\x20directory\x20of\x20this\x20index.\x20Al\ + l\n\x20documents\x20in\x20this\x20index\x20must\x20appear\x20in\x20a\x20\ + subdirectory\x20of\x20this\x20root\n\x20directory.\n\n\x0c\n\x05\x04\x01\ + \x02\x02\x05\x12\x033\x02\x08\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x033\t\ + \x15\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\x033\x18\x19\n\xe0\x01\n\x04\ + \x04\x01\x02\x03\x12\x037\x02*\x1a\xd2\x01\x20Text\x20encoding\x20of\x20\ + the\x20source\x20files\x20on\x20disk\x20that\x20are\x20referenced\x20fro\ + m\n\x20`Document.relative_path`.\x20This\x20value\x20is\x20unrelated\x20\ + to\x20the\x20`Document.text`\n\x20field,\x20which\x20is\x20a\x20Protobuf\ + \x20string\x20and\x20hence\x20must\x20be\x20UTF-8\x20encoded.\n\n\x0c\n\ + \x05\x04\x01\x02\x03\x06\x12\x037\x02\x0e\n\x0c\n\x05\x04\x01\x02\x03\ + \x01\x12\x037\x0f%\n\x0c\n\x05\x04\x01\x02\x03\x03\x12\x037()\n\n\n\x02\ + \x05\0\x12\x04:\0<\x01\n\n\n\x03\x05\0\x01\x12\x03:\x05\x14\n\x0b\n\x04\ + \x05\0\x02\0\x12\x03;\x02!\n\x0c\n\x05\x05\0\x02\0\x01\x12\x03;\x02\x1c\ + \n\x0c\n\x05\x05\0\x02\0\x02\x12\x03;\x1f\x20\n\n\n\x02\x05\x01\x12\x04>\ + \0B\x01\n\n\n\x03\x05\x01\x01\x12\x03>\x05\x11\n\x0b\n\x04\x05\x01\x02\0\ + \x12\x03?\x02\x1e\n\x0c\n\x05\x05\x01\x02\0\x01\x12\x03?\x02\x19\n\x0c\n\ + \x05\x05\x01\x02\0\x02\x12\x03?\x1c\x1d\n\x0b\n\x04\x05\x01\x02\x01\x12\ + \x03@\x02\x0b\n\x0c\n\x05\x05\x01\x02\x01\x01\x12\x03@\x02\x06\n\x0c\n\ + \x05\x05\x01\x02\x01\x02\x12\x03@\t\n\n\x0b\n\x04\x05\x01\x02\x02\x12\ + \x03A\x02\x0c\n\x0c\n\x05\x05\x01\x02\x02\x01\x12\x03A\x02\x07\n\x0c\n\ + \x05\x05\x01\x02\x02\x02\x12\x03A\n\x0b\n\n\n\x02\x04\x02\x12\x04D\0K\ + \x01\n\n\n\x03\x04\x02\x01\x12\x03D\x08\x10\n<\n\x04\x04\x02\x02\0\x12\ + \x03F\x02\x12\x1a/\x20Name\x20of\x20the\x20indexer\x20that\x20produced\ + \x20this\x20index.\n\n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03F\x02\x08\n\ + \x0c\n\x05\x04\x02\x02\0\x01\x12\x03F\t\r\n\x0c\n\x05\x04\x02\x02\0\x03\ + \x12\x03F\x10\x11\n?\n\x04\x04\x02\x02\x01\x12\x03H\x02\x15\x1a2\x20Vers\ + ion\x20of\x20the\x20indexer\x20that\x20produced\x20this\x20index.\n\n\ + \x0c\n\x05\x04\x02\x02\x01\x05\x12\x03H\x02\x08\n\x0c\n\x05\x04\x02\x02\ + \x01\x01\x12\x03H\t\x10\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03H\x13\x14\ + \nL\n\x04\x04\x02\x02\x02\x12\x03J\x02\x20\x1a?\x20Command-line\x20argum\ + ents\x20that\x20were\x20used\x20to\x20invoke\x20this\x20indexer.\n\n\x0c\ + \n\x05\x04\x02\x02\x02\x04\x12\x03J\x02\n\n\x0c\n\x05\x04\x02\x02\x02\ + \x05\x12\x03J\x0b\x11\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03J\x12\x1b\n\ + \x0c\n\x05\x04\x02\x02\x02\x03\x12\x03J\x1e\x1f\nH\n\x02\x04\x03\x12\x04\ + N\0y\x01\x1a<\x20Document\x20defines\x20the\x20metadata\x20about\x20a\ + \x20source\x20file\x20on\x20disk.\n\n\n\n\x03\x04\x03\x01\x12\x03N\x08\ + \x10\n\xa5\x02\n\x04\x04\x03\x02\0\x12\x03S\x02\x16\x1a\x97\x02\x20The\ + \x20string\x20ID\x20for\x20the\x20programming\x20language\x20this\x20fil\ + e\x20is\x20written\x20in.\n\x20The\x20`Language`\x20enum\x20contains\x20\ + the\x20names\x20of\x20most\x20common\x20programming\x20languages.\n\x20T\ + his\x20field\x20is\x20typed\x20as\x20a\x20string\x20to\x20permit\x20any\ + \x20programming\x20language,\x20including\n\x20ones\x20that\x20are\x20no\ + t\x20specified\x20by\x20the\x20`Language`\x20enum.\n\n\x0c\n\x05\x04\x03\ + \x02\0\x05\x12\x03S\x02\x08\n\x0c\n\x05\x04\x03\x02\0\x01\x12\x03S\t\x11\ + \n\x0c\n\x05\x04\x03\x02\0\x03\x12\x03S\x14\x15\n\xb5\x03\n\x04\x04\x03\ + \x02\x01\x12\x03]\x02\x1b\x1a\xa7\x03\x20(Required)\x20Unique\x20path\ + \x20to\x20the\x20text\x20document.\n\n\x201.\x20The\x20path\x20must\x20b\ + e\x20relative\x20to\x20the\x20directory\x20supplied\x20in\x20the\x20asso\ + ciated\n\x20\x20\x20\x20`Metadata.project_root`.\n\x202.\x20The\x20path\ + \x20must\x20not\x20begin\x20with\x20a\x20leading\x20'/'.\n\x203.\x20The\ + \x20path\x20must\x20point\x20to\x20a\x20regular\x20file,\x20not\x20a\x20\ + symbolic\x20link.\n\x204.\x20The\x20path\x20must\x20use\x20'/'\x20as\x20\ + the\x20separator,\x20including\x20on\x20Windows.\n\x205.\x20The\x20path\ + \x20must\x20be\x20canonical;\x20it\x20cannot\x20include\x20empty\x20comp\ + onents\x20('//'),\n\x20\x20\x20\x20or\x20'.'\x20or\x20'..'.\n\n\x0c\n\ + \x05\x04\x03\x02\x01\x05\x12\x03]\x02\x08\n\x0c\n\x05\x04\x03\x02\x01\ + \x01\x12\x03]\t\x16\n\x0c\n\x05\x04\x03\x02\x01\x03\x12\x03]\x19\x1a\n4\ + \n\x04\x04\x03\x02\x02\x12\x03_\x02&\x1a'\x20Occurrences\x20that\x20appe\ + ar\x20in\x20this\x20file.\n\n\x0c\n\x05\x04\x03\x02\x02\x04\x12\x03_\x02\ + \n\n\x0c\n\x05\x04\x03\x02\x02\x06\x12\x03_\x0b\x15\n\x0c\n\x05\x04\x03\ + \x02\x02\x01\x12\x03_\x16!\n\x0c\n\x05\x04\x03\x02\x02\x03\x12\x03_$%\n\ + \xea\x01\n\x04\x04\x03\x02\x03\x12\x03e\x02)\x1a\xdc\x01\x20Symbols\x20t\ + hat\x20are\x20\"defined\"\x20within\x20this\x20document.\n\n\x20This\x20\ + should\x20include\x20symbols\x20which\x20technically\x20do\x20not\x20hav\ + e\x20any\x20definition,\n\x20but\x20have\x20a\x20reference\x20and\x20are\ + \x20defined\x20by\x20some\x20other\x20symbol\x20(see\n\x20Relationship.i\ + s_definition).\n\n\x0c\n\x05\x04\x03\x02\x03\x04\x12\x03e\x02\n\n\x0c\n\ + \x05\x04\x03\x02\x03\x06\x12\x03e\x0b\x1c\n\x0c\n\x05\x04\x03\x02\x03\ + \x01\x12\x03e\x1d$\n\x0c\n\x05\x04\x03\x02\x03\x03\x12\x03e'(\n\x80\x03\ + \n\x04\x04\x03\x02\x04\x12\x03l\x02\x12\x1a\xf2\x02\x20(optional)\x20Tex\ + t\x20contents\x20of\x20this\x20document.\x20Indexers\x20are\x20not\x20ex\ + pected\x20to\n\x20include\x20the\x20text\x20by\x20default.\x20It's\x20pr\ + eferable\x20that\x20clients\x20read\x20the\x20text\n\x20contents\x20from\ + \x20the\x20file\x20system\x20by\x20resolving\x20the\x20absolute\x20path\ + \x20from\x20joining\n\x20`Index.metadata.project_root`\x20and\x20`Docume\ + nt.relative_path`.\x20This\x20field\n\x20can\x20be\x20useful\x20for\x20t\ + esting\x20or\x20when\x20working\x20with\x20virtual/in-memory\x20document\ + s.\n\n\x0c\n\x05\x04\x03\x02\x04\x05\x12\x03l\x02\x08\n\x0c\n\x05\x04\ + \x03\x02\x04\x01\x12\x03l\t\r\n\x0c\n\x05\x04\x03\x02\x04\x03\x12\x03l\ + \x10\x11\n\xe7\x03\n\x04\x04\x03\x02\x05\x12\x03x\x02)\x1a\xd9\x03\x20Sp\ + ecifies\x20the\x20encoding\x20used\x20for\x20source\x20ranges\x20in\x20t\ + his\x20Document.\n\n\x20Usually,\x20this\x20will\x20match\x20the\x20type\ + \x20used\x20to\x20index\x20the\x20string\x20type\n\x20in\x20the\x20index\ + er's\x20implementation\x20language\x20in\x20O(1)\x20time.\n\x20-\x20For\ + \x20an\x20indexer\x20implemented\x20in\x20JVM/.NET\x20language\x20or\x20\ + JavaScript/TypeScript,\n\x20\x20\x20use\x20UTF16CodeUnitOffsetFromLineSt\ + art.\n\x20-\x20For\x20an\x20indexer\x20implemented\x20in\x20Python,\n\ + \x20\x20\x20use\x20UTF32CodeUnitOffsetFromLineStart.\n\x20-\x20For\x20an\ + \x20indexer\x20implemented\x20in\x20Go,\x20Rust\x20or\x20C++,\n\x20\x20\ + \x20use\x20UTF8ByteOffsetFromLineStart.\n\n\x0c\n\x05\x04\x03\x02\x05\ + \x06\x12\x03x\x02\x12\n\x0c\n\x05\x04\x03\x02\x05\x01\x12\x03x\x13$\n\ + \x0c\n\x05\x04\x03\x02\x05\x03\x12\x03x'(\nQ\n\x02\x05\x02\x12\x05|\0\ + \x94\x01\x01\x1aD\x20Encoding\x20used\x20to\x20interpret\x20the\x20'char\ + acter'\x20value\x20in\x20source\x20ranges.\n\n\n\n\x03\x05\x02\x01\x12\ + \x03|\x05\x15\n\x93\x01\n\x04\x05\x02\x02\0\x12\x03\x7f\x02\"\x1a\x85\ + \x01\x20Default\x20value.\x20This\x20value\x20should\x20not\x20be\x20use\ + d\x20by\x20new\x20SCIP\x20indexers\n\x20so\x20that\x20a\x20consumer\x20c\ + an\x20process\x20the\x20SCIP\x20index\x20without\x20ambiguity.\n\n\x0c\n\ + \x05\x05\x02\x02\0\x01\x12\x03\x7f\x02\x1d\n\x0c\n\x05\x05\x02\x02\0\x02\ + \x12\x03\x7f\x20!\n\xf7\x01\n\x04\x05\x02\x02\x01\x12\x04\x86\x01\x02&\ + \x1a\xe8\x01\x20The\x20'character'\x20value\x20is\x20interpreted\x20as\ + \x20an\x20offset\x20in\x20terms\n\x20of\x20UTF-8\x20code\x20units\x20(i.\ + e.\x20bytes).\n\n\x20Example:\x20For\x20the\x20string\x20\"\xf0\x9f\x9a\ + \x80\x20Woo\"\x20in\x20UTF-8,\x20the\x20bytes\x20are\n\x20[240,\x20159,\ + \x20154,\x20128,\x2032,\x2087,\x20111,\x20111],\x20so\x20the\x20offset\ + \x20for\x20'W'\n\x20would\x20be\x205.\n\n\r\n\x05\x05\x02\x02\x01\x01\ + \x12\x04\x86\x01\x02!\n\r\n\x05\x05\x02\x02\x01\x02\x12\x04\x86\x01$%\n\ + \x82\x02\n\x04\x05\x02\x02\x02\x12\x04\x8d\x01\x02'\x1a\xf3\x01\x20The\ + \x20'character'\x20value\x20is\x20interpreted\x20as\x20an\x20offset\x20i\ + n\x20terms\n\x20of\x20UTF-16\x20code\x20units\x20(each\x20is\x202\x20byt\ + es).\n\n\x20Example:\x20For\x20the\x20string\x20\"\xf0\x9f\x9a\x80\x20Wo\ + o\",\x20the\x20UTF-16\x20code\x20units\x20are\n\x20['\\ud83d',\x20'\\ude\ + 80',\x20'\x20',\x20'W',\x20'o',\x20'o'],\x20so\x20the\x20offset\x20for\ + \x20'W'\n\x20would\x20be\x203.\n\n\r\n\x05\x05\x02\x02\x02\x01\x12\x04\ + \x8d\x01\x02\"\n\r\n\x05\x05\x02\x02\x02\x02\x12\x04\x8d\x01%&\n\xf5\x01\ + \n\x04\x05\x02\x02\x03\x12\x04\x93\x01\x02'\x1a\xe6\x01\x20The\x20'chara\ + cter'\x20value\x20is\x20interpreted\x20as\x20an\x20offset\x20in\x20terms\ + \n\x20of\x20UTF-32\x20code\x20units\x20(each\x20is\x204\x20bytes).\n\n\ + \x20Example:\x20For\x20the\x20string\x20\"\xf0\x9f\x9a\x80\x20Woo\",\x20\ + the\x20UTF-32\x20code\x20units\x20are\n\x20['\xf0\x9f\x9a\x80',\x20'\x20\ + ',\x20'W',\x20'o',\x20'o'],\x20so\x20the\x20offset\x20for\x20'W'\x20woul\ + d\x20be\x202.\n\n\r\n\x05\x05\x02\x02\x03\x01\x12\x04\x93\x01\x02\"\n\r\ + \n\x05\x05\x02\x02\x03\x02\x12\x04\x93\x01%&\n\xcc\x12\n\x02\x04\x04\x12\ + \x06\xc0\x01\0\xc4\x01\x01\x1a\xbd\x12\x20Symbol\x20is\x20similar\x20to\ + \x20a\x20URI,\x20it\x20identifies\x20a\x20class,\x20method,\x20or\x20a\ + \x20local\n\x20variable.\x20`SymbolInformation`\x20contains\x20rich\x20m\ + etadata\x20about\x20symbols\x20such\x20as\n\x20the\x20docstring.\n\n\x20\ + Symbol\x20has\x20a\x20standardized\x20string\x20representation,\x20which\ + \x20can\x20be\x20used\n\x20interchangeably\x20with\x20`Symbol`.\x20The\ + \x20syntax\x20for\x20Symbol\x20is\x20the\x20following:\n\x20```\n\x20#\ + \x20()+\x20stands\x20for\x20one\x20or\x20more\x20repetitions\x20of\ + \x20\n\x20#\x20()?\x20stands\x20for\x20zero\x20or\x20one\x20occurr\ + ence\x20of\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20::=\x20\x20'\x20'\x20\x20'\x20'\x20\ + ()+\x20|\x20'local\x20'\x20\n\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'\ + \x20'\x20\x20'\x20'\x20\n\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20any\x20UTF-8,\x20\ + escape\x20spaces\x20with\x20double\x20space.\x20Must\x20not\x20be\x20emp\ + ty\x20nor\x20start\x20with\x20'local'\n\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20any\x20UTF-8,\x20escape\x20sp\ + aces\x20with\x20double\x20space.\x20Use\x20the\x20placeholder\x20'.'\x20\ + to\x20indicate\x20an\x20empty\x20value\n\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20above\n\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20same\x20as\ + \x20above\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\ + :=\x20\x20|\x20\x20|\x20\x20|\x20\x20|\ + \x20\x20|\x20\x20|\x20\x20|\x20\ + \n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\ + \x20'/'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20::=\x20\x20'#'\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'.'\ + \n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20::=\x20\x20':'\n\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'!'\n\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'('\x20()?\x20').'\n\x20\x20\ + \x20\x20\x20\x20\x20\x20::=\x20'['\x20\x20']'\n\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20'('\x20\x20')'\ + \n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20::=\x20\n\x20\x20::=\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20::=\x20\x20|\x20\n\x20\x20\x20\x20\x20::=\x20()+\n\x20\x20::=\x20'_'\x20|\x20'+'\x20|\x20'-'\x20|\x20'$'\x20|\ + \x20ASCII\x20letter\x20or\x20digit\n\x20\x20\x20\x20\ + ::=\x20'`'\x20()+\x20'`',\x20must\x20contain\x20at\ + \x20least\x20one\x20non-\n\x20\ + \x20\x20\x20::=\x20any\x20UTF-8,\x20escape\x20backticks\x20with\x20doubl\ + e\x20backtick.\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20::=\x20\n\x20```\n\n\x20The\x20list\x20of\ + \x20descriptors\x20for\x20a\x20symbol\x20should\x20together\x20form\x20a\ + \x20fully\n\x20qualified\x20name\x20for\x20the\x20symbol.\x20That\x20is,\ + \x20it\x20should\x20serve\x20as\x20a\x20unique\n\x20identifier\x20across\ + \x20the\x20package.\x20Typically,\x20it\x20will\x20include\x20one\x20des\ + criptor\n\x20for\x20every\x20node\x20in\x20the\x20AST\x20(along\x20the\ + \x20ancestry\x20path)\x20between\x20the\x20root\x20of\n\x20the\x20file\ + \x20and\x20the\x20node\x20corresponding\x20to\x20the\x20symbol.\n\n\x20L\ + ocal\x20symbols\x20MUST\x20only\x20be\x20used\x20for\x20entities\x20whic\ + h\x20are\x20local\x20to\x20a\x20Document,\n\x20and\x20cannot\x20be\x20ac\ + cessed\x20from\x20outside\x20the\x20Document.\n\n\x0b\n\x03\x04\x04\x01\ + \x12\x04\xc0\x01\x08\x0e\n\x0c\n\x04\x04\x04\x02\0\x12\x04\xc1\x01\x02\ + \x14\n\r\n\x05\x04\x04\x02\0\x05\x12\x04\xc1\x01\x02\x08\n\r\n\x05\x04\ + \x04\x02\0\x01\x12\x04\xc1\x01\t\x0f\n\r\n\x05\x04\x04\x02\0\x03\x12\x04\ + \xc1\x01\x12\x13\n\x0c\n\x04\x04\x04\x02\x01\x12\x04\xc2\x01\x02\x16\n\r\ + \n\x05\x04\x04\x02\x01\x06\x12\x04\xc2\x01\x02\t\n\r\n\x05\x04\x04\x02\ + \x01\x01\x12\x04\xc2\x01\n\x11\n\r\n\x05\x04\x04\x02\x01\x03\x12\x04\xc2\ + \x01\x14\x15\n\x0c\n\x04\x04\x04\x02\x02\x12\x04\xc3\x01\x02&\n\r\n\x05\ + \x04\x04\x02\x02\x04\x12\x04\xc3\x01\x02\n\n\r\n\x05\x04\x04\x02\x02\x06\ + \x12\x04\xc3\x01\x0b\x15\n\r\n\x05\x04\x04\x02\x02\x01\x12\x04\xc3\x01\ + \x16!\n\r\n\x05\x04\x04\x02\x02\x03\x12\x04\xc3\x01$%\nq\n\x02\x04\x05\ + \x12\x06\xc9\x01\0\xcd\x01\x01\x1ac\x20Unit\x20of\x20packaging\x20and\ + \x20distribution.\n\n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20modu\ + le\x20in\x20Go\x20and\x20JVM\x20languages.\n\n\x0b\n\x03\x04\x05\x01\x12\ + \x04\xc9\x01\x08\x0f\n\x0c\n\x04\x04\x05\x02\0\x12\x04\xca\x01\x02\x15\n\ + \r\n\x05\x04\x05\x02\0\x05\x12\x04\xca\x01\x02\x08\n\r\n\x05\x04\x05\x02\ + \0\x01\x12\x04\xca\x01\t\x10\n\r\n\x05\x04\x05\x02\0\x03\x12\x04\xca\x01\ + \x13\x14\n\x0c\n\x04\x04\x05\x02\x01\x12\x04\xcb\x01\x02\x12\n\r\n\x05\ + \x04\x05\x02\x01\x05\x12\x04\xcb\x01\x02\x08\n\r\n\x05\x04\x05\x02\x01\ + \x01\x12\x04\xcb\x01\t\r\n\r\n\x05\x04\x05\x02\x01\x03\x12\x04\xcb\x01\ + \x10\x11\n\x0c\n\x04\x04\x05\x02\x02\x12\x04\xcc\x01\x02\x15\n\r\n\x05\ + \x04\x05\x02\x02\x05\x12\x04\xcc\x01\x02\x08\n\r\n\x05\x04\x05\x02\x02\ + \x01\x12\x04\xcc\x01\t\x10\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\xcc\x01\ + \x13\x14\n\x0c\n\x02\x04\x06\x12\x06\xcf\x01\0\xe8\x01\x01\n\x0b\n\x03\ + \x04\x06\x01\x12\x04\xcf\x01\x08\x12\n\x0e\n\x04\x04\x06\x04\0\x12\x06\ + \xd0\x01\x02\xe2\x01\x03\n\r\n\x05\x04\x06\x04\0\x01\x12\x04\xd0\x01\x07\ + \r\n\r\n\x05\x04\x06\x04\0\x03\x12\x04\xd1\x01\x04\x1e\n\x0e\n\x06\x04\ + \x06\x04\0\x03\x02\x12\x04\xd1\x01\x04\x1e\n\x0e\n\x06\x04\x06\x04\0\x02\ + \0\x12\x04\xd2\x01\x04\x1a\n\x0f\n\x07\x04\x06\x04\0\x02\0\x01\x12\x04\ + \xd2\x01\x04\x15\n\x0f\n\x07\x04\x06\x04\0\x02\0\x02\x12\x04\xd2\x01\x18\ + \x19\n}\n\x06\x04\x06\x04\0\x02\x01\x12\x04\xd6\x01\x04\x12\x1am\x20Unit\ + \x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20\ + This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20l\ + anguages.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x01\x01\x12\x04\xd6\x01\x04\r\ + \n\x0f\n\x07\x04\x06\x04\0\x02\x01\x02\x12\x04\xd6\x01\x10\x11\n(\n\x06\ + \x04\x06\x04\0\x02\x02\x12\x04\xd8\x01\x04$\x1a\x18\x20Use\x20Namespace\ + \x20instead.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x01\x12\x04\xd8\x01\x04\ + \x0b\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x02\x12\x04\xd8\x01\x0e\x0f\n\x0f\ + \n\x07\x04\x06\x04\0\x02\x02\x03\x12\x04\xd8\x01\x10#\n\x10\n\x08\x04\ + \x06\x04\0\x02\x02\x03\x01\x12\x04\xd8\x01\x11\"\n\x0e\n\x06\x04\x06\x04\ + \0\x02\x03\x12\x04\xd9\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x03\x01\ + \x12\x04\xd9\x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\x03\x02\x12\x04\ + \xd9\x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\x02\x04\x12\x04\xda\x01\x04\r\ + \n\x0f\n\x07\x04\x06\x04\0\x02\x04\x01\x12\x04\xda\x01\x04\x08\n\x0f\n\ + \x07\x04\x06\x04\0\x02\x04\x02\x12\x04\xda\x01\x0b\x0c\n\x0e\n\x06\x04\ + \x06\x04\0\x02\x05\x12\x04\xdb\x01\x04\x0f\n\x0f\n\x07\x04\x06\x04\0\x02\ + \x05\x01\x12\x04\xdb\x01\x04\n\n\x0f\n\x07\x04\x06\x04\0\x02\x05\x02\x12\ + \x04\xdb\x01\r\x0e\n\x0e\n\x06\x04\x06\x04\0\x02\x06\x12\x04\xdc\x01\x04\ + \x16\n\x0f\n\x07\x04\x06\x04\0\x02\x06\x01\x12\x04\xdc\x01\x04\x11\n\x0f\ + \n\x07\x04\x06\x04\0\x02\x06\x02\x12\x04\xdc\x01\x14\x15\n\x0e\n\x06\x04\ + \x06\x04\0\x02\x07\x12\x04\xdd\x01\x04\x12\n\x0f\n\x07\x04\x06\x04\0\x02\ + \x07\x01\x12\x04\xdd\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x07\x02\x12\ + \x04\xdd\x01\x10\x11\n.\n\x06\x04\x06\x04\0\x02\x08\x12\x04\xdf\x01\x04\ + \r\x1a\x1e\x20Can\x20be\x20used\x20for\x20any\x20purpose.\n\n\x0f\n\x07\ + \x04\x06\x04\0\x02\x08\x01\x12\x04\xdf\x01\x04\x08\n\x0f\n\x07\x04\x06\ + \x04\0\x02\x08\x02\x12\x04\xdf\x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\x02\ + \t\x12\x04\xe0\x01\x04\x0e\n\x0f\n\x07\x04\x06\x04\0\x02\t\x01\x12\x04\ + \xe0\x01\x04\t\n\x0f\n\x07\x04\x06\x04\0\x02\t\x02\x12\x04\xe0\x01\x0c\r\ + \n\x0e\n\x06\x04\x06\x04\0\x02\n\x12\x04\xe1\x01\x04\x0e\n\x0f\n\x07\x04\ + \x06\x04\0\x02\n\x01\x12\x04\xe1\x01\x04\t\n\x0f\n\x07\x04\x06\x04\0\x02\ + \n\x02\x12\x04\xe1\x01\x0c\r\n\x0c\n\x04\x04\x06\x02\0\x12\x04\xe3\x01\ + \x02\x12\n\r\n\x05\x04\x06\x02\0\x05\x12\x04\xe3\x01\x02\x08\n\r\n\x05\ + \x04\x06\x02\0\x01\x12\x04\xe3\x01\t\r\n\r\n\x05\x04\x06\x02\0\x03\x12\ + \x04\xe3\x01\x10\x11\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xe4\x01\x02\x1b\ + \n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xe4\x01\x02\x08\n\r\n\x05\x04\x06\ + \x02\x01\x01\x12\x04\xe4\x01\t\x16\n\r\n\x05\x04\x06\x02\x01\x03\x12\x04\ + \xe4\x01\x19\x1a\n\x82\x01\n\x04\x04\x06\x02\x02\x12\x04\xe5\x01\x02\x14\ + \"t\x20NOTE:\x20If\x20you\x20add\x20new\x20fields\x20here,\x20make\x20su\ + re\x20to\x20update\x20the\x20prepareSlot()\n\x20function\x20responsible\ + \x20for\x20parsing\x20symbols.\n\n\r\n\x05\x04\x06\x02\x02\x06\x12\x04\ + \xe5\x01\x02\x08\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\xe5\x01\t\x0f\n\r\ + \n\x05\x04\x06\x02\x02\x03\x12\x04\xe5\x01\x12\x13\n\xa1\x02\n\x02\x04\ + \x07\x12\x06\xee\x01\0\xfb\x01\x01\x1a\x92\x02\x20Signature\x20represent\ + s\x20the\x20signature\x20of\x20a\x20symbol\x20as\x20it's\x20displayed\ + \x20in\x20API\n\x20documentation\x20or\x20hover\x20tooltips.\x20It\x20us\ + es\x20a\x20subset\x20of\x20Document's\x20fields\x20with\n\x20the\x20same\ + \x20field\x20numbers\x20for\x20wire\x20compatibility\x20with\x20older\ + \x20indexes\x20that\x20encoded\n\x20signatures\x20using\x20the\x20Docume\ + nt\x20message\x20type.\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xee\x01\x08\x11\ + \nK\n\x04\x04\x07\x02\0\x12\x04\xf0\x01\x02\x16\x1a=\x20The\x20language\ + \x20of\x20the\x20signature,\x20e.g.\x20\"java\",\x20\"go\",\x20\"python\ + \".\n\n\r\n\x05\x04\x07\x02\0\x05\x12\x04\xf0\x01\x02\x08\n\r\n\x05\x04\ + \x07\x02\0\x01\x12\x04\xf0\x01\t\x11\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\ + \xf0\x01\x14\x15\nQ\n\x04\x04\x07\x02\x01\x12\x04\xf2\x01\x02\x12\x1aC\ + \x20The\x20text\x20content\x20of\x20the\x20signature,\x20e.g.\x20\"void\ + \x20add(int\x20a,\x20int\x20b)\".\n\n\r\n\x05\x04\x07\x02\x01\x05\x12\ + \x04\xf2\x01\x02\x08\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xf2\x01\t\r\n\ + \r\n\x05\x04\x07\x02\x01\x03\x12\x04\xf2\x01\x10\x11\n\xbb\x01\n\x04\x04\ + \x07\x02\x02\x12\x04\xf6\x01\x02&\x1a\xac\x01\x20(optional)\x20Occurrenc\ + es\x20within\x20the\x20signature\x20text\x20that\x20reference\x20other\n\ + \x20symbols,\x20enabling\x20hyperlinking\x20of\x20types\x20in\x20the\x20\ + signature.\x20Ranges\x20are\n\x20relative\x20to\x20the\x20`text`\x20fiel\ + d.\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xf6\x01\x02\n\n\r\n\x05\x04\ + \x07\x02\x02\x06\x12\x04\xf6\x01\x0b\x15\n\r\n\x05\x04\x07\x02\x02\x01\ + \x12\x04\xf6\x01\x16!\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\xf6\x01$%\n\ + \x97\x01\n\x03\x04\x07\t\x12\x04\xfa\x01\x02\x13\x1a\x89\x01\x20Reserved\ + \x20field\x20numbers\x20from\x20the\x20Document\x20message\x20to\x20prev\ + ent\x20accidental\n\x20reuse,\x20which\x20would\x20break\x20wire\x20comp\ + atibility\x20with\x20older\x20indexes.\n\n\x0c\n\x04\x04\x07\t\0\x12\x04\ + \xfa\x01\x0b\x0c\n\r\n\x05\x04\x07\t\0\x01\x12\x04\xfa\x01\x0b\x0c\n\r\n\ + \x05\x04\x07\t\0\x02\x12\x04\xfa\x01\x0b\x0c\n\x0c\n\x04\x04\x07\t\x01\ + \x12\x04\xfa\x01\x0e\x0f\n\r\n\x05\x04\x07\t\x01\x01\x12\x04\xfa\x01\x0e\ + \x0f\n\r\n\x05\x04\x07\t\x01\x02\x12\x04\xfa\x01\x0e\x0f\n\x0c\n\x04\x04\ + \x07\t\x02\x12\x04\xfa\x01\x11\x12\n\r\n\x05\x04\x07\t\x02\x01\x12\x04\ + \xfa\x01\x11\x12\n\r\n\x05\x04\x07\t\x02\x02\x12\x04\xfa\x01\x11\x12\n\ + \x83\x01\n\x02\x04\x08\x12\x06\xff\x01\0\xd1\x03\x01\x1au\x20SymbolInfor\ + mation\x20defines\x20metadata\x20about\x20a\x20symbol,\x20such\x20as\x20\ + the\x20symbol's\n\x20docstring\x20or\x20what\x20package\x20it's\x20defin\ + ed\x20it.\n\n\x0b\n\x03\x04\x08\x01\x12\x04\xff\x01\x08\x19\n\xa0\x01\n\ + \x04\x04\x08\x02\0\x12\x04\x82\x02\x02\x14\x1a\x91\x01\x20Identifier\x20\ + of\x20this\x20symbol,\x20which\x20can\x20be\x20referenced\x20from\x20`Oc\ + curence.symbol`.\n\x20The\x20string\x20must\x20be\x20formatted\x20accord\ + ing\x20to\x20the\x20grammar\x20in\x20`Symbol`.\n\n\r\n\x05\x04\x08\x02\0\ + \x05\x12\x04\x82\x02\x02\x08\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\x82\x02\ + \t\x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\x82\x02\x12\x13\n\xb4\x03\n\ + \x04\x04\x08\x02\x01\x12\x04\x89\x02\x02$\x1a\xa5\x03\x20(optional,\x20b\ + ut\x20strongly\x20recommended)\x20The\x20markdown-formatted\x20documenta\ + tion\n\x20for\x20this\x20symbol.\x20Use\x20`SymbolInformation.signature_\ + documentation`\x20to\n\x20document\x20the\x20method/class/type\x20signat\ + ure\x20of\x20this\x20symbol.\n\x20Due\x20to\x20historical\x20reasons,\ + \x20indexers\x20may\x20include\x20signature\x20documentation\x20in\n\x20\ + this\x20field\x20by\x20rendering\x20markdown\x20code\x20blocks.\x20New\ + \x20indexers\x20should\x20only\n\x20include\x20non-code\x20documentation\ + \x20in\x20this\x20field,\x20for\x20example\x20docstrings.\n\n\r\n\x05\ + \x04\x08\x02\x01\x04\x12\x04\x89\x02\x02\n\n\r\n\x05\x04\x08\x02\x01\x05\ + \x12\x04\x89\x02\x0b\x11\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\x89\x02\ + \x12\x1f\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\x89\x02\"#\n^\n\x04\x04\ + \x08\x02\x02\x12\x04\x8b\x02\x02*\x1aP\x20(optional)\x20Relationships\ + \x20to\x20other\x20symbols\x20(e.g.,\x20implements,\x20type\x20definitio\ + n).\n\n\r\n\x05\x04\x08\x02\x02\x04\x12\x04\x8b\x02\x02\n\n\r\n\x05\x04\ + \x08\x02\x02\x06\x12\x04\x8b\x02\x0b\x17\n\r\n\x05\x04\x08\x02\x02\x01\ + \x12\x04\x8b\x02\x18%\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\x8b\x02()\n\ + \xa4\x01\n\x04\x04\x08\x02\x03\x12\x04\x8f\x02\x02\x10\x1a\x95\x01\x20Th\ + e\x20kind\x20of\x20this\x20symbol.\x20Use\x20this\x20field\x20instead\ + \x20of\n\x20`SymbolDescriptor.Suffix`\x20to\x20determine\x20whether\x20s\ + omething\x20is,\x20for\x20example,\x20a\n\x20class\x20or\x20a\x20method.\ + \n\n\r\n\x05\x04\x08\x02\x03\x06\x12\x04\x8f\x02\x02\x06\n\r\n\x05\x04\ + \x08\x02\x03\x01\x12\x04\x8f\x02\x07\x0b\n\r\n\x05\x04\x08\x02\x03\x03\ + \x12\x04\x8f\x02\x0e\x0f\n\xf5\x05\n\x04\x04\x08\x04\0\x12\x06\x9e\x02\ + \x02\xad\x03\x03\x1a\xe4\x05\x20(optional)\x20Kind\x20represents\x20the\ + \x20fine-grained\x20category\x20of\x20a\x20symbol,\x20suitable\x20for\ + \x20presenting\n\x20information\x20about\x20the\x20symbol's\x20meaning\ + \x20in\x20the\x20language.\n\n\x20For\x20example:\n\x20-\x20A\x20Java\ + \x20method\x20would\x20have\x20the\x20kind\x20`Method`\x20while\x20a\x20\ + Go\x20function\x20would\n\x20\x20\x20have\x20the\x20kind\x20`Function`,\ + \x20even\x20if\x20the\x20symbols\x20for\x20these\x20use\x20the\x20same\n\ + \x20\x20\x20syntax\x20for\x20the\x20descriptor\x20`SymbolDescriptor.Suff\ + ix.Method`.\n\x20-\x20A\x20Go\x20struct\x20has\x20the\x20symbol\x20kind\ + \x20`Struct`\x20while\x20a\x20Java\x20class\x20has\n\x20\x20\x20the\x20s\ + ymbol\x20kind\x20`Class`\x20even\x20if\x20they\x20both\x20have\x20the\ + \x20same\x20descriptor:\n\x20\x20\x20`SymbolDescriptor.Suffix.Type`.\n\n\ + \x20Since\x20Kind\x20is\x20more\x20fine-grained\x20than\x20Suffix:\n\x20\ + -\x20If\x20two\x20symbols\x20have\x20the\x20same\x20Kind,\x20they\x20sho\ + uld\x20share\x20the\x20same\x20Suffix.\n\x20-\x20If\x20two\x20symbols\ + \x20have\x20different\x20Suffixes,\x20they\x20should\x20have\x20differen\ + t\x20Kinds.\n\n\r\n\x05\x04\x08\x04\0\x01\x12\x04\x9e\x02\x07\x0b\n\x0e\ + \n\x06\x04\x08\x04\0\x02\0\x12\x04\x9f\x02\x04\x18\n\x0f\n\x07\x04\x08\ + \x04\0\x02\0\x01\x12\x04\x9f\x02\x04\x13\n\x0f\n\x07\x04\x08\x04\0\x02\0\ + \x02\x12\x04\x9f\x02\x16\x17\nR\n\x06\x04\x08\x04\0\x02\x01\x12\x04\xa1\ + \x02\x04\x18\x1aB\x20A\x20method\x20which\x20may\x20or\x20may\x20not\x20\ + have\x20a\x20body.\x20For\x20Java,\x20Kotlin\x20etc.\n\n\x0f\n\x07\x04\ + \x08\x04\0\x02\x01\x01\x12\x04\xa1\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\ + \x02\x01\x02\x12\x04\xa1\x02\x15\x17\n*\n\x06\x04\x08\x04\0\x02\x02\x12\ + \x04\xa3\x02\x04\x12\x1a\x1a\x20For\x20Ruby's\x20attr_accessor\n\n\x0f\n\ + \x07\x04\x08\x04\0\x02\x02\x01\x12\x04\xa3\x02\x04\x0c\n\x0f\n\x07\x04\ + \x08\x04\0\x02\x02\x02\x12\x04\xa3\x02\x0f\x11\n\x0e\n\x06\x04\x08\x04\0\ + \x02\x03\x12\x04\xa4\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\x03\x01\ + \x12\x04\xa4\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\x03\x02\x12\x04\xa4\ + \x02\x0c\r\n\x1b\n\x06\x04\x08\x04\0\x02\x04\x12\x04\xa6\x02\x04\x12\x1a\ + \x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x08\x04\0\x02\x04\x01\x12\x04\xa6\ + \x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02\x04\x02\x12\x04\xa6\x02\x10\x11\ + \n\x0e\n\x06\x04\x08\x04\0\x02\x05\x12\x04\xa7\x02\x04\x17\n\x0f\n\x07\ + \x04\x08\x04\0\x02\x05\x01\x12\x04\xa7\x02\x04\x12\n\x0f\n\x07\x04\x08\ + \x04\0\x02\x05\x02\x12\x04\xa7\x02\x15\x16\n\x19\n\x06\x04\x08\x04\0\x02\ + \x06\x12\x04\xa9\x02\x04\x12\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x08\ + \x04\0\x02\x06\x01\x12\x04\xa9\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02\ + \x06\x02\x12\x04\xa9\x02\x10\x11\n\x1a\n\x06\x04\x08\x04\0\x02\x07\x12\ + \x04\xab\x02\x04\x0e\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x08\x04\0\ + \x02\x07\x01\x12\x04\xab\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\x07\x02\ + \x12\x04\xab\x02\x0c\r\n\x0e\n\x06\x04\x08\x04\0\x02\x08\x12\x04\xac\x02\ + \x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02\x08\x01\x12\x04\xac\x02\x04\x0b\n\ + \x0f\n\x07\x04\x08\x04\0\x02\x08\x02\x12\x04\xac\x02\x0e\x0f\n\x0e\n\x06\ + \x04\x08\x04\0\x02\t\x12\x04\xad\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\ + \x02\t\x01\x12\x04\xad\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\t\x02\x12\ + \x04\xad\x02\x0c\r\n\x19\n\x06\x04\x08\x04\0\x02\n\x12\x04\xaf\x02\x04\ + \x11\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x08\x04\0\x02\n\x01\x12\x04\ + \xaf\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02\n\x02\x12\x04\xaf\x02\x0e\ + \x10\n\x0e\n\x06\x04\x08\x04\0\x02\x0b\x12\x04\xb0\x02\x04\x11\n\x0f\n\ + \x07\x04\x08\x04\0\x02\x0b\x01\x12\x04\xb0\x02\x04\x0c\n\x0f\n\x07\x04\ + \x08\x04\0\x02\x0b\x02\x12\x04\xb0\x02\x0f\x10\n\x0e\n\x06\x04\x08\x04\0\ + \x02\x0c\x12\x04\xb1\x02\x04\x14\n\x0f\n\x07\x04\x08\x04\0\x02\x0c\x01\ + \x12\x04\xb1\x02\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\x02\x0c\x02\x12\x04\ + \xb1\x02\x12\x13\n\x1e\n\x06\x04\x08\x04\0\x02\r\x12\x04\xb3\x02\x04\x12\ + \x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x08\x04\0\x02\r\x01\x12\ + \x04\xb3\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02\r\x02\x12\x04\xb3\x02\ + \x0f\x11\n\x1d\n\x06\x04\x08\x04\0\x02\x0e\x12\x04\xb5\x02\x04\x14\x1a\r\ + \x20For\x20Haskell\n\n\x0f\n\x07\x04\x08\x04\0\x02\x0e\x01\x12\x04\xb5\ + \x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\x0e\x02\x12\x04\xb5\x02\x11\ + \x13\n\x1f\n\x06\x04\x08\x04\0\x02\x0f\x12\x04\xb7\x02\x04\x12\x1a\x0f\ + \x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\x08\x04\0\x02\x0f\x01\x12\ + \x04\xb7\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02\x0f\x02\x12\x04\xb7\ + \x02\x0f\x11\n\x0e\n\x06\x04\x08\x04\0\x02\x10\x12\x04\xb8\x02\x04\x0e\n\ + \x0f\n\x07\x04\x08\x04\0\x02\x10\x01\x12\x04\xb8\x02\x04\x08\n\x0f\n\x07\ + \x04\x08\x04\0\x02\x10\x02\x12\x04\xb8\x02\x0b\r\n\x0e\n\x06\x04\x08\x04\ + \0\x02\x11\x12\x04\xb9\x02\x04\x14\n\x0f\n\x07\x04\x08\x04\0\x02\x11\x01\ + \x12\x04\xb9\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\x11\x02\x12\x04\ + \xb9\x02\x11\x13\n\x0e\n\x06\x04\x08\x04\0\x02\x12\x12\x04\xba\x02\x04\ + \x0f\n\x0f\n\x07\x04\x08\x04\0\x02\x12\x01\x12\x04\xba\x02\x04\t\n\x0f\n\ + \x07\x04\x08\x04\0\x02\x12\x02\x12\x04\xba\x02\x0c\x0e\n\x0e\n\x06\x04\ + \x08\x04\0\x02\x13\x12\x04\xbb\x02\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\x02\ + \x13\x01\x12\x04\xbb\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\x13\x02\x12\ + \x04\xbb\x02\x0c\x0e\n\x1a\n\x06\x04\x08\x04\0\x02\x14\x12\x04\xbd\x02\ + \x04\x13\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x08\x04\0\x02\x14\x01\ + \x12\x04\xbd\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02\x14\x02\x12\x04\xbd\ + \x02\x10\x12\n\x1b\n\x06\x04\x08\x04\0\x02\x15\x12\x04\xbf\x02\x04\x0e\ + \x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x08\x04\0\x02\x15\x01\x12\x04\ + \xbf\x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02\x15\x02\x12\x04\xbf\x02\ + \x0b\r\n\x0e\n\x06\x04\x08\x04\0\x02\x16\x12\x04\xc0\x02\x04\x0f\n\x0f\n\ + \x07\x04\x08\x04\0\x02\x16\x01\x12\x04\xc0\x02\x04\t\n\x0f\n\x07\x04\x08\ + \x04\0\x02\x16\x02\x12\x04\xc0\x02\x0c\x0e\n\x0e\n\x06\x04\x08\x04\0\x02\ + \x17\x12\x04\xc1\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02\x17\x01\x12\ + \x04\xc1\x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02\x17\x02\x12\x04\xc1\ + \x02\x0b\r\n\x0e\n\x06\x04\x08\x04\0\x02\x18\x12\x04\xc2\x02\x04\x12\n\ + \x0f\n\x07\x04\x08\x04\0\x02\x18\x01\x12\x04\xc2\x02\x04\x0c\n\x0f\n\x07\ + \x04\x08\x04\0\x02\x18\x02\x12\x04\xc2\x02\x0f\x11\n;\n\x06\x04\x08\x04\ + \0\x02\x19\x12\x04\xc4\x02\x04\x10\x1a+\x20For\x20'get'\x20in\x20Swift,\ + \x20'attr_reader'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x08\x04\0\x02\x19\x01\ + \x12\x04\xc4\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02\x19\x02\x12\x04\xc4\ + \x02\r\x0f\n\x1a\n\x06\x04\x08\x04\0\x02\x1a\x12\x04\xc6\x02\x04\x11\x1a\ + \n\x20For\x20Raku\n\n\x0f\n\x07\x04\x08\x04\0\x02\x1a\x01\x12\x04\xc6\ + \x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02\x1a\x02\x12\x04\xc6\x02\x0e\ + \x10\n)\n\x06\x04\x08\x04\0\x02\x1b\x12\x04\xc8\x02\x04\x12\x1a\x19\x20F\ + or\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x08\x04\0\x02\x1b\x01\ + \x12\x04\xc8\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02\x1b\x02\x12\x04\ + \xc8\x02\x0f\x11\n\x0e\n\x06\x04\x08\x04\0\x02\x1c\x12\x04\xc9\x02\x04\ + \x13\n\x0f\n\x07\x04\x08\x04\0\x02\x1c\x01\x12\x04\xc9\x02\x04\r\n\x0f\n\ + \x07\x04\x08\x04\0\x02\x1c\x02\x12\x04\xc9\x02\x10\x12\n\x0e\n\x06\x04\ + \x08\x04\0\x02\x1d\x12\x04\xca\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\x02\ + \x1d\x01\x12\x04\xca\x02\x04\x07\n\x0f\n\x07\x04\x08\x04\0\x02\x1d\x02\ + \x12\x04\xca\x02\n\x0c\n\x1c\n\x06\x04\x08\x04\0\x02\x1e\x12\x04\xcc\x02\ + \x04\x0e\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\x08\x04\0\x02\x1e\ + \x01\x12\x04\xcc\x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02\x1e\x02\x12\ + \x04\xcc\x02\x0b\r\n\x1a\n\x06\x04\x08\x04\0\x02\x1f\x12\x04\xce\x02\x04\ + \x0f\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x08\x04\0\x02\x1f\x01\x12\ + \x04\xce\x02\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02\x1f\x02\x12\x04\xce\x02\ + \x0c\x0e\n\x1e\n\x06\x04\x08\x04\0\x02\x20\x12\x04\xd0\x02\x04\x11\x1a\ + \x0e\x20For\x20solidity\n\n\x0f\n\x07\x04\x08\x04\0\x02\x20\x01\x12\x04\ + \xd0\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02\x20\x02\x12\x04\xd0\x02\ + \x0e\x10\n\x0e\n\x06\x04\x08\x04\0\x02!\x12\x04\xd1\x02\x04\x0f\n\x0f\n\ + \x07\x04\x08\x04\0\x02!\x01\x12\x04\xd1\x02\x04\t\n\x0f\n\x07\x04\x08\ + \x04\0\x02!\x02\x12\x04\xd1\x02\x0c\x0e\n\x0e\n\x06\x04\x08\x04\0\x02\"\ + \x12\x04\xd2\x02\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02\"\x01\x12\x04\xd2\ + \x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02\"\x02\x12\x04\xd2\x02\r\x0f\n\ + \x1a\n\x06\x04\x08\x04\0\x02#\x12\x04\xd4\x02\x04\x15\x1a\n\x20For\x20Ru\ + by\n\n\x0f\n\x07\x04\x08\x04\0\x02#\x01\x12\x04\xd4\x02\x04\x0f\n\x0f\n\ + \x07\x04\x08\x04\0\x02#\x02\x12\x04\xd4\x02\x12\x14\n\x94\x01\n\x06\x04\ + \x08\x04\0\x02$\x12\x04\xd7\x02\x04\x18\x1a\x83\x01\x20Analogous\x20to\ + \x20'ThisParameter'\x20and\x20'SelfParameter',\x20but\x20for\x20language\ + s\n\x20like\x20Go\x20where\x20the\x20receiver\x20doesn't\x20have\x20a\ + \x20conventional\x20name.\n\n\x0f\n\x07\x04\x08\x04\0\x02$\x01\x12\x04\ + \xd7\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02$\x02\x12\x04\xd7\x02\x15\ + \x17\n8\n\x06\x04\x08\x04\0\x02%\x12\x04\xd9\x02\x04\x1d\x1a(\x20Analogo\ + us\x20to\x20'AbstractMethod',\x20for\x20Go.\n\n\x0f\n\x07\x04\x08\x04\0\ + \x02%\x01\x12\x04\xd9\x02\x04\x17\n\x0f\n\x07\x04\x08\x04\0\x02%\x02\x12\ + \x04\xd9\x02\x1a\x1c\n\x1e\n\x06\x04\x08\x04\0\x02&\x12\x04\xdb\x02\x04\ + \x11\x1a\x0e\x20For\x20Protobuf\n\n\x0f\n\x07\x04\x08\x04\0\x02&\x01\x12\ + \x04\xdb\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02&\x02\x12\x04\xdb\x02\ + \x0e\x10\n\x1a\n\x06\x04\x08\x04\0\x02'\x12\x04\xdd\x02\x04\x0f\x1a\n\ + \x20For\x20Dart\n\n\x0f\n\x07\x04\x08\x04\0\x02'\x01\x12\x04\xdd\x02\x04\ + \t\n\x0f\n\x07\x04\x08\x04\0\x02'\x02\x12\x04\xdd\x02\x0c\x0e\n\x1e\n\ + \x06\x04\x08\x04\0\x02(\x12\x04\xdf\x02\x04\x12\x1a\x0e\x20For\x20Solidi\ + ty\n\n\x0f\n\x07\x04\x08\x04\0\x02(\x01\x12\x04\xdf\x02\x04\x0c\n\x0f\n\ + \x07\x04\x08\x04\0\x02(\x02\x12\x04\xdf\x02\x0f\x11\n\x0e\n\x06\x04\x08\ + \x04\0\x02)\x12\x04\xe0\x02\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02)\x01\ + \x12\x04\xe0\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02)\x02\x12\x04\xe0\ + \x02\r\x0f\n\x0e\n\x06\x04\x08\x04\0\x02*\x12\x04\xe1\x02\x04\x13\n\x0f\ + \n\x07\x04\x08\x04\0\x02*\x01\x12\x04\xe1\x02\x04\r\n\x0f\n\x07\x04\x08\ + \x04\0\x02*\x02\x12\x04\xe1\x02\x10\x12\n\x0e\n\x06\x04\x08\x04\0\x02+\ + \x12\x04\xe2\x02\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02+\x01\x12\x04\xe2\ + \x02\x04\x08\n\x0f\n\x07\x04\x08\x04\0\x02+\x02\x12\x04\xe2\x02\x0b\r\n\ + \x0e\n\x06\x04\x08\x04\0\x02,\x12\x04\xe3\x02\x04\x10\n\x0f\n\x07\x04\ + \x08\x04\0\x02,\x01\x12\x04\xe3\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02,\ + \x02\x12\x04\xe3\x02\r\x0f\n\x0e\n\x06\x04\x08\x04\0\x02-\x12\x04\xe4\ + \x02\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02-\x01\x12\x04\xe4\x02\x04\n\n\ + \x0f\n\x07\x04\x08\x04\0\x02-\x02\x12\x04\xe4\x02\r\x0f\n\x0e\n\x06\x04\ + \x08\x04\0\x02.\x12\x04\xe5\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02.\ + \x01\x12\x04\xe5\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02.\x02\x12\x04\ + \xe5\x02\x0f\x11\n\x0e\n\x06\x04\x08\x04\0\x02/\x12\x04\xe6\x02\x04\x11\ + \n\x0f\n\x07\x04\x08\x04\0\x02/\x01\x12\x04\xe6\x02\x04\x0b\n\x0f\n\x07\ + \x04\x08\x04\0\x02/\x02\x12\x04\xe6\x02\x0e\x10\n\x0e\n\x06\x04\x08\x04\ + \0\x020\x12\x04\xe7\x02\x04\x17\n\x0f\n\x07\x04\x08\x04\0\x020\x01\x12\ + \x04\xe7\x02\x04\x11\n\x0f\n\x07\x04\x08\x04\0\x020\x02\x12\x04\xe7\x02\ + \x14\x16\n\x0e\n\x06\x04\x08\x04\0\x021\x12\x04\xe8\x02\x04\x13\n\x0f\n\ + \x07\x04\x08\x04\0\x021\x01\x12\x04\xe8\x02\x04\r\n\x0f\n\x07\x04\x08\ + \x04\0\x021\x02\x12\x04\xe8\x02\x10\x12\n\x0e\n\x06\x04\x08\x04\0\x022\ + \x12\x04\xe9\x02\x04\x18\n\x0f\n\x07\x04\x08\x04\0\x022\x01\x12\x04\xe9\ + \x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x022\x02\x12\x04\xe9\x02\x15\x17\ + \n/\n\x06\x04\x08\x04\0\x023\x12\x04\xeb\x02\x04\x11\x1a\x1f\x20For\x20H\ + askell's\x20PatternSynonyms\n\n\x0f\n\x07\x04\x08\x04\0\x023\x01\x12\x04\ + \xeb\x02\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x023\x02\x12\x04\xeb\x02\x0e\ + \x10\n\x1b\n\x06\x04\x08\x04\0\x024\x12\x04\xed\x02\x04\x13\x1a\x0b\x20F\ + or\x20Alloy\n\n\x0f\n\x07\x04\x08\x04\0\x024\x01\x12\x04\xed\x02\x04\r\n\ + \x0f\n\x07\x04\x08\x04\0\x024\x02\x12\x04\xed\x02\x10\x12\n\x0e\n\x06\ + \x04\x08\x04\0\x025\x12\x04\xee\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\ + \x025\x01\x12\x04\xee\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x025\x02\x12\ + \x04\xee\x02\x0f\x11\nQ\n\x06\x04\x08\x04\0\x026\x12\x04\xf0\x02\x04\x12\ + \x1aA\x20Analogous\x20to\x20'Trait'\x20and\x20'TypeClass',\x20for\x20Swi\ + ft\x20and\x20Objective-C\n\n\x0f\n\x07\x04\x08\x04\0\x026\x01\x12\x04\ + \xf0\x02\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x026\x02\x12\x04\xf0\x02\x0f\ + \x11\nK\n\x06\x04\x08\x04\0\x027\x12\x04\xf2\x02\x04\x18\x1a;\x20Analogo\ + us\x20to\x20'AbstractMethod',\x20for\x20Swift\x20and\x20Objective-C.\n\n\ + \x0f\n\x07\x04\x08\x04\0\x027\x01\x12\x04\xf2\x02\x04\x12\n\x0f\n\x07\ + \x04\x08\x04\0\x027\x02\x12\x04\xf2\x02\x15\x17\n9\n\x06\x04\x08\x04\0\ + \x028\x12\x04\xf4\x02\x04\x1b\x1a)\x20Analogous\x20to\x20'AbstractMethod\ + ',\x20for\x20C++.\n\n\x0f\n\x07\x04\x08\x04\0\x028\x01\x12\x04\xf4\x02\ + \x04\x15\n\x0f\n\x07\x04\x08\x04\0\x028\x02\x12\x04\xf4\x02\x18\x1a\n\ + \x1d\n\x06\x04\x08\x04\0\x029\x12\x04\xf6\x02\x04\x15\x1a\r\x20For\x20Ha\ + skell\n\n\x0f\n\x07\x04\x08\x04\0\x029\x01\x12\x04\xf6\x02\x04\x0f\n\x0f\ + \n\x07\x04\x08\x04\0\x029\x02\x12\x04\xf6\x02\x12\x14\n4\n\x06\x04\x08\ + \x04\0\x02:\x12\x04\xf8\x02\x04\x17\x1a$\x20'self'\x20in\x20Python,\x20R\ + ust,\x20Swift\x20etc.\n\n\x0f\n\x07\x04\x08\x04\0\x02:\x01\x12\x04\xf8\ + \x02\x04\x11\n\x0f\n\x07\x04\x08\x04\0\x02:\x02\x12\x04\xf8\x02\x14\x16\ + \n;\n\x06\x04\x08\x04\0\x02;\x12\x04\xfa\x02\x04\x10\x1a+\x20For\x20'set\ + '\x20in\x20Swift,\x20'attr_writer'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x08\ + \x04\0\x02;\x01\x12\x04\xfa\x02\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02;\x02\ + \x12\x04\xfa\x02\r\x0f\n3\n\x06\x04\x08\x04\0\x02<\x12\x04\xfc\x02\x04\ + \x13\x1a#\x20For\x20Alloy,\x20analogous\x20to\x20'Struct'.\n\n\x0f\n\x07\ + \x04\x08\x04\0\x02<\x01\x12\x04\xfc\x02\x04\r\n\x0f\n\x07\x04\x08\x04\0\ + \x02<\x02\x12\x04\xfc\x02\x10\x12\n\x1a\n\x06\x04\x08\x04\0\x02=\x12\x04\ + \xfe\x02\x04\x18\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x08\x04\0\x02=\ + \x01\x12\x04\xfe\x02\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02=\x02\x12\x04\ + \xfe\x02\x15\x17\n8\n\x06\x04\x08\x04\0\x02>\x12\x04\x80\x03\x04\x19\x1a\ + (\x20Analogous\x20to\x20'StaticMethod',\x20for\x20Ruby.\n\n\x0f\n\x07\ + \x04\x08\x04\0\x02>\x01\x12\x04\x80\x03\x04\x13\n\x0f\n\x07\x04\x08\x04\ + \0\x02>\x02\x12\x04\x80\x03\x16\x18\n5\n\x06\x04\x08\x04\0\x02?\x12\x04\ + \x82\x03\x04\x1a\x1a%\x20Analogous\x20to\x20'StaticField',\x20for\x20C++\ + \n\n\x0f\n\x07\x04\x08\x04\0\x02?\x01\x12\x04\x82\x03\x04\x14\n\x0f\n\ + \x07\x04\x08\x04\0\x02?\x02\x12\x04\x82\x03\x17\x19\n\x18\n\x06\x04\x08\ + \x04\0\x02@\x12\x04\x84\x03\x04\x15\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\ + \x04\x08\x04\0\x02@\x01\x12\x04\x84\x03\x04\x0f\n\x0f\n\x07\x04\x08\x04\ + \0\x02@\x02\x12\x04\x84\x03\x12\x14\n\x18\n\x06\x04\x08\x04\0\x02A\x12\ + \x04\x86\x03\x04\x15\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x08\x04\0\ + \x02A\x01\x12\x04\x86\x03\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\x02A\x02\x12\ + \x04\x86\x03\x12\x14\n(\n\x06\x04\x08\x04\0\x02B\x12\x04\x88\x03\x04\x16\ + \x1a\x18\x20For\x20Java,\x20C#,\x20C++\x20etc.\n\n\x0f\n\x07\x04\x08\x04\ + \0\x02B\x01\x12\x04\x88\x03\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02B\x02\ + \x12\x04\x88\x03\x13\x15\n)\n\x06\x04\x08\x04\0\x02C\x12\x04\x8a\x03\x04\ + \x18\x1a\x19\x20For\x20C#,\x20TypeScript\x20etc.\n\n\x0f\n\x07\x04\x08\ + \x04\0\x02C\x01\x12\x04\x8a\x03\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02C\ + \x02\x12\x04\x8a\x03\x15\x17\n\x1c\n\x06\x04\x08\x04\0\x02D\x12\x04\x8c\ + \x03\x04\x18\x1a\x0c\x20For\x20C,\x20C++\n\n\x0f\n\x07\x04\x08\x04\0\x02\ + D\x01\x12\x04\x8c\x03\x04\x12\n\x0f\n\x07\x04\x08\x04\0\x02D\x02\x12\x04\ + \x8c\x03\x15\x17\n\x0e\n\x06\x04\x08\x04\0\x02E\x12\x04\x8d\x03\x04\x10\ + \n\x0f\n\x07\x04\x08\x04\0\x02E\x01\x12\x04\x8d\x03\x04\n\n\x0f\n\x07\ + \x04\x08\x04\0\x02E\x02\x12\x04\x8d\x03\r\x0f\n\x0e\n\x06\x04\x08\x04\0\ + \x02F\x12\x04\x8e\x03\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02F\x01\x12\x04\ + \x8e\x03\x04\n\n\x0f\n\x07\x04\x08\x04\0\x02F\x02\x12\x04\x8e\x03\r\x0f\ + \n\x1b\n\x06\x04\x08\x04\0\x02G\x12\x04\x90\x03\x04\x13\x1a\x0b\x20For\ + \x20Swift\n\n\x0f\n\x07\x04\x08\x04\0\x02G\x01\x12\x04\x90\x03\x04\r\n\ + \x0f\n\x07\x04\x08\x04\0\x02G\x02\x12\x04\x90\x03\x10\x12\n\x1a\n\x06\ + \x04\x08\x04\0\x02H\x12\x04\x92\x03\x04\x10\x1a\n\x20For\x20Lean\n\n\x0f\ + \n\x07\x04\x08\x04\0\x02H\x01\x12\x04\x92\x03\x04\n\n\x0f\n\x07\x04\x08\ + \x04\0\x02H\x02\x12\x04\x92\x03\r\x0f\n\x1a\n\x06\x04\x08\x04\0\x02I\x12\ + \x04\x94\x03\x04\x11\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x08\x04\0\ + \x02I\x01\x12\x04\x94\x03\x04\x0b\n\x0f\n\x07\x04\x08\x04\0\x02I\x02\x12\ + \x04\x94\x03\x0e\x10\nU\n\x06\x04\x08\x04\0\x02J\x12\x04\x97\x03\x04\x17\ + \x1aE\x20Method\x20receiver\x20for\x20languages\n\x20'this'\x20in\x20Jav\ + aScript,\x20C++,\x20Java\x20etc.\n\n\x0f\n\x07\x04\x08\x04\0\x02J\x01\ + \x12\x04\x97\x03\x04\x11\n\x0f\n\x07\x04\x08\x04\0\x02J\x02\x12\x04\x97\ + \x03\x14\x16\nO\n\x06\x04\x08\x04\0\x02K\x12\x04\x99\x03\x04\x0f\x1a?\ + \x20Analogous\x20to\x20'Protocol'\x20and\x20'TypeClass',\x20for\x20Rust,\ + \x20Scala\x20etc.\n\n\x0f\n\x07\x04\x08\x04\0\x02K\x01\x12\x04\x99\x03\ + \x04\t\n\x0f\n\x07\x04\x08\x04\0\x02K\x02\x12\x04\x99\x03\x0c\x0e\nE\n\ + \x06\x04\x08\x04\0\x02L\x12\x04\x9b\x03\x04\x15\x1a5\x20Analogous\x20to\ + \x20'AbstractMethod',\x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\ + \x08\x04\0\x02L\x01\x12\x04\x9b\x03\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\ + \x02L\x02\x12\x04\x9b\x03\x12\x14\n\x89\x01\n\x06\x04\x08\x04\0\x02M\x12\ + \x04\x9e\x03\x04\x0e\x1ay\x20Data\x20type\x20definition\x20for\x20langua\ + ges\x20like\x20OCaml\x20which\x20use\x20`type`\n\x20rather\x20than\x20se\ + parate\x20keywords\x20like\x20`struct`\x20and\x20`enum`.\n\n\x0f\n\x07\ + \x04\x08\x04\0\x02M\x01\x12\x04\x9e\x03\x04\x08\n\x0f\n\x07\x04\x08\x04\ + \0\x02M\x02\x12\x04\x9e\x03\x0b\r\n\x0e\n\x06\x04\x08\x04\0\x02N\x12\x04\ + \x9f\x03\x04\x13\n\x0f\n\x07\x04\x08\x04\0\x02N\x01\x12\x04\x9f\x03\x04\ + \r\n\x0f\n\x07\x04\x08\x04\0\x02N\x02\x12\x04\x9f\x03\x10\x12\nS\n\x06\ + \x04\x08\x04\0\x02O\x12\x04\xa1\x03\x04\x13\x1aC\x20Analogous\x20to\x20'\ + Trait'\x20and\x20'Protocol',\x20for\x20Haskell,\x20Purescript\x20etc.\n\ + \n\x0f\n\x07\x04\x08\x04\0\x02O\x01\x12\x04\xa1\x03\x04\r\n\x0f\n\x07\ + \x04\x08\x04\0\x02O\x02\x12\x04\xa1\x03\x10\x12\nM\n\x06\x04\x08\x04\0\ + \x02P\x12\x04\xa3\x03\x04\x19\x1a=\x20Analogous\x20to\x20'AbstractMethod\ + ',\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x08\x04\0\ + \x02P\x01\x12\x04\xa3\x03\x04\x13\n\x0f\n\x07\x04\x08\x04\0\x02P\x02\x12\ + \x04\xa3\x03\x16\x18\n\x1d\n\x06\x04\x08\x04\0\x02Q\x12\x04\xa5\x03\x04\ + \x14\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\x08\x04\0\x02Q\x01\x12\ + \x04\xa5\x03\x04\x0e\n\x0f\n\x07\x04\x08\x04\0\x02Q\x02\x12\x04\xa5\x03\ + \x11\x13\n\x0e\n\x06\x04\x08\x04\0\x02R\x12\x04\xa6\x03\x04\x17\n\x0f\n\ + \x07\x04\x08\x04\0\x02R\x01\x12\x04\xa6\x03\x04\x11\n\x0f\n\x07\x04\x08\ + \x04\0\x02R\x02\x12\x04\xa6\x03\x14\x16\n(\n\x06\x04\x08\x04\0\x02S\x12\ + \x04\xa8\x03\x04\x0f\x1a\x18\x20For\x20C,\x20C++,\x20Capn\x20Proto\n\n\ + \x0f\n\x07\x04\x08\x04\0\x02S\x01\x12\x04\xa8\x03\x04\t\n\x0f\n\x07\x04\ + \x08\x04\0\x02S\x02\x12\x04\xa8\x03\x0c\x0e\n\x0e\n\x06\x04\x08\x04\0\ + \x02T\x12\x04\xa9\x03\x04\x0f\n\x0f\n\x07\x04\x08\x04\0\x02T\x01\x12\x04\ + \xa9\x03\x04\t\n\x0f\n\x07\x04\x08\x04\0\x02T\x02\x12\x04\xa9\x03\x0c\ + \x0e\n[\n\x06\x04\x08\x04\0\x02U\x12\x04\xaa\x03\x04\x12\"K\x20Next\x20=\ + \x2087;\n\x20Feel\x20free\x20to\x20open\x20a\x20PR\x20proposing\x20new\ + \x20language-specific\x20kinds.\n\n\x0f\n\x07\x04\x08\x04\0\x02U\x01\x12\ + \x04\xaa\x03\x04\x0c\n\x0f\n\x07\x04\x08\x04\0\x02U\x02\x12\x04\xaa\x03\ + \x0f\x11\n\xf3\x03\n\x04\x04\x08\x02\x04\x12\x04\xb7\x03\x02\x1a\x1a\xe4\ + \x03\x20(optional)\x20The\x20name\x20of\x20this\x20symbol\x20as\x20it\ + \x20should\x20be\x20displayed\x20to\x20the\x20user.\n\x20For\x20example,\ + \x20the\x20symbol\x20\"com/example/MyClass#myMethod(+1).\"\x20should\x20\ + have\x20the\n\x20display\x20name\x20\"myMethod\".\x20The\x20`symbol`\x20\ + field\x20is\x20not\x20a\x20reliable\x20source\x20of\n\x20the\x20display\ + \x20name\x20for\x20several\x20reasons:\n\n\x20-\x20Local\x20symbols\x20d\ + on't\x20encode\x20the\x20name.\n\x20-\x20Some\x20languages\x20have\x20ca\ + se-insensitive\x20names,\x20so\x20the\x20symbol\x20is\x20all-lowercase.\ + \n\x20-\x20The\x20symbol\x20may\x20encode\x20names\x20with\x20special\ + \x20characters\x20that\x20should\x20not\x20be\n\x20\x20\x20displayed\x20\ + to\x20the\x20user.\n\n\r\n\x05\x04\x08\x02\x04\x05\x12\x04\xb7\x03\x02\ + \x08\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xb7\x03\t\x15\n\r\n\x05\x04\ + \x08\x02\x04\x03\x12\x04\xb7\x03\x18\x19\n\x9f\x03\n\x04\x04\x08\x02\x05\ + \x12\x04\xbe\x03\x02(\x1a\x90\x03\x20(optional)\x20The\x20signature\x20o\ + f\x20this\x20symbol\x20as\x20it's\x20displayed\x20in\x20API\n\x20documen\ + tation\x20or\x20in\x20hover\x20tooltips.\x20For\x20example,\x20a\x20Java\ + \x20method\x20that\x20adds\n\x20two\x20numbers\x20would\x20have\x20`Sign\ + ature.language\x20=\x20\"java\"`\x20and\n\x20`Signature.text\x20=\x20\"v\ + oid\x20add(int\x20a,\x20int\x20b)\"`.\x20The\x20`language`\x20and\x20`te\ + xt`\n\x20fields\x20are\x20required\x20while\x20`occurrences`\x20can\x20b\ + e\x20optionally\x20included\x20to\n\x20support\x20hyperlinking\x20refere\ + nced\x20symbols\x20in\x20the\x20signature.\n\n\r\n\x05\x04\x08\x02\x05\ + \x06\x12\x04\xbe\x03\x02\x0b\n\r\n\x05\x04\x08\x02\x05\x01\x12\x04\xbe\ + \x03\x0c#\n\r\n\x05\x04\x08\x02\x05\x03\x12\x04\xbe\x03&'\n\xc9\x08\n\ + \x04\x04\x08\x02\x06\x12\x04\xd0\x03\x02\x1e\x1a\xba\x08\x20(optional)\ + \x20The\x20enclosing\x20symbol\x20if\x20this\x20is\x20a\x20local\x20symb\ + ol.\x20\x20For\x20non-local\n\x20symbols,\x20the\x20enclosing\x20symbol\ + \x20should\x20be\x20parsed\x20from\x20the\x20`symbol`\x20field\n\x20usin\ + g\x20the\x20`Descriptor`\x20grammar.\n\n\x20The\x20primary\x20use-case\ + \x20for\x20this\x20field\x20is\x20to\x20allow\x20local\x20symbol\x20to\ + \x20be\x20displayed\n\x20in\x20a\x20symbol\x20hierarchy\x20for\x20API\ + \x20documentation.\x20It's\x20OK\x20to\x20leave\x20this\x20field\n\x20em\ + pty\x20for\x20local\x20variables\x20since\x20local\x20variables\x20usual\ + ly\x20don't\x20belong\x20in\x20API\n\x20documentation.\x20However,\x20in\ + \x20the\x20situation\x20that\x20you\x20wish\x20to\x20include\x20a\x20loc\ + al\n\x20symbol\x20in\x20the\x20hierarchy,\x20then\x20you\x20can\x20use\ + \x20`enclosing_symbol`\x20to\x20locate\x20the\n\x20\"parent\"\x20or\x20\ + \"owner\"\x20of\x20this\x20local\x20symbol.\x20For\x20example,\x20a\x20J\ + ava\x20indexer\x20may\n\x20choose\x20to\x20use\x20local\x20symbols\x20fo\ + r\x20private\x20class\x20fields\x20while\x20providing\x20an\n\x20`enclos\ + ing_symbol`\x20to\x20reference\x20the\x20enclosing\x20class\x20to\x20all\ + ow\x20the\x20field\x20to\n\x20be\x20part\x20of\x20the\x20class\x20docume\ + ntation\x20hierarchy.\x20From\x20the\x20perspective\x20of\x20an\n\x20aut\ + hor\x20of\x20an\x20indexer,\x20the\x20decision\x20to\x20use\x20a\x20loca\ + l\x20symbol\x20or\x20global\x20symbol\n\x20should\x20exclusively\x20be\ + \x20determined\x20whether\x20the\x20local\x20symbol\x20is\x20accessible\ + \n\x20outside\x20the\x20document,\x20not\x20by\x20the\x20capability\x20t\ + o\x20find\x20the\x20enclosing\n\x20symbol.\n\n\r\n\x05\x04\x08\x02\x06\ + \x05\x12\x04\xd0\x03\x02\x08\n\r\n\x05\x04\x08\x02\x06\x01\x12\x04\xd0\ + \x03\t\x19\n\r\n\x05\x04\x08\x02\x06\x03\x12\x04\xd0\x03\x1c\x1d\n\x0c\n\ + \x02\x04\t\x12\x06\xd3\x03\0\x87\x04\x01\n\x0b\n\x03\x04\t\x01\x12\x04\ + \xd3\x03\x08\x14\n\x0c\n\x04\x04\t\x02\0\x12\x04\xd4\x03\x02\x14\n\r\n\ + \x05\x04\t\x02\0\x05\x12\x04\xd4\x03\x02\x08\n\r\n\x05\x04\t\x02\0\x01\ + \x12\x04\xd4\x03\t\x0f\n\r\n\x05\x04\t\x02\0\x03\x12\x04\xd4\x03\x12\x13\ + \n\xde\x08\n\x04\x04\t\x02\x01\x12\x04\xed\x03\x02\x18\x1a\xcf\x08\x20Wh\ + en\x20resolving\x20\"Find\x20references\",\x20this\x20field\x20documents\ + \x20what\x20other\x20symbols\n\x20should\x20be\x20included\x20together\ + \x20with\x20this\x20symbol.\x20For\x20example,\x20consider\x20the\n\x20f\ + ollowing\x20TypeScript\x20code\x20that\x20defines\x20two\x20symbols\x20`\ + Animal#sound()`\x20and\n\x20`Dog#sound()`:\n\x20```ts\n\x20interface\x20\ + Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^\x20defin\ + ition\x20Animal#\n\x20\x20\x20sound():\x20string\n\x20\x20\x20^^^^^\x20d\ + efinition\x20Animal#sound()\n\x20}\n\x20class\x20Dog\x20implements\x20An\ + imal\x20{\n\x20\x20\x20\x20\x20\x20\x20^^^\x20definition\x20Dog#,\x20rel\ + ationships\x20=\x20[{symbol:\x20\"Animal#\",\x20is_implementation:\x20tr\ + ue}]\n\x20\x20\x20public\x20sound():\x20string\x20{\x20return\x20\"woof\ + \"\x20}\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20definition\x20\ + Dog#sound(),\x20references_symbols\x20=\x20Animal#sound(),\x20relationsh\ + ips\x20=\x20[{symbol:\x20\"Animal#sound()\",\x20is_implementation:true,\ + \x20is_reference:\x20true}]\n\x20}\n\x20const\x20animal:\x20Animal\x20=\ + \x20new\x20Dog()\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20^^^^^^\x20reference\x20Animal#\n\x20console.log(animal.sound())\ + \n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20^^^^^\x20reference\x20Animal#sound()\n\x20```\n\x20Doing\x20\ + \"Find\x20references\"\x20on\x20the\x20symbol\x20`Animal#sound()`\x20sho\ + uld\x20return\n\x20references\x20to\x20the\x20`Dog#sound()`\x20method\ + \x20as\x20well.\x20Vice-versa,\x20doing\x20\"Find\n\x20references\"\x20o\ + n\x20the\x20`Dog#sound()`\x20method\x20should\x20include\x20references\ + \x20to\x20the\n\x20`Animal#sound()`\x20method\x20as\x20well.\n\n\r\n\x05\ + \x04\t\x02\x01\x05\x12\x04\xed\x03\x02\x06\n\r\n\x05\x04\t\x02\x01\x01\ + \x12\x04\xed\x03\x07\x13\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\xed\x03\x16\ + \x17\n\xee\x03\n\x04\x04\t\x02\x02\x12\x04\xf6\x03\x02\x1d\x1a\xdf\x03\ + \x20Similar\x20to\x20`is_reference`\x20but\x20for\x20\"Find\x20implement\ + ations\".\n\x20It's\x20common\x20for\x20`is_implementation`\x20and\x20`i\ + s_reference`\x20to\x20both\x20be\x20true\x20but\n\x20it's\x20not\x20alwa\ + ys\x20the\x20case.\n\x20In\x20the\x20TypeScript\x20example\x20above,\x20\ + observe\x20that\x20`Dog#`\x20has\x20an\n\x20`is_implementation`\x20relat\ + ionship\x20with\x20`\"Animal#\"`\x20but\x20not\x20`is_reference`.\n\x20T\ + his\x20is\x20because\x20\"Find\x20references\"\x20on\x20the\x20\"Animal#\ + \"\x20symbol\x20should\x20not\x20return\n\x20\"Dog#\".\x20We\x20only\x20\ + want\x20\"Dog#\"\x20to\x20return\x20as\x20a\x20result\x20for\x20\"Find\n\ + \x20implementations\"\x20on\x20the\x20\"Animal#\"\x20symbol.\n\n\r\n\x05\ + \x04\t\x02\x02\x05\x12\x04\xf6\x03\x02\x06\n\r\n\x05\x04\t\x02\x02\x01\ + \x12\x04\xf6\x03\x07\x18\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\xf6\x03\x1b\ + \x1c\nP\n\x04\x04\t\x02\x03\x12\x04\xf8\x03\x02\x1e\x1aB\x20Similar\x20t\ + o\x20`references_symbols`\x20but\x20for\x20\"Go\x20to\x20type\x20definit\ + ion\".\n\n\r\n\x05\x04\t\x02\x03\x05\x12\x04\xf8\x03\x02\x06\n\r\n\x05\ + \x04\t\x02\x03\x01\x12\x04\xf8\x03\x07\x19\n\r\n\x05\x04\t\x02\x03\x03\ + \x12\x04\xf8\x03\x1c\x1d\n\xd8\x05\n\x04\x04\t\x02\x04\x12\x04\x85\x04\ + \x02\x19\x1a\x86\x05\x20Allows\x20overriding\x20the\x20behavior\x20of\ + \x20\"Go\x20to\x20definition\"\x20and\x20\"Find\x20references\"\n\x20for\ + \x20symbols\x20which\x20do\x20not\x20have\x20a\x20definition\x20of\x20th\ + eir\x20own\x20or\x20could\n\x20potentially\x20have\x20multiple\x20defini\ + tions.\n\n\x20For\x20example,\x20in\x20a\x20language\x20with\x20single\ + \x20inheritance\x20and\x20no\x20field\x20overriding,\n\x20inherited\x20f\ + ields\x20can\x20reuse\x20the\x20same\x20symbol\x20as\x20the\x20ancestor\ + \x20which\x20declares\n\x20the\x20field.\x20In\x20such\x20a\x20situation\ + ,\x20is_definition\x20is\x20not\x20needed.\n\n\x20On\x20the\x20other\x20\ + hand,\x20in\x20languages\x20with\x20single\x20inheritance\x20and\x20some\ + \x20form\n\x20of\x20mixins,\x20you\x20can\x20use\x20is_definition\x20to\ + \x20relate\x20the\x20symbol\x20to\x20the\n\x20matching\x20symbol\x20in\ + \x20ancestor\x20classes,\x20and\x20is_reference\x20to\x20relate\x20the\n\ + \x20symbol\x20to\x20the\x20matching\x20symbol\x20in\x20mixins.\n\"A\x20U\ + pdate\x20registerInverseRelationships\x20on\x20adding\x20a\x20new\x20fie\ + ld\x20here.\n\n\r\n\x05\x04\t\x02\x04\x05\x12\x04\x85\x04\x02\x06\n\r\n\ + \x05\x04\t\x02\x04\x01\x12\x04\x85\x04\x07\x14\n\r\n\x05\x04\t\x02\x04\ + \x03\x12\x04\x85\x04\x17\x18\n\x88\x03\n\x02\x05\x03\x12\x06\x8e\x04\0\ + \xa4\x04\x01\x1a\xf9\x02\x20SymbolRole\x20declares\x20what\x20\"role\"\ + \x20a\x20symbol\x20has\x20in\x20an\x20occurrence.\x20A\x20role\x20is\n\ + \x20encoded\x20as\x20a\x20bitset\x20where\x20each\x20bit\x20represents\ + \x20a\x20different\x20role.\x20For\x20example,\n\x20to\x20determine\x20i\ + f\x20the\x20`Import`\x20role\x20is\x20set,\x20test\x20whether\x20the\x20\ + second\x20bit\x20of\x20the\n\x20enum\x20value\x20is\x20defined.\x20In\ + \x20pseudocode,\x20this\x20can\x20be\x20implemented\x20with\x20the\n\x20\ + logic:\x20`const\x20isImportRole\x20=\x20(role.value\x20&\x20SymbolRole.\ + Import.value)\x20>\x200`.\n\n\x0b\n\x03\x05\x03\x01\x12\x04\x8e\x04\x05\ + \x0f\nv\n\x04\x05\x03\x02\0\x12\x04\x91\x04\x02\x1c\x1ah\x20This\x20case\ + \x20is\x20not\x20meant\x20to\x20be\x20used;\x20it\x20only\x20exists\x20t\ + o\x20avoid\x20an\x20error\n\x20from\x20the\x20Protobuf\x20code\x20genera\ + tor.\n\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\x91\x04\x02\x17\n\r\n\x05\x05\ + \x03\x02\0\x02\x12\x04\x91\x04\x1a\x1b\nT\n\x04\x05\x03\x02\x01\x12\x04\ + \x93\x04\x02\x13\x1aF\x20Is\x20the\x20symbol\x20defined\x20here?\x20If\ + \x20not,\x20then\x20this\x20is\x20a\x20symbol\x20reference.\n\n\r\n\x05\ + \x05\x03\x02\x01\x01\x12\x04\x93\x04\x02\x0c\n\r\n\x05\x05\x03\x02\x01\ + \x02\x12\x04\x93\x04\x0f\x12\n,\n\x04\x05\x03\x02\x02\x12\x04\x95\x04\ + \x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\x20imported\x20here?\n\n\r\n\x05\ + \x05\x03\x02\x02\x01\x12\x04\x95\x04\x02\x08\n\r\n\x05\x05\x03\x02\x02\ + \x02\x12\x04\x95\x04\x0b\x0e\n+\n\x04\x05\x03\x02\x03\x12\x04\x97\x04\ + \x02\x14\x1a\x1d\x20Is\x20the\x20symbol\x20written\x20here?\n\n\r\n\x05\ + \x05\x03\x02\x03\x01\x12\x04\x97\x04\x02\r\n\r\n\x05\x05\x03\x02\x03\x02\ + \x12\x04\x97\x04\x10\x13\n(\n\x04\x05\x03\x02\x04\x12\x04\x99\x04\x02\ + \x13\x1a\x1a\x20Is\x20the\x20symbol\x20read\x20here?\n\n\r\n\x05\x05\x03\ + \x02\x04\x01\x12\x04\x99\x04\x02\x0c\n\r\n\x05\x05\x03\x02\x04\x02\x12\ + \x04\x99\x04\x0f\x12\n0\n\x04\x05\x03\x02\x05\x12\x04\x9b\x04\x02\x13\ + \x1a\"\x20Is\x20the\x20symbol\x20in\x20generated\x20code?\n\n\r\n\x05\ + \x05\x03\x02\x05\x01\x12\x04\x9b\x04\x02\x0b\n\r\n\x05\x05\x03\x02\x05\ + \x02\x12\x04\x9b\x04\x0e\x12\n+\n\x04\x05\x03\x02\x06\x12\x04\x9d\x04\ + \x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\x20test\x20code?\n\n\r\n\ + \x05\x05\x03\x02\x06\x01\x12\x04\x9d\x04\x02\x06\n\r\n\x05\x05\x03\x02\ + \x06\x02\x12\x04\x9d\x04\t\r\n\xed\x01\n\x04\x05\x03\x02\x07\x12\x04\xa3\ + \x04\x02\x1b\x1a\xde\x01\x20Is\x20this\x20a\x20signature\x20for\x20a\x20\ + symbol\x20that\x20is\x20defined\x20elsewhere?\n\n\x20Applies\x20to\x20fo\ + rward\x20declarations\x20for\x20languages\x20like\x20C,\x20C++\n\x20and\ + \x20Objective-C,\x20as\x20well\x20as\x20`val`\x20declarations\x20in\x20i\ + nterface\n\x20files\x20in\x20languages\x20like\x20SML\x20and\x20OCaml.\n\ + \n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\xa3\x04\x02\x13\n\r\n\x05\x05\x03\ + \x02\x07\x02\x12\x04\xa3\x04\x16\x1a\n\x0c\n\x02\x05\x04\x12\x06\xa6\x04\ + \0\x83\x05\x01\n\x0b\n\x03\x05\x04\x01\x12\x04\xa6\x04\x05\x0f\n\x0b\n\ + \x03\x05\x04\x03\x12\x04\xa7\x04\x02\x1c\n\x0c\n\x04\x05\x04\x03\x02\x12\ + \x04\xa7\x04\x02\x1c\n\x0c\n\x04\x05\x04\x02\0\x12\x04\xa9\x04\x02\x1c\n\ + \r\n\x05\x05\x04\x02\0\x01\x12\x04\xa9\x04\x02\x17\n\r\n\x05\x05\x04\x02\ + \0\x02\x12\x04\xa9\x04\x1a\x1b\n;\n\x04\x05\x04\x02\x01\x12\x04\xac\x04\ + \x02\x0e\x1a-\x20Comment,\x20including\x20comment\x20markers\x20and\x20t\ + ext\n\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\xac\x04\x02\t\n\r\n\x05\x05\ + \x04\x02\x01\x02\x12\x04\xac\x04\x0c\r\n\x1b\n\x04\x05\x04\x02\x02\x12\ + \x04\xaf\x04\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,`\n\n\r\n\x05\x05\x04\x02\ + \x02\x01\x12\x04\xaf\x04\x02\x16\n\r\n\x05\x05\x04\x02\x02\x02\x12\x04\ + \xaf\x04\x19\x1a\n2\n\x04\x05\x04\x02\x03\x12\x04\xb1\x04\x02\x19\x1a$\ + \x20(),\x20{},\x20[]\x20when\x20used\x20syntactically\n\n\r\n\x05\x05\ + \x04\x02\x03\x01\x12\x04\xb1\x04\x02\x14\n\r\n\x05\x05\x04\x02\x03\x02\ + \x12\x04\xb1\x04\x17\x18\n5\n\x04\x05\x04\x02\x04\x12\x04\xb4\x04\x02\ + \x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class`,\x20etc.\n\n\r\n\ + \x05\x05\x04\x02\x04\x01\x12\x04\xb4\x04\x02\t\n\r\n\x05\x05\x04\x02\x04\ + \x02\x12\x04\xb4\x04\x0c\r\n\x0c\n\x04\x05\x04\x02\x05\x12\x04\xb5\x04\ + \x02,\n\r\n\x05\x05\x04\x02\x05\x01\x12\x04\xb5\x04\x02\x13\n\r\n\x05\ + \x05\x04\x02\x05\x02\x12\x04\xb5\x04\x16\x17\n\r\n\x05\x05\x04\x02\x05\ + \x03\x12\x04\xb5\x04\x18+\n\x0e\n\x06\x05\x04\x02\x05\x03\x01\x12\x04\ + \xb5\x04\x19*\n\x1e\n\x04\x05\x04\x02\x06\x12\x04\xb8\x04\x02\x19\x1a\ + \x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x06\x01\x12\x04\xb8\ + \x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\x12\x04\xb8\x04\x17\x18\nX\n\ + \x04\x05\x04\x02\x07\x12\x04\xbb\x04\x02\x11\x1aJ\x20non-specific\x20cat\ + ch-all\x20for\x20any\x20identifier\x20not\x20better\x20described\x20else\ + where\n\n\r\n\x05\x05\x04\x02\x07\x01\x12\x04\xbb\x04\x02\x0c\n\r\n\x05\ + \x05\x04\x02\x07\x02\x12\x04\xbb\x04\x0f\x10\nN\n\x04\x05\x04\x02\x08\ + \x12\x04\xbd\x04\x02\x18\x1a@\x20Identifiers\x20builtin\x20to\x20the\x20\ + language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\x05\x05\x04\x02\ + \x08\x01\x12\x04\xbd\x04\x02\x13\n\r\n\x05\x05\x04\x02\x08\x02\x12\x04\ + \xbd\x04\x16\x17\n[\n\x04\x05\x04\x02\t\x12\x04\xbf\x04\x02\x15\x1aM\x20\ + Identifiers\x20representing\x20`null`-like\x20values:\x20`None`\x20in\ + \x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x04\x02\t\x01\x12\x04\ + \xbf\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\x02\x12\x04\xbf\x04\x13\x14\n.\ + \n\x04\x05\x04\x02\n\x12\x04\xc1\x04\x02\x19\x1a\x20\x20`xyz`\x20in\x20`\ + const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x04\x02\n\x01\x12\x04\ + \xc1\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\x02\x12\x04\xc1\x04\x17\x18\n'\ + \n\x04\x05\x04\x02\x0b\x12\x04\xc3\x04\x02\x1f\x1a\x19\x20`var\x20X\x20=\ + \x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\x0b\x01\x12\x04\xc3\ + \x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\x02\x12\x04\xc3\x04\x1c\x1e\n3\n\ + \x04\x05\x04\x02\x0c\x12\x04\xc5\x04\x02\x1b\x1a%\x20Parameter\x20defini\ + tion\x20and\x20references\n\n\r\n\x05\x05\x04\x02\x0c\x01\x12\x04\xc5\ + \x04\x02\x15\n\r\n\x05\x05\x04\x02\x0c\x02\x12\x04\xc5\x04\x18\x1a\nX\n\ + \x04\x05\x04\x02\r\x12\x04\xc7\x04\x02\x17\x1aJ\x20Identifiers\x20for\ + \x20variable\x20definitions\x20and\x20references\x20within\x20a\x20local\ + \x20scope\n\n\r\n\x05\x05\x04\x02\r\x01\x12\x04\xc7\x04\x02\x11\n\r\n\ + \x05\x05\x04\x02\r\x02\x12\x04\xc7\x04\x14\x16\nK\n\x04\x05\x04\x02\x0e\ + \x12\x04\xc9\x04\x02\x1a\x1a=\x20Identifiers\x20that\x20shadow\x20other\ + \x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\x05\x05\x04\x02\ + \x0e\x01\x12\x04\xc9\x04\x02\x14\n\r\n\x05\x05\x04\x02\x0e\x02\x12\x04\ + \xc9\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\x02\x0f\x12\x04\xce\x04\x02\x1b\ + \x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\x20of\x20code\ + \x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20This\x20corres\ + ponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20languages,\n\ + \x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\x20and\x20Ja\ + vaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\x04\xce\x04\x02\x15\n\r\n\ + \x05\x05\x04\x02\x0f\x02\x12\x04\xce\x04\x18\x1a\n\x0c\n\x04\x05\x04\x02\ + \x10\x12\x04\xcf\x04\x02,\n\r\n\x05\x05\x04\x02\x10\x01\x12\x04\xcf\x04\ + \x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\x04\xcf\x04\x15\x17\n\r\n\x05\ + \x05\x04\x02\x10\x03\x12\x04\xcf\x04\x18+\n\x0e\n\x06\x05\x04\x02\x10\ + \x03\x01\x12\x04\xcf\x04\x19*\n4\n\x04\x05\x04\x02\x11\x12\x04\xd2\x04\ + \x02\x1a\x1a&\x20Function\x20references,\x20including\x20calls\n\n\r\n\ + \x05\x05\x04\x02\x11\x01\x12\x04\xd2\x04\x02\x14\n\r\n\x05\x05\x04\x02\ + \x11\x02\x12\x04\xd2\x04\x17\x19\n(\n\x04\x05\x04\x02\x12\x12\x04\xd4\ + \x04\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\r\n\x05\x05\x04\ + \x02\x12\x01\x12\x04\xd4\x04\x02\x1e\n\r\n\x05\x05\x04\x02\x12\x02\x12\ + \x04\xd4\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\xd7\x04\x02\x17\x1a)\x20\ + Macro\x20references,\x20including\x20invocations\n\n\r\n\x05\x05\x04\x02\ + \x13\x01\x12\x04\xd7\x04\x02\x11\n\r\n\x05\x05\x04\x02\x13\x02\x12\x04\ + \xd7\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\x04\xd9\x04\x02!\x1a\x17\ + \x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x04\x02\x14\x01\x12\x04\ + \xd9\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\x12\x04\xd9\x04\x1e\x20\n\ + !\n\x04\x05\x04\x02\x15\x12\x04\xdc\x04\x02\x16\x1a\x13\x20non-builtin\ + \x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\x04\xdc\x04\x02\x10\n\r\n\ + \x05\x05\x04\x02\x15\x02\x12\x04\xdc\x04\x13\x15\nK\n\x04\x05\x04\x02\ + \x16\x12\x04\xde\x04\x02\x1d\x1a=\x20builtin\x20types\x20only,\x20such\ + \x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\x20Go\n\n\r\n\x05\ + \x05\x04\x02\x16\x01\x12\x04\xde\x04\x02\x17\n\r\n\x05\x05\x04\x02\x16\ + \x02\x12\x04\xde\x04\x1a\x1c\n7\n\x04\x05\x04\x02\x17\x12\x04\xe1\x04\ + \x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__attribute__\n\n\r\ + \n\x05\x05\x04\x02\x17\x01\x12\x04\xe1\x04\x02\x15\n\r\n\x05\x05\x04\x02\ + \x17\x02\x12\x04\xe1\x04\x18\x1a\n\x14\n\x04\x05\x04\x02\x18\x12\x04\xe4\ + \x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x04\x02\x18\x01\x12\x04\ + \xe4\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\x12\x04\xe4\x04\x10\x12\n\ + \x18\n\x04\x05\x04\x02\x19\x12\x04\xe6\x04\x02\x15\x1a\n\x20`*`,\x20`+`\ + \n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xe6\x04\x02\x0f\n\r\n\x05\x05\ + \x04\x02\x19\x02\x12\x04\xe6\x04\x12\x14\n\x13\n\x04\x05\x04\x02\x1a\x12\ + \x04\xe8\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x04\x02\x1a\x01\x12\ + \x04\xe8\x04\x02\x0f\n\r\n\x05\x05\x04\x02\x1a\x02\x12\x04\xe8\x04\x12\ + \x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xea\x04\x02\x16\x1a\x14\x20`(`,\ + \x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\x02\x1b\x01\x12\x04\xea\x04\ + \x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\x04\xea\x04\x13\x15\n\x18\n\ + \x04\x05\x04\x02\x1c\x12\x04\xec\x04\x02\x11\x1a\n\x20`|`,\x20`-`\n\n\r\ + \n\x05\x05\x04\x02\x1c\x01\x12\x04\xec\x04\x02\x0b\n\r\n\x05\x05\x04\x02\ + \x1c\x02\x12\x04\xec\x04\x0e\x10\n0\n\x04\x05\x04\x02\x1d\x12\x04\xef\ + \x04\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\x20world!\"\n\n\r\ + \n\x05\x05\x04\x02\x1d\x01\x12\x04\xef\x04\x02\x0f\n\r\n\x05\x05\x04\x02\ + \x1d\x02\x12\x04\xef\x04\x12\x14\n-\n\x04\x05\x04\x02\x1e\x12\x04\xf1\ + \x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\",\x20\"\\n\"\n\n\ + \r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xf1\x04\x02\x15\n\r\n\x05\x05\x04\ + \x02\x1e\x02\x12\x04\xf1\x04\x18\x1a\n_\n\x04\x05\x04\x02\x1f\x12\x04\ + \xf3\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20special\x20w\ + ords\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20strings\n\n\r\ + \n\x05\x05\x04\x02\x1f\x01\x12\x04\xf3\x04\x02\x16\n\r\n\x05\x05\x04\x02\ + \x1f\x02\x12\x04\xf3\x04\x19\x1b\nG\n\x04\x05\x04\x02\x20\x12\x04\xf5\ + \x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"value\"\x20},\ + \x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x04\x02\x20\ + \x01\x12\x04\xf5\x04\x02\x12\n\r\n\x05\x05\x04\x02\x20\x02\x12\x04\xf5\ + \x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xf7\x04\x02\x18\x1aH\x20'c'\ + \x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\x20string\ + s\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\x12\x04\xf7\x04\x02\ + \x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xf7\x04\x15\x17\n9\n\x04\x05\x04\ + \x02\"\x12\x04\xf9\x04\x02\x16\x1a+\x20Literal\x20numbers,\x20both\x20fl\ + oats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\x01\x12\x04\xf9\x04\ + \x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xf9\x04\x13\x15\n\x1f\n\x04\ + \x05\x04\x02#\x12\x04\xfb\x04\x02\x16\x1a\x11\x20`true`,\x20`false`\n\n\ + \r\n\x05\x05\x04\x02#\x01\x12\x04\xfb\x04\x02\x10\n\r\n\x05\x05\x04\x02#\ + \x02\x12\x04\xfb\x04\x13\x15\n&\n\x04\x05\x04\x02$\x12\x04\xfe\x04\x02\ + \x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02$\ + \x01\x12\x04\xfe\x04\x02\x05\n\r\n\x05\x05\x04\x02$\x02\x12\x04\xfe\x04\ + \x08\n\n/\n\x04\x05\x04\x02%\x12\x04\x80\x05\x02\x14\x1a!\x20Attribute\ + \x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02%\x01\x12\x04\ + \x80\x05\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\x80\x05\x11\x13\n,\n\ + \x04\x05\x04\x02&\x12\x04\x82\x05\x02\x14\x1a\x1e\x20Delimiters\x20for\ + \x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\x82\x05\x02\ + \x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\x82\x05\x11\x13\n\xf9\x01\n\x02\ + \x04\n\x12\x06\x8a\x05\0\xeb\x05\x01\x1a\xea\x01\x20Occurrence\x20associ\ + ates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/or\x20high\ + lighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\x20should\ + \x20try\x20to\x20bundle\x20logically\x20related\x20information\n\x20acro\ + ss\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\x20reduce\ + \x20payload\x20sizes.\n\n\x0b\n\x03\x04\n\x01\x12\x04\x8a\x05\x08\x12\n\ + \xe8\x08\n\x04\x04\n\x02\0\x12\x04\xa2\x05\x02\x1b\x1a\xd9\x08\x20Half-o\ + pen\x20[start,\x20end)\x20range\x20of\x20this\x20occurrence.\x20Must\x20\ + be\x20exactly\x20three\x20or\x20four\n\x20elements:\n\n\x20-\x20Four\x20\ + elements:\x20`[startLine,\x20startCharacter,\x20endLine,\x20endCharacter\ + ]`\n\x20-\x20Three\x20elements:\x20`[startLine,\x20startCharacter,\x20en\ + dCharacter]`.\x20The\x20end\x20line\n\x20\x20\x20is\x20inferred\x20to\ + \x20have\x20the\x20same\x20value\x20as\x20the\x20start\x20line.\n\n\x20I\ + t\x20is\x20allowed\x20for\x20the\x20range\x20to\x20be\x20empty\x20(i.e.\ + \x20start==end).\n\n\x20Line\x20numbers\x20and\x20characters\x20are\x20a\ + lways\x200-based.\x20Make\x20sure\x20to\x20increment\x20the\n\x20line/ch\ + aracter\x20values\x20before\x20displaying\x20them\x20in\x20an\x20editor-\ + like\x20UI\x20because\n\x20editors\x20conventionally\x20use\x201-based\ + \x20numbers.\n\n\x20The\x20'character'\x20value\x20is\x20interpreted\x20\ + based\x20on\x20the\x20PositionEncoding\x20for\n\x20the\x20Document.\n\n\ + \x20Historical\x20note:\x20the\x20original\x20draft\x20of\x20this\x20sch\ + ema\x20had\x20a\x20`Range`\x20message\n\x20type\x20with\x20`start`\x20an\ + d\x20`end`\x20fields\x20of\x20type\x20`Position`,\x20mirroring\x20LSP.\n\ + \x20Benchmarks\x20revealed\x20that\x20this\x20encoding\x20was\x20ineffic\ + ient\x20and\x20that\x20we\x20could\n\x20reduce\x20the\x20total\x20payloa\ + d\x20size\x20of\x20an\x20index\x20by\x2050%\x20by\x20using\x20`repeated\ + \x20int32`\n\x20instead.\x20The\x20`repeated\x20int32`\x20encoding\x20is\ + \x20admittedly\x20more\x20embarrassing\x20to\n\x20work\x20with\x20in\x20\ + some\x20programming\x20languages\x20but\x20we\x20hope\x20the\x20performa\ + nce\n\x20improvements\x20make\x20up\x20for\x20it.\n\n\r\n\x05\x04\n\x02\ + \0\x04\x12\x04\xa2\x05\x02\n\n\r\n\x05\x04\n\x02\0\x05\x12\x04\xa2\x05\ + \x0b\x10\n\r\n\x05\x04\n\x02\0\x01\x12\x04\xa2\x05\x11\x16\n\r\n\x05\x04\ + \n\x02\0\x03\x12\x04\xa2\x05\x19\x1a\n\x8a\x01\n\x04\x04\n\x02\x01\x12\ + \x04\xa5\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20that\x20appe\ + ars\x20at\x20this\x20position.\x20See\n\x20`SymbolInformation.symbol`\ + \x20for\x20how\x20to\x20format\x20symbols\x20as\x20strings.\n\n\r\n\x05\ + \x04\n\x02\x01\x05\x12\x04\xa5\x05\x02\x08\n\r\n\x05\x04\n\x02\x01\x01\ + \x12\x04\xa5\x05\t\x0f\n\r\n\x05\x04\n\x02\x01\x03\x12\x04\xa5\x05\x12\ + \x13\n\x97\x01\n\x04\x04\n\x02\x02\x12\x04\xa8\x05\x02\x19\x1a\x88\x01\ + \x20(optional)\x20Bitset\x20containing\x20`SymbolRole`s\x20in\x20this\ + \x20occurrence.\n\x20See\x20`SymbolRole`'s\x20documentation\x20for\x20ho\ + w\x20to\x20read\x20and\x20write\x20this\x20field.\n\n\r\n\x05\x04\n\x02\ + \x02\x05\x12\x04\xa8\x05\x02\x07\n\r\n\x05\x04\n\x02\x02\x01\x12\x04\xa8\ + \x05\x08\x14\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xa8\x05\x17\x18\n\xf1\ + \x03\n\x04\x04\n\x02\x03\x12\x04\xb1\x05\x02-\x1a\xe2\x03\x20(optional)\ + \x20CommonMark-formatted\x20documentation\x20for\x20this\x20specific\x20\ + range.\x20If\n\x20empty,\x20the\x20`Symbol.documentation`\x20field\x20is\ + \x20used\x20instead.\x20One\x20example\n\x20where\x20this\x20field\x20mi\ + ght\x20be\x20useful\x20is\x20when\x20the\x20symbol\x20represents\x20a\ + \x20generic\n\x20function\x20(with\x20abstract\x20type\x20parameters\x20\ + such\x20as\x20`List`)\x20and\x20at\x20this\n\x20occurrence\x20we\x20k\ + now\x20the\x20exact\x20values\x20(such\x20as\x20`List`).\n\n\x20\ + This\x20field\x20can\x20also\x20be\x20used\x20for\x20dynamically\x20or\ + \x20gradually\x20typed\x20languages,\n\x20which\x20commonly\x20allow\x20\ + for\x20type-changing\x20assignment.\n\n\r\n\x05\x04\n\x02\x03\x04\x12\ + \x04\xb1\x05\x02\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\xb1\x05\x0b\x11\n\ + \r\n\x05\x04\n\x02\x03\x01\x12\x04\xb1\x05\x12(\n\r\n\x05\x04\n\x02\x03\ + \x03\x12\x04\xb1\x05+,\nX\n\x04\x04\n\x02\x04\x12\x04\xb3\x05\x02\x1d\ + \x1aJ\x20(optional)\x20What\x20syntax\x20highlighting\x20class\x20should\ + \x20be\x20used\x20for\x20this\x20range?\n\n\r\n\x05\x04\n\x02\x04\x06\ + \x12\x04\xb3\x05\x02\x0c\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xb3\x05\r\ + \x18\n\r\n\x05\x04\n\x02\x04\x03\x12\x04\xb3\x05\x1b\x1c\nW\n\x04\x04\n\ + \x02\x05\x12\x04\xb5\x05\x02&\x1aI\x20(optional)\x20Diagnostics\x20that\ + \x20have\x20been\x20reported\x20for\x20this\x20specific\x20range.\n\n\r\ + \n\x05\x04\n\x02\x05\x04\x12\x04\xb5\x05\x02\n\n\r\n\x05\x04\n\x02\x05\ + \x06\x12\x04\xb5\x05\x0b\x15\n\r\n\x05\x04\n\x02\x05\x01\x12\x04\xb5\x05\ + \x16!\n\r\n\x05\x04\n\x02\x05\x03\x12\x04\xb5\x05$%\n\xb7\x0e\n\x04\x04\ + \n\x02\x06\x12\x04\xea\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Using\x20th\ + e\x20same\x20encoding\x20as\x20the\x20sibling\x20`range`\x20field,\x20ha\ + lf-open\n\x20source\x20range\x20of\x20the\x20nearest\x20non-trivial\x20e\ + nclosing\x20AST\x20node.\x20This\x20range\x20must\n\x20enclose\x20the\ + \x20`range`\x20field.\x20Example\x20applications\x20that\x20make\x20use\ + \x20of\x20the\n\x20enclosing_range\x20field:\n\n\x20-\x20Call\x20hierarc\ + hies:\x20to\x20determine\x20what\x20symbols\x20are\x20references\x20from\ + \x20the\x20body\n\x20\x20\x20of\x20a\x20function\n\x20-\x20Symbol\x20out\ + line:\x20to\x20display\x20breadcrumbs\x20from\x20the\x20cursor\x20positi\ + on\x20to\x20the\n\x20\x20\x20root\x20of\x20the\x20file\n\x20-\x20Expand\ + \x20selection:\x20to\x20select\x20the\x20nearest\x20enclosing\x20AST\x20\ + node.\n\x20-\x20Highlight\x20range:\x20to\x20indicate\x20the\x20AST\x20e\ + xpression\x20that\x20is\x20associated\x20with\x20a\n\x20\x20\x20hover\ + \x20popover\n\n\x20For\x20definition\x20occurrences,\x20the\x20enclosing\ + \x20range\x20should\x20indicate\x20the\n\x20start/end\x20bounds\x20of\ + \x20the\x20entire\x20definition\x20AST\x20node,\x20including\n\x20docume\ + ntation.\n\x20```\n\x20const\x20n\x20=\x203\n\x20\x20\x20\x20\x20\x20\ + \x20^\x20range\n\x20^^^^^^^^^^^\x20enclosing_range\n\n\x20/**\x20Parses\ + \x20the\x20string\x20into\x20something\x20*/\n\x20^\x20enclosing_range\ + \x20start\x20--------------------------------------|\n\x20function\x20pa\ + rse(input\x20string):\x20string\x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20range\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20|\n\x20\x20\x20\x20\x20return\x20input.slice(n)\x20\x20\x20\x20\x20\ + |\n\x20\x20\x20\x20\x20return\x20input.slice(n)\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20}\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20}\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20|\n\x20^\x20enclosing_range\x20end\x20<-------------\ - --------------------------|\n\x20```\n\n\x20Any\x20attributes/decorators\ - /attached\x20macros\x20should\x20also\x20be\x20part\x20of\x20the\n\x20en\ - closing\x20range.\n\n\x20```python\n\x20@cache\n\x20^\x20enclosing_range\ - \x20start---------------------|\n\x20def\x20factorial(n):\x20\x20\x20\ + \x20\x20\x20\x20|\n\x20^\x20enclosing_range\x20end\x20<-----------------\ + ----------------------|\n\x20```\n\n\x20Any\x20attributes/decorators/att\ + ached\x20macros\x20should\x20also\x20be\x20part\x20of\x20the\n\x20enclos\ + ing\x20range.\n\n\x20```python\n\x20@cache\n\x20^\x20enclosing_range\x20\ + start---------------------|\n\x20def\x20factorial(n):\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20|\n\x20\x20\x20\x20\x20return\x20n\x20*\x20facto\ - rial(n-1)\x20if\x20n\x20else\x201\x20\x20\x20|\n\x20<\x20enclosing_range\ - \x20end-----------------------|\n\n\x20```\n\n\x20For\x20reference\x20oc\ - currences,\x20the\x20enclosing\x20range\x20should\x20indicate\x20the\x20\ - start/end\n\x20bounds\x20of\x20the\x20parent\x20expression.\n\x20```\n\ - \x20const\x20a\x20=\x20a.b\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20^\x20range\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^\x20e\ - nclosing_range\n\x20const\x20b\x20=\x20a.b(41).f(42).g(43)\n\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^\x20ran\ - ge\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^^^^^^^^\x20enclosi\ - ng_range\n\x20```\n\n\r\n\x05\x04\n\x02\x06\x04\x12\x04\xe4\x05\x02\n\n\ - \r\n\x05\x04\n\x02\x06\x05\x12\x04\xe4\x05\x0b\x10\n\r\n\x05\x04\n\x02\ - \x06\x01\x12\x04\xe4\x05\x11\x20\n\r\n\x05\x04\n\x02\x06\x03\x12\x04\xe4\ - \x05#$\nw\n\x02\x04\x0b\x12\x06\xe9\x05\0\xf4\x05\x01\x1ai\x20Represents\ - \x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\x20or\x20wa\ - rning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\x20document.\n\ - \n\x0b\n\x03\x04\x0b\x01\x12\x04\xe9\x05\x08\x12\nW\n\x04\x04\x0b\x02\0\ - \x12\x04\xeb\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20r\ + \x20\x20\x20\x20\x20|\n\x20\x20\x20\x20\x20return\x20n\x20*\x20factorial\ + (n-1)\x20if\x20n\x20else\x201\x20\x20\x20|\n\x20<\x20enclosing_range\x20\ + end-----------------------|\n\n\x20```\n\n\x20For\x20reference\x20occurr\ + ences,\x20the\x20enclosing\x20range\x20should\x20indicate\x20the\x20star\ + t/end\n\x20bounds\x20of\x20the\x20parent\x20expression.\n\x20```\n\x20co\ + nst\x20a\x20=\x20a.b\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20^\x20range\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^\x20enclo\ + sing_range\n\x20const\x20b\x20=\x20a.b(41).f(42).g(43)\n\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^\x20range\n\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^^^^^^^^\x20enclosing_r\ + ange\n\x20```\n\n\r\n\x05\x04\n\x02\x06\x04\x12\x04\xea\x05\x02\n\n\r\n\ + \x05\x04\n\x02\x06\x05\x12\x04\xea\x05\x0b\x10\n\r\n\x05\x04\n\x02\x06\ + \x01\x12\x04\xea\x05\x11\x20\n\r\n\x05\x04\n\x02\x06\x03\x12\x04\xea\x05\ + #$\nw\n\x02\x04\x0b\x12\x06\xef\x05\0\xfa\x05\x01\x1ai\x20Represents\x20\ + a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\x20or\x20warnin\ + g,\x20which\x20should\x20be\n\x20reported\x20for\x20a\x20document.\n\n\ + \x0b\n\x03\x04\x0b\x01\x12\x04\xef\x05\x08\x12\nW\n\x04\x04\x0b\x02\0\ + \x12\x04\xf1\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20r\ eported\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20hint?\n\n\r\ - \n\x05\x04\x0b\x02\0\x06\x12\x04\xeb\x05\x02\n\n\r\n\x05\x04\x0b\x02\0\ - \x01\x12\x04\xeb\x05\x0b\x13\n\r\n\x05\x04\x0b\x02\0\x03\x12\x04\xeb\x05\ - \x16\x17\n]\n\x04\x04\x0b\x02\x01\x12\x04\xed\x05\x02\x12\x1aO\x20(optio\ + \n\x05\x04\x0b\x02\0\x06\x12\x04\xf1\x05\x02\n\n\r\n\x05\x04\x0b\x02\0\ + \x01\x12\x04\xf1\x05\x0b\x13\n\r\n\x05\x04\x0b\x02\0\x03\x12\x04\xf1\x05\ + \x16\x17\n]\n\x04\x04\x0b\x02\x01\x12\x04\xf3\x05\x02\x12\x1aO\x20(optio\ nal)\x20Code\x20of\x20this\x20diagnostic,\x20which\x20might\x20appear\ \x20in\x20the\x20user\x20interface.\n\n\r\n\x05\x04\x0b\x02\x01\x05\x12\ - \x04\xed\x05\x02\x08\n\r\n\x05\x04\x0b\x02\x01\x01\x12\x04\xed\x05\t\r\n\ - \r\n\x05\x04\x0b\x02\x01\x03\x12\x04\xed\x05\x10\x11\n+\n\x04\x04\x0b\ - \x02\x02\x12\x04\xef\x05\x02\x15\x1a\x1d\x20Message\x20of\x20this\x20dia\ - gnostic.\n\n\r\n\x05\x04\x0b\x02\x02\x05\x12\x04\xef\x05\x02\x08\n\r\n\ - \x05\x04\x0b\x02\x02\x01\x12\x04\xef\x05\t\x10\n\r\n\x05\x04\x0b\x02\x02\ - \x03\x12\x04\xef\x05\x13\x14\n~\n\x04\x04\x0b\x02\x03\x12\x04\xf2\x05\ + \x04\xf3\x05\x02\x08\n\r\n\x05\x04\x0b\x02\x01\x01\x12\x04\xf3\x05\t\r\n\ + \r\n\x05\x04\x0b\x02\x01\x03\x12\x04\xf3\x05\x10\x11\n+\n\x04\x04\x0b\ + \x02\x02\x12\x04\xf5\x05\x02\x15\x1a\x1d\x20Message\x20of\x20this\x20dia\ + gnostic.\n\n\r\n\x05\x04\x0b\x02\x02\x05\x12\x04\xf5\x05\x02\x08\n\r\n\ + \x05\x04\x0b\x02\x02\x01\x12\x04\xf5\x05\t\x10\n\r\n\x05\x04\x0b\x02\x02\ + \x03\x12\x04\xf5\x05\x13\x14\n~\n\x04\x04\x0b\x02\x03\x12\x04\xf8\x05\ \x02\x14\x1ap\x20(optional)\x20Human-readable\x20string\x20describing\ \x20the\x20source\x20of\x20this\x20diagnostic,\x20e.g.\n\x20'typescript'\ - \x20or\x20'super\x20lint'.\n\n\r\n\x05\x04\x0b\x02\x03\x05\x12\x04\xf2\ - \x05\x02\x08\n\r\n\x05\x04\x0b\x02\x03\x01\x12\x04\xf2\x05\t\x0f\n\r\n\ - \x05\x04\x0b\x02\x03\x03\x12\x04\xf2\x05\x12\x13\n\x0c\n\x04\x04\x0b\x02\ - \x04\x12\x04\xf3\x05\x02\"\n\r\n\x05\x04\x0b\x02\x04\x04\x12\x04\xf3\x05\ - \x02\n\n\r\n\x05\x04\x0b\x02\x04\x06\x12\x04\xf3\x05\x0b\x18\n\r\n\x05\ - \x04\x0b\x02\x04\x01\x12\x04\xf3\x05\x19\x1d\n\r\n\x05\x04\x0b\x02\x04\ - \x03\x12\x04\xf3\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\xf6\x05\0\xfc\x05\ - \x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xf6\x05\x05\r\n\x0c\n\x04\x05\x05\ - \x02\0\x12\x04\xf7\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\x01\x12\x04\xf7\ - \x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xf7\x05\x18\x19\n\x0c\n\ - \x04\x05\x05\x02\x01\x12\x04\xf8\x05\x02\x0c\n\r\n\x05\x05\x05\x02\x01\ - \x01\x12\x04\xf8\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\x02\x12\x04\xf8\ - \x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xf9\x05\x02\x0e\n\r\n\x05\ - \x05\x05\x02\x02\x01\x12\x04\xf9\x05\x02\t\n\r\n\x05\x05\x05\x02\x02\x02\ - \x12\x04\xf9\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\x12\x04\xfa\x05\x02\ - \x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\xfa\x05\x02\r\n\r\n\x05\x05\ - \x05\x02\x03\x02\x12\x04\xfa\x05\x10\x11\n\x0c\n\x04\x05\x05\x02\x04\x12\ - \x04\xfb\x05\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\x12\x04\xfb\x05\x02\ - \x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\xfb\x05\t\n\n\x0c\n\x02\x05\ - \x06\x12\x06\xfe\x05\0\x82\x06\x01\n\x0b\n\x03\x05\x06\x01\x12\x04\xfe\ - \x05\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xff\x05\x02\x1f\n\r\n\x05\ - \x05\x06\x02\0\x01\x12\x04\xff\x05\x02\x1a\n\r\n\x05\x05\x06\x02\0\x02\ - \x12\x04\xff\x05\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\x12\x04\x80\x06\x02\ - \x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\x80\x06\x02\r\n\r\n\x05\x05\ - \x06\x02\x01\x02\x12\x04\x80\x06\x10\x11\n\x0c\n\x04\x05\x06\x02\x02\x12\ - \x04\x81\x06\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\x12\x04\x81\x06\x02\ - \x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\x81\x06\x0f\x10\n\xd0\x03\n\ - \x02\x05\x07\x12\x06\x8a\x06\0\x80\x07\x01\x1a\xc1\x03\x20Language\x20st\ + \x20or\x20'super\x20lint'.\n\n\r\n\x05\x04\x0b\x02\x03\x05\x12\x04\xf8\ + \x05\x02\x08\n\r\n\x05\x04\x0b\x02\x03\x01\x12\x04\xf8\x05\t\x0f\n\r\n\ + \x05\x04\x0b\x02\x03\x03\x12\x04\xf8\x05\x12\x13\n\x0c\n\x04\x04\x0b\x02\ + \x04\x12\x04\xf9\x05\x02\"\n\r\n\x05\x04\x0b\x02\x04\x04\x12\x04\xf9\x05\ + \x02\n\n\r\n\x05\x04\x0b\x02\x04\x06\x12\x04\xf9\x05\x0b\x18\n\r\n\x05\ + \x04\x0b\x02\x04\x01\x12\x04\xf9\x05\x19\x1d\n\r\n\x05\x04\x0b\x02\x04\ + \x03\x12\x04\xf9\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\xfc\x05\0\x82\x06\ + \x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xfc\x05\x05\r\n\x0c\n\x04\x05\x05\ + \x02\0\x12\x04\xfd\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\x01\x12\x04\xfd\ + \x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xfd\x05\x18\x19\n\x0c\n\ + \x04\x05\x05\x02\x01\x12\x04\xfe\x05\x02\x0c\n\r\n\x05\x05\x05\x02\x01\ + \x01\x12\x04\xfe\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\x02\x12\x04\xfe\ + \x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xff\x05\x02\x0e\n\r\n\x05\ + \x05\x05\x02\x02\x01\x12\x04\xff\x05\x02\t\n\r\n\x05\x05\x05\x02\x02\x02\ + \x12\x04\xff\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\x12\x04\x80\x06\x02\ + \x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\x80\x06\x02\r\n\r\n\x05\x05\ + \x05\x02\x03\x02\x12\x04\x80\x06\x10\x11\n\x0c\n\x04\x05\x05\x02\x04\x12\ + \x04\x81\x06\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\x12\x04\x81\x06\x02\ + \x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\x81\x06\t\n\n\x0c\n\x02\x05\ + \x06\x12\x06\x84\x06\0\x88\x06\x01\n\x0b\n\x03\x05\x06\x01\x12\x04\x84\ + \x06\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\x85\x06\x02\x1f\n\r\n\x05\ + \x05\x06\x02\0\x01\x12\x04\x85\x06\x02\x1a\n\r\n\x05\x05\x06\x02\0\x02\ + \x12\x04\x85\x06\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\x12\x04\x86\x06\x02\ + \x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\x86\x06\x02\r\n\r\n\x05\x05\ + \x06\x02\x01\x02\x12\x04\x86\x06\x10\x11\n\x0c\n\x04\x05\x06\x02\x02\x12\ + \x04\x87\x06\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\x12\x04\x87\x06\x02\ + \x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\x87\x06\x0f\x10\n\xd0\x03\n\ + \x02\x05\x07\x12\x06\x90\x06\0\x86\x07\x01\x1a\xc1\x03\x20Language\x20st\ andardises\x20names\x20of\x20common\x20programming\x20languages\x20that\ \x20can\x20be\x20used\n\x20for\x20the\x20`Document.language`\x20field.\ \x20The\x20primary\x20purpose\x20of\x20this\x20enum\x20is\x20to\n\x20pre\ @@ -5936,244 +5944,244 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20name\n\x20\"CPP\"\x20in\x20this\x20enum\x20and\x20other\x20names\x20\ such\x20as\x20\"cpp\"\x20are\x20incompatible.\n\x20Feel\x20free\x20to\ \x20send\x20a\x20pull-request\x20to\x20add\x20missing\x20programming\x20\ - languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\x8a\x06\x05\r\n\x0c\n\x04\ - \x05\x07\x02\0\x12\x04\x8b\x06\x02\x1a\n\r\n\x05\x05\x07\x02\0\x01\x12\ - \x04\x8b\x06\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\x12\x04\x8b\x06\x18\x19\ - \n\x0c\n\x04\x05\x07\x02\x01\x12\x04\x8c\x06\x02\x0c\n\r\n\x05\x05\x07\ - \x02\x01\x01\x12\x04\x8c\x06\x02\x06\n\r\n\x05\x05\x07\x02\x01\x02\x12\ - \x04\x8c\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\x04\x8d\x06\x02\x0c\n\ - \r\n\x05\x05\x07\x02\x02\x01\x12\x04\x8d\x06\x02\x06\n\r\n\x05\x05\x07\ - \x02\x02\x02\x12\x04\x8d\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x03\x12\x04\ - \x8e\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\x04\x8e\x06\x02\x05\n\ - \r\n\x05\x05\x07\x02\x03\x02\x12\x04\x8e\x06\x08\n\n\x0c\n\x04\x05\x07\ - \x02\x04\x12\x04\x8f\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x04\x01\x12\x04\ - \x8f\x06\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\x04\x8f\x06\x08\n\n\ - \x0c\n\x04\x05\x07\x02\x05\x12\x04\x90\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ - \x05\x01\x12\x04\x90\x06\x02\x06\n\r\n\x05\x05\x07\x02\x05\x02\x12\x04\ - \x90\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\x91\x06\x02\x10\n\r\n\ - \x05\x05\x07\x02\x06\x01\x12\x04\x91\x06\x02\n\n\r\n\x05\x05\x07\x02\x06\ - \x02\x12\x04\x91\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\x07\x12\x04\x92\x06\ - \x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x92\x06\x02\n\n\r\n\x05\ - \x05\x07\x02\x07\x02\x12\x04\x92\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\x08\ - \x12\x04\x93\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\x01\x12\x04\x93\x06\ - \x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x93\x06\x08\n\n\x0c\n\x04\ - \x05\x07\x02\t\x12\x04\x94\x06\x02\x0b\n\r\n\x05\x05\x07\x02\t\x01\x12\ - \x04\x94\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\x12\x04\x94\x06\x08\n\n\ - \x0c\n\x04\x05\x07\x02\n\x12\x04\x95\x06\x02\x0e\n\r\n\x05\x05\x07\x02\n\ - \x01\x12\x04\x95\x06\x02\x08\n\r\n\x05\x05\x07\x02\n\x02\x12\x04\x95\x06\ - \x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x96\x06\x02\t\n\r\n\x05\x05\ - \x07\x02\x0b\x01\x12\x04\x96\x06\x02\x03\n\r\n\x05\x05\x07\x02\x0b\x02\ - \x12\x04\x96\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\x0c\x12\x04\x97\x06\x02\ - \r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x97\x06\x02\x07\n\r\n\x05\x05\ - \x07\x02\x0c\x02\x12\x04\x97\x06\n\x0c\nH\n\x04\x05\x07\x02\r\x12\x04\ - \x98\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CPP\"\x20was\x20chosen\ + languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\x90\x06\x05\r\n\x0c\n\x04\ + \x05\x07\x02\0\x12\x04\x91\x06\x02\x1a\n\r\n\x05\x05\x07\x02\0\x01\x12\ + \x04\x91\x06\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\x12\x04\x91\x06\x18\x19\ + \n\x0c\n\x04\x05\x07\x02\x01\x12\x04\x92\x06\x02\x0c\n\r\n\x05\x05\x07\ + \x02\x01\x01\x12\x04\x92\x06\x02\x06\n\r\n\x05\x05\x07\x02\x01\x02\x12\ + \x04\x92\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\x04\x93\x06\x02\x0c\n\ + \r\n\x05\x05\x07\x02\x02\x01\x12\x04\x93\x06\x02\x06\n\r\n\x05\x05\x07\ + \x02\x02\x02\x12\x04\x93\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x03\x12\x04\ + \x94\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\x04\x94\x06\x02\x05\n\ + \r\n\x05\x05\x07\x02\x03\x02\x12\x04\x94\x06\x08\n\n\x0c\n\x04\x05\x07\ + \x02\x04\x12\x04\x95\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x04\x01\x12\x04\ + \x95\x06\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\x04\x95\x06\x08\n\n\ + \x0c\n\x04\x05\x07\x02\x05\x12\x04\x96\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ + \x05\x01\x12\x04\x96\x06\x02\x06\n\r\n\x05\x05\x07\x02\x05\x02\x12\x04\ + \x96\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\x97\x06\x02\x10\n\r\n\ + \x05\x05\x07\x02\x06\x01\x12\x04\x97\x06\x02\n\n\r\n\x05\x05\x07\x02\x06\ + \x02\x12\x04\x97\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\x07\x12\x04\x98\x06\ + \x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x98\x06\x02\n\n\r\n\x05\ + \x05\x07\x02\x07\x02\x12\x04\x98\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\x08\ + \x12\x04\x99\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\x01\x12\x04\x99\x06\ + \x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x99\x06\x08\n\n\x0c\n\x04\ + \x05\x07\x02\t\x12\x04\x9a\x06\x02\x0b\n\r\n\x05\x05\x07\x02\t\x01\x12\ + \x04\x9a\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\x12\x04\x9a\x06\x08\n\n\ + \x0c\n\x04\x05\x07\x02\n\x12\x04\x9b\x06\x02\x0e\n\r\n\x05\x05\x07\x02\n\ + \x01\x12\x04\x9b\x06\x02\x08\n\r\n\x05\x05\x07\x02\n\x02\x12\x04\x9b\x06\ + \x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x9c\x06\x02\t\n\r\n\x05\x05\ + \x07\x02\x0b\x01\x12\x04\x9c\x06\x02\x03\n\r\n\x05\x05\x07\x02\x0b\x02\ + \x12\x04\x9c\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\x0c\x12\x04\x9d\x06\x02\ + \r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x9d\x06\x02\x07\n\r\n\x05\x05\ + \x07\x02\x0c\x02\x12\x04\x9d\x06\n\x0c\nH\n\x04\x05\x07\x02\r\x12\x04\ + \x9e\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CPP\"\x20was\x20chosen\ \x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\x05\x07\x02\r\x01\x12\ - \x04\x98\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\x12\x04\x98\x06\x08\n\n\ - \x0c\n\x04\x05\x07\x02\x0e\x12\x04\x99\x06\x02\x0b\n\r\n\x05\x05\x07\x02\ - \x0e\x01\x12\x04\x99\x06\x02\x05\n\r\n\x05\x05\x07\x02\x0e\x02\x12\x04\ - \x99\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\x04\x9a\x06\x02\r\n\r\n\ - \x05\x05\x07\x02\x0f\x01\x12\x04\x9a\x06\x02\x08\n\r\n\x05\x05\x07\x02\ - \x0f\x02\x12\x04\x9a\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02\x10\x12\x04\x9b\ - \x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\x04\x9b\x06\x02\t\n\r\n\ - \x05\x05\x07\x02\x10\x02\x12\x04\x9b\x06\x0c\r\n\x0c\n\x04\x05\x07\x02\ - \x11\x12\x04\x9c\x06\x02\x14\n\r\n\x05\x05\x07\x02\x11\x01\x12\x04\x9c\ - \x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\x9c\x06\x11\x13\n\x0c\ - \n\x04\x05\x07\x02\x12\x12\x04\x9d\x06\x02\x11\n\r\n\x05\x05\x07\x02\x12\ - \x01\x12\x04\x9d\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x12\x02\x12\x04\x9d\ - \x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\x9e\x06\x02\x0b\n\r\n\ - \x05\x05\x07\x02\x13\x01\x12\x04\x9e\x06\x02\x05\n\r\n\x05\x05\x07\x02\ - \x13\x02\x12\x04\x9e\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x14\x12\x04\x9f\ - \x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\x9f\x06\x02\x06\n\r\n\ - \x05\x05\x07\x02\x14\x02\x12\x04\x9f\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\ - \x15\x12\x04\xa0\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\x01\x12\x04\xa0\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\xa0\x06\t\n\n\x0c\n\ - \x04\x05\x07\x02\x16\x12\x04\xa1\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x16\ - \x01\x12\x04\xa1\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\x02\x12\x04\xa1\ - \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\xa2\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x02\x17\x01\x12\x04\xa2\x06\x02\x06\n\r\n\x05\x05\x07\x02\x17\ - \x02\x12\x04\xa2\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\x12\x04\xa3\x06\ - \x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\xa3\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x02\x18\x02\x12\x04\xa3\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02\x19\ - \x12\x04\xa4\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\x01\x12\x04\xa4\x06\ - \x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\xa4\x06\x0b\r\n\x0c\n\x04\ - \x05\x07\x02\x1a\x12\x04\xa5\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1a\x01\ - \x12\x04\xa5\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\x02\x12\x04\xa5\x06\ - \x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\xa6\x06\x02\x0e\n\r\n\x05\x05\ - \x07\x02\x1b\x01\x12\x04\xa6\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1b\x02\ - \x12\x04\xa6\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\x12\x04\xa7\x06\x02\ - \x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\xa7\x06\x02\x08\n\r\n\x05\x05\ - \x07\x02\x1c\x02\x12\x04\xa7\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1d\x12\ - \x04\xa8\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\x12\x04\xa8\x06\x02\ - \x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\xa8\x06\t\x0b\n\x0c\n\x04\x05\ - \x07\x02\x1e\x12\x04\xa9\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1e\x01\x12\ - \x04\xa9\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\x12\x04\xa9\x06\t\x0b\ - \n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\xaa\x06\x02\x0f\n\r\n\x05\x05\x07\ - \x02\x1f\x01\x12\x04\xaa\x06\x02\t\n\r\n\x05\x05\x07\x02\x1f\x02\x12\x04\ - \xaa\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\x04\xab\x06\x02\x12\n\r\ - \n\x05\x05\x07\x02\x20\x01\x12\x04\xab\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ - \x20\x02\x12\x04\xab\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02!\x12\x04\xac\ - \x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\xac\x06\x02\x0c\n\r\n\ - \x05\x05\x07\x02!\x02\x12\x04\xac\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02\"\ - \x12\x04\xad\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\x01\x12\x04\xad\x06\x02\ - \x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\xad\x06\x0f\x11\n\x0c\n\x04\x05\ - \x07\x02#\x12\x04\xae\x06\x02\n\n\r\n\x05\x05\x07\x02#\x01\x12\x04\xae\ - \x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\xae\x06\x07\t\n\x0c\n\ - \x04\x05\x07\x02$\x12\x04\xaf\x06\x02\x0f\n\r\n\x05\x05\x07\x02$\x01\x12\ - \x04\xaf\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\x12\x04\xaf\x06\x0c\x0e\n\ - \x0c\n\x04\x05\x07\x02%\x12\x04\xb0\x06\x02\r\n\r\n\x05\x05\x07\x02%\x01\ - \x12\x04\xb0\x06\x02\x08\n\r\n\x05\x05\x07\x02%\x02\x12\x04\xb0\x06\x0b\ - \x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xb1\x06\x02\x0c\n\r\n\x05\x05\x07\ - \x02&\x01\x12\x04\xb1\x06\x02\x06\n\r\n\x05\x05\x07\x02&\x02\x12\x04\xb1\ - \x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\x04\xb2\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x02'\x01\x12\x04\xb2\x06\x02\x06\n\r\n\x05\x05\x07\x02'\x02\x12\ - \x04\xb2\x06\t\x0b\n\x0c\n\x04\x05\x07\x02(\x12\x04\xb3\x06\x02\x12\n\r\ - \n\x05\x05\x07\x02(\x01\x12\x04\xb3\x06\x02\x0c\n\r\n\x05\x05\x07\x02(\ - \x02\x12\x04\xb3\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02)\x12\x04\xb4\x06\ - \x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\xb4\x06\x02\t\n\r\n\x05\x05\ - \x07\x02)\x02\x12\x04\xb4\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02*\x12\x04\ - \xb5\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\x04\xb5\x06\x02\x07\n\r\n\ - \x05\x05\x07\x02*\x02\x12\x04\xb5\x06\n\x0c\n\x0c\n\x04\x05\x07\x02+\x12\ - \x04\xb6\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\x01\x12\x04\xb6\x06\x02\x05\ - \n\r\n\x05\x05\x07\x02+\x02\x12\x04\xb6\x06\x08\n\n\x0c\n\x04\x05\x07\ - \x02,\x12\x04\xb7\x06\x02\t\n\r\n\x05\x05\x07\x02,\x01\x12\x04\xb7\x06\ - \x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xb7\x06\x06\x08\n\x0c\n\x04\ - \x05\x07\x02-\x12\x04\xb8\x06\x02\x0c\n\r\n\x05\x05\x07\x02-\x01\x12\x04\ - \xb8\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\x04\xb8\x06\t\x0b\n\x0c\ - \n\x04\x05\x07\x02.\x12\x04\xb9\x06\x02\x0b\n\r\n\x05\x05\x07\x02.\x01\ - \x12\x04\xb9\x06\x02\x06\n\r\n\x05\x05\x07\x02.\x02\x12\x04\xb9\x06\t\n\ - \n\x0c\n\x04\x05\x07\x02/\x12\x04\xba\x06\x02\x12\n\r\n\x05\x05\x07\x02/\ - \x01\x12\x04\xba\x06\x02\x0c\n\r\n\x05\x05\x07\x02/\x02\x12\x04\xba\x06\ - \x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\xbb\x06\x02\x17\n\r\n\x05\x05\ - \x07\x020\x01\x12\x04\xbb\x06\x02\x11\n\r\n\x05\x05\x07\x020\x02\x12\x04\ - \xbb\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\x12\x04\xbc\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x021\x01\x12\x04\xbc\x06\x02\t\n\r\n\x05\x05\x07\x021\x02\ - \x12\x04\xbc\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x022\x12\x04\xbd\x06\x02\r\ - \n\r\n\x05\x05\x07\x022\x01\x12\x04\xbd\x06\x02\x07\n\r\n\x05\x05\x07\ - \x022\x02\x12\x04\xbd\x06\n\x0c\n\x0c\n\x04\x05\x07\x023\x12\x04\xbe\x06\ - \x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\x04\xbe\x06\x02\n\n\r\n\x05\x05\ - \x07\x023\x02\x12\x04\xbe\x06\r\x10\n\x0c\n\x04\x05\x07\x024\x12\x04\xbf\ - \x06\x02\r\n\r\n\x05\x05\x07\x024\x01\x12\x04\xbf\x06\x02\x08\n\r\n\x05\ - \x05\x07\x024\x02\x12\x04\xbf\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x025\x12\ - \x04\xc0\x06\x02\r\n\r\n\x05\x05\x07\x025\x01\x12\x04\xc0\x06\x02\x07\n\ - \r\n\x05\x05\x07\x025\x02\x12\x04\xc0\x06\n\x0c\n\x0c\n\x04\x05\x07\x026\ - \x12\x04\xc1\x06\x02\x0c\n\r\n\x05\x05\x07\x026\x01\x12\x04\xc1\x06\x02\ - \x06\n\r\n\x05\x05\x07\x026\x02\x12\x04\xc1\x06\t\x0b\n\x0c\n\x04\x05\ - \x07\x027\x12\x04\xc2\x06\x02\x0c\n\r\n\x05\x05\x07\x027\x01\x12\x04\xc2\ - \x06\x02\x06\n\r\n\x05\x05\x07\x027\x02\x12\x04\xc2\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x028\x12\x04\xc3\x06\x02\x0b\n\r\n\x05\x05\x07\x028\x01\x12\ - \x04\xc3\x06\x02\x05\n\r\n\x05\x05\x07\x028\x02\x12\x04\xc3\x06\x08\n\n\ - \x0c\n\x04\x05\x07\x029\x12\x04\xc4\x06\x02\r\n\r\n\x05\x05\x07\x029\x01\ - \x12\x04\xc4\x06\x02\x06\n\r\n\x05\x05\x07\x029\x02\x12\x04\xc4\x06\t\ - \x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\xc5\x06\x02\x10\n\r\n\x05\x05\x07\ - \x02:\x01\x12\x04\xc5\x06\x02\n\n\r\n\x05\x05\x07\x02:\x02\x12\x04\xc5\ - \x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\x04\xc6\x06\x02\x10\n\r\n\x05\ - \x05\x07\x02;\x01\x12\x04\xc6\x06\x02\n\n\r\n\x05\x05\x07\x02;\x02\x12\ - \x04\xc6\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\x12\x04\xc7\x06\x02\x0e\n\r\ - \n\x05\x05\x07\x02<\x01\x12\x04\xc7\x06\x02\x08\n\r\n\x05\x05\x07\x02<\ - \x02\x12\x04\xc7\x06\x0b\r\n(\n\x04\x05\x07\x02=\x12\x04\xc8\x06\x02\x0f\ + \x04\x9e\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\x12\x04\x9e\x06\x08\n\n\ + \x0c\n\x04\x05\x07\x02\x0e\x12\x04\x9f\x06\x02\x0b\n\r\n\x05\x05\x07\x02\ + \x0e\x01\x12\x04\x9f\x06\x02\x05\n\r\n\x05\x05\x07\x02\x0e\x02\x12\x04\ + \x9f\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\x04\xa0\x06\x02\r\n\r\n\ + \x05\x05\x07\x02\x0f\x01\x12\x04\xa0\x06\x02\x08\n\r\n\x05\x05\x07\x02\ + \x0f\x02\x12\x04\xa0\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02\x10\x12\x04\xa1\ + \x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\x04\xa1\x06\x02\t\n\r\n\ + \x05\x05\x07\x02\x10\x02\x12\x04\xa1\x06\x0c\r\n\x0c\n\x04\x05\x07\x02\ + \x11\x12\x04\xa2\x06\x02\x14\n\r\n\x05\x05\x07\x02\x11\x01\x12\x04\xa2\ + \x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\xa2\x06\x11\x13\n\x0c\ + \n\x04\x05\x07\x02\x12\x12\x04\xa3\x06\x02\x11\n\r\n\x05\x05\x07\x02\x12\ + \x01\x12\x04\xa3\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x12\x02\x12\x04\xa3\ + \x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\xa4\x06\x02\x0b\n\r\n\ + \x05\x05\x07\x02\x13\x01\x12\x04\xa4\x06\x02\x05\n\r\n\x05\x05\x07\x02\ + \x13\x02\x12\x04\xa4\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x14\x12\x04\xa5\ + \x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\xa5\x06\x02\x06\n\r\n\ + \x05\x05\x07\x02\x14\x02\x12\x04\xa5\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\ + \x15\x12\x04\xa6\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\x01\x12\x04\xa6\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\xa6\x06\t\n\n\x0c\n\ + \x04\x05\x07\x02\x16\x12\x04\xa7\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x16\ + \x01\x12\x04\xa7\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\x02\x12\x04\xa7\ + \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\xa8\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x02\x17\x01\x12\x04\xa8\x06\x02\x06\n\r\n\x05\x05\x07\x02\x17\ + \x02\x12\x04\xa8\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\x12\x04\xa9\x06\ + \x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\xa9\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x02\x18\x02\x12\x04\xa9\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02\x19\ + \x12\x04\xaa\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\x01\x12\x04\xaa\x06\ + \x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\xaa\x06\x0b\r\n\x0c\n\x04\ + \x05\x07\x02\x1a\x12\x04\xab\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1a\x01\ + \x12\x04\xab\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\x02\x12\x04\xab\x06\ + \x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\xac\x06\x02\x0e\n\r\n\x05\x05\ + \x07\x02\x1b\x01\x12\x04\xac\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1b\x02\ + \x12\x04\xac\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\x12\x04\xad\x06\x02\ + \x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\xad\x06\x02\x08\n\r\n\x05\x05\ + \x07\x02\x1c\x02\x12\x04\xad\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1d\x12\ + \x04\xae\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\x12\x04\xae\x06\x02\ + \x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\xae\x06\t\x0b\n\x0c\n\x04\x05\ + \x07\x02\x1e\x12\x04\xaf\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1e\x01\x12\ + \x04\xaf\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\x12\x04\xaf\x06\t\x0b\ + \n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\xb0\x06\x02\x0f\n\r\n\x05\x05\x07\ + \x02\x1f\x01\x12\x04\xb0\x06\x02\t\n\r\n\x05\x05\x07\x02\x1f\x02\x12\x04\ + \xb0\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\x04\xb1\x06\x02\x12\n\r\ + \n\x05\x05\x07\x02\x20\x01\x12\x04\xb1\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ + \x20\x02\x12\x04\xb1\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02!\x12\x04\xb2\ + \x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\xb2\x06\x02\x0c\n\r\n\ + \x05\x05\x07\x02!\x02\x12\x04\xb2\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02\"\ + \x12\x04\xb3\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\x01\x12\x04\xb3\x06\x02\ + \x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\xb3\x06\x0f\x11\n\x0c\n\x04\x05\ + \x07\x02#\x12\x04\xb4\x06\x02\n\n\r\n\x05\x05\x07\x02#\x01\x12\x04\xb4\ + \x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\xb4\x06\x07\t\n\x0c\n\ + \x04\x05\x07\x02$\x12\x04\xb5\x06\x02\x0f\n\r\n\x05\x05\x07\x02$\x01\x12\ + \x04\xb5\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\x12\x04\xb5\x06\x0c\x0e\n\ + \x0c\n\x04\x05\x07\x02%\x12\x04\xb6\x06\x02\r\n\r\n\x05\x05\x07\x02%\x01\ + \x12\x04\xb6\x06\x02\x08\n\r\n\x05\x05\x07\x02%\x02\x12\x04\xb6\x06\x0b\ + \x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xb7\x06\x02\x0c\n\r\n\x05\x05\x07\ + \x02&\x01\x12\x04\xb7\x06\x02\x06\n\r\n\x05\x05\x07\x02&\x02\x12\x04\xb7\ + \x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\x04\xb8\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x02'\x01\x12\x04\xb8\x06\x02\x06\n\r\n\x05\x05\x07\x02'\x02\x12\ + \x04\xb8\x06\t\x0b\n\x0c\n\x04\x05\x07\x02(\x12\x04\xb9\x06\x02\x12\n\r\ + \n\x05\x05\x07\x02(\x01\x12\x04\xb9\x06\x02\x0c\n\r\n\x05\x05\x07\x02(\ + \x02\x12\x04\xb9\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02)\x12\x04\xba\x06\ + \x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\xba\x06\x02\t\n\r\n\x05\x05\ + \x07\x02)\x02\x12\x04\xba\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02*\x12\x04\ + \xbb\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\x04\xbb\x06\x02\x07\n\r\n\ + \x05\x05\x07\x02*\x02\x12\x04\xbb\x06\n\x0c\n\x0c\n\x04\x05\x07\x02+\x12\ + \x04\xbc\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\x01\x12\x04\xbc\x06\x02\x05\ + \n\r\n\x05\x05\x07\x02+\x02\x12\x04\xbc\x06\x08\n\n\x0c\n\x04\x05\x07\ + \x02,\x12\x04\xbd\x06\x02\t\n\r\n\x05\x05\x07\x02,\x01\x12\x04\xbd\x06\ + \x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xbd\x06\x06\x08\n\x0c\n\x04\ + \x05\x07\x02-\x12\x04\xbe\x06\x02\x0c\n\r\n\x05\x05\x07\x02-\x01\x12\x04\ + \xbe\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\x04\xbe\x06\t\x0b\n\x0c\ + \n\x04\x05\x07\x02.\x12\x04\xbf\x06\x02\x0b\n\r\n\x05\x05\x07\x02.\x01\ + \x12\x04\xbf\x06\x02\x06\n\r\n\x05\x05\x07\x02.\x02\x12\x04\xbf\x06\t\n\ + \n\x0c\n\x04\x05\x07\x02/\x12\x04\xc0\x06\x02\x12\n\r\n\x05\x05\x07\x02/\ + \x01\x12\x04\xc0\x06\x02\x0c\n\r\n\x05\x05\x07\x02/\x02\x12\x04\xc0\x06\ + \x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\xc1\x06\x02\x17\n\r\n\x05\x05\ + \x07\x020\x01\x12\x04\xc1\x06\x02\x11\n\r\n\x05\x05\x07\x020\x02\x12\x04\ + \xc1\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\x12\x04\xc2\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x021\x01\x12\x04\xc2\x06\x02\t\n\r\n\x05\x05\x07\x021\x02\ + \x12\x04\xc2\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x022\x12\x04\xc3\x06\x02\r\ + \n\r\n\x05\x05\x07\x022\x01\x12\x04\xc3\x06\x02\x07\n\r\n\x05\x05\x07\ + \x022\x02\x12\x04\xc3\x06\n\x0c\n\x0c\n\x04\x05\x07\x023\x12\x04\xc4\x06\ + \x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\x04\xc4\x06\x02\n\n\r\n\x05\x05\ + \x07\x023\x02\x12\x04\xc4\x06\r\x10\n\x0c\n\x04\x05\x07\x024\x12\x04\xc5\ + \x06\x02\r\n\r\n\x05\x05\x07\x024\x01\x12\x04\xc5\x06\x02\x08\n\r\n\x05\ + \x05\x07\x024\x02\x12\x04\xc5\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x025\x12\ + \x04\xc6\x06\x02\r\n\r\n\x05\x05\x07\x025\x01\x12\x04\xc6\x06\x02\x07\n\ + \r\n\x05\x05\x07\x025\x02\x12\x04\xc6\x06\n\x0c\n\x0c\n\x04\x05\x07\x026\ + \x12\x04\xc7\x06\x02\x0c\n\r\n\x05\x05\x07\x026\x01\x12\x04\xc7\x06\x02\ + \x06\n\r\n\x05\x05\x07\x026\x02\x12\x04\xc7\x06\t\x0b\n\x0c\n\x04\x05\ + \x07\x027\x12\x04\xc8\x06\x02\x0c\n\r\n\x05\x05\x07\x027\x01\x12\x04\xc8\ + \x06\x02\x06\n\r\n\x05\x05\x07\x027\x02\x12\x04\xc8\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x028\x12\x04\xc9\x06\x02\x0b\n\r\n\x05\x05\x07\x028\x01\x12\ + \x04\xc9\x06\x02\x05\n\r\n\x05\x05\x07\x028\x02\x12\x04\xc9\x06\x08\n\n\ + \x0c\n\x04\x05\x07\x029\x12\x04\xca\x06\x02\r\n\r\n\x05\x05\x07\x029\x01\ + \x12\x04\xca\x06\x02\x06\n\r\n\x05\x05\x07\x029\x02\x12\x04\xca\x06\t\ + \x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\xcb\x06\x02\x10\n\r\n\x05\x05\x07\ + \x02:\x01\x12\x04\xcb\x06\x02\n\n\r\n\x05\x05\x07\x02:\x02\x12\x04\xcb\ + \x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\x04\xcc\x06\x02\x10\n\r\n\x05\ + \x05\x07\x02;\x01\x12\x04\xcc\x06\x02\n\n\r\n\x05\x05\x07\x02;\x02\x12\ + \x04\xcc\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\x12\x04\xcd\x06\x02\x0e\n\r\ + \n\x05\x05\x07\x02<\x01\x12\x04\xcd\x06\x02\x08\n\r\n\x05\x05\x07\x02<\ + \x02\x12\x04\xcd\x06\x0b\r\n(\n\x04\x05\x07\x02=\x12\x04\xce\x06\x02\x0f\ \"\x1a\x20https://nickel-lang.org/\n\n\r\n\x05\x05\x07\x02=\x01\x12\x04\ - \xc8\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\x12\x04\xc8\x06\x0b\x0e\n\ - \x0c\n\x04\x05\x07\x02>\x12\x04\xc9\x06\x02\x0b\n\r\n\x05\x05\x07\x02>\ - \x01\x12\x04\xc9\x06\x02\x05\n\r\n\x05\x05\x07\x02>\x02\x12\x04\xc9\x06\ - \x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xca\x06\x02\r\n\r\n\x05\x05\x07\ - \x02?\x01\x12\x04\xca\x06\x02\x07\n\r\n\x05\x05\x07\x02?\x02\x12\x04\xca\ - \x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\xcb\x06\x02\x13\n\r\n\x05\ - \x05\x07\x02@\x01\x12\x04\xcb\x06\x02\r\n\r\n\x05\x05\x07\x02@\x02\x12\ - \x04\xcb\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\x12\x04\xcc\x06\x02\x15\n\ - \r\n\x05\x05\x07\x02A\x01\x12\x04\xcc\x06\x02\x0f\n\r\n\x05\x05\x07\x02A\ - \x02\x12\x04\xcc\x06\x12\x14\n\x0c\n\x04\x05\x07\x02B\x12\x04\xcd\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xcd\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02B\x02\x12\x04\xcd\x06\x0b\r\n\x0c\n\x04\x05\x07\x02C\x12\x04\ - \xce\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\x04\xce\x06\x02\x05\n\r\ - \n\x05\x05\x07\x02C\x02\x12\x04\xce\x06\x08\n\n\x0c\n\x04\x05\x07\x02D\ - \x12\x04\xcf\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\x12\x04\xcf\x06\x02\ - \x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xcf\x06\n\x0c\n\x0c\n\x04\x05\ - \x07\x02E\x12\x04\xd0\x06\x02\x0c\n\r\n\x05\x05\x07\x02E\x01\x12\x04\xd0\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xd0\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02F\x12\x04\xd1\x06\x02\x12\n\r\n\x05\x05\x07\x02F\x01\x12\ - \x04\xd1\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\x04\xd1\x06\x0f\x11\ - \n\x0c\n\x04\x05\x07\x02G\x12\x04\xd2\x06\x02\x0e\n\r\n\x05\x05\x07\x02G\ - \x01\x12\x04\xd2\x06\x02\x08\n\r\n\x05\x05\x07\x02G\x02\x12\x04\xd2\x06\ - \x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xd3\x06\x02\x11\n\r\n\x05\x05\ - \x07\x02H\x01\x12\x04\xd3\x06\x02\n\n\r\n\x05\x05\x07\x02H\x02\x12\x04\ - \xd3\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xd4\x06\x02\x0e\n\r\n\ - \x05\x05\x07\x02I\x01\x12\x04\xd4\x06\x02\x08\n\r\n\x05\x05\x07\x02I\x02\ - \x12\x04\xd4\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\xd5\x06\x02\t\n\ - \r\n\x05\x05\x07\x02J\x01\x12\x04\xd5\x06\x02\x03\n\r\n\x05\x05\x07\x02J\ - \x02\x12\x04\xd5\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\x12\x04\xd6\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xd6\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02K\x02\x12\x04\xd6\x06\x0b\r\n\x0c\n\x04\x05\x07\x02L\x12\x04\ - \xd7\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xd7\x06\x02\x06\n\r\ - \n\x05\x05\x07\x02L\x02\x12\x04\xd7\x06\t\x0b\n\x0c\n\x04\x05\x07\x02M\ - \x12\x04\xd8\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\x04\xd8\x06\x02\ - \x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xd8\x06\n\x0c\n2\n\x04\x05\x07\ - \x02N\x12\x04\xd9\x06\x02\x0e\"$\x20Internal\x20language\x20for\x20testi\ - ng\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xd9\x06\x02\x07\n\r\n\ - \x05\x05\x07\x02N\x02\x12\x04\xd9\x06\n\r\n\x0c\n\x04\x05\x07\x02O\x12\ - \x04\xda\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xda\x06\x02\x06\ - \n\r\n\x05\x05\x07\x02O\x02\x12\x04\xda\x06\t\x0b\n\x0c\n\x04\x05\x07\ - \x02P\x12\x04\xdb\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\x04\xdb\x06\ - \x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xdb\x06\t\x0b\n\x0c\n\x04\ - \x05\x07\x02Q\x12\x04\xdc\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\x01\x12\x04\ - \xdc\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xdc\x06\t\x0b\n\x0c\ - \n\x04\x05\x07\x02R\x12\x04\xdd\x06\x02\x0b\n\r\n\x05\x05\x07\x02R\x01\ - \x12\x04\xdd\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\xdd\x06\x08\ - \n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xde\x06\x02\x0c\n\r\n\x05\x05\x07\ - \x02S\x01\x12\x04\xde\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\x12\x04\xde\ - \x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xdf\x06\x02\x0b\n\r\n\x05\ - \x05\x07\x02T\x01\x12\x04\xdf\x06\x02\x05\n\r\n\x05\x05\x07\x02T\x02\x12\ - \x04\xdf\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xe0\x06\x02\x0b\n\r\ - \n\x05\x05\x07\x02U\x01\x12\x04\xe0\x06\x02\x05\n\r\n\x05\x05\x07\x02U\ - \x02\x12\x04\xe0\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\xe1\x06\x02\ - \x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xe1\x06\x02\x06\n\r\n\x05\x05\ - \x07\x02V\x02\x12\x04\xe1\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\x12\x04\xe2\ - \x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xe2\x06\x02\x07\n\r\n\ - \x05\x05\x07\x02W\x02\x12\x04\xe2\x06\n\x0b\n\x0c\n\x04\x05\x07\x02X\x12\ - \x04\xe3\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xe3\x06\x02\x08\ - \n\r\n\x05\x05\x07\x02X\x02\x12\x04\xe3\x06\x0b\r\n\x14\n\x04\x05\x07\ - \x02Y\x12\x04\xe4\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\x07\x02Y\x01\ - \x12\x04\xe4\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\xe4\x06\x10\ - \x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xe5\x06\x02\x0f\n\r\n\x05\x05\x07\ - \x02Z\x01\x12\x04\xe5\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\x12\x04\xe5\ - \x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xe6\x06\x02\x0e\n\r\n\x05\ - \x05\x07\x02[\x01\x12\x04\xe6\x06\x02\x07\n\r\n\x05\x05\x07\x02[\x02\x12\ - \x04\xe6\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xe7\x06\x02\x10\n\r\n\ - \x05\x05\x07\x02\\\x01\x12\x04\xe7\x06\x02\n\n\r\n\x05\x05\x07\x02\\\x02\ - \x12\x04\xe7\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\x04\xe8\x06\x02\x0f\ - \n\r\n\x05\x05\x07\x02]\x01\x12\x04\xe8\x06\x02\x08\n\r\n\x05\x05\x07\ - \x02]\x02\x12\x04\xe8\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02^\x12\x04\xe9\ - \x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xe9\x06\x02\x07\n\r\n\ - \x05\x05\x07\x02^\x02\x12\x04\xe9\x06\n\x0b\n\x0c\n\x04\x05\x07\x02_\x12\ - \x04\xea\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\xea\x06\x02\x05\ - \n\r\n\x05\x05\x07\x02_\x02\x12\x04\xea\x06\x08\x0b\n\x0c\n\x04\x05\x07\ - \x02`\x12\x04\xeb\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\x01\x12\x04\xeb\x06\ - \x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xeb\x06\t\x0b\n\x0c\n\x04\ - \x05\x07\x02a\x12\x04\xec\x06\x02\x0b\n\r\n\x05\x05\x07\x02a\x01\x12\x04\ - \xec\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\xec\x06\x08\n\n\x0c\ - \n\x04\x05\x07\x02b\x12\x04\xed\x06\x02\x0f\n\r\n\x05\x05\x07\x02b\x01\ - \x12\x04\xed\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\x12\x04\xed\x06\x0b\ - \x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xee\x06\x02\x12\n\r\n\x05\x05\x07\ - \x02c\x01\x12\x04\xee\x06\x02\x0c\n\r\n\x05\x05\x07\x02c\x02\x12\x04\xee\ - \x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\xef\x06\x02\x17\n\r\n\x05\ - \x05\x07\x02d\x01\x12\x04\xef\x06\x02\x11\n\r\n\x05\x05\x07\x02d\x02\x12\ - \x04\xef\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\x12\x04\xf0\x06\x02\x10\n\ - \r\n\x05\x05\x07\x02e\x01\x12\x04\xf0\x06\x02\t\n\r\n\x05\x05\x07\x02e\ - \x02\x12\x04\xf0\x06\x0c\x0f\n\x0c\n\x04\x05\x07\x02f\x12\x04\xf1\x06\ - \x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xf1\x06\x02\x06\n\r\n\x05\x05\ - \x07\x02f\x02\x12\x04\xf1\x06\t\x0c\n\x0c\n\x04\x05\x07\x02g\x12\x04\xf2\ - \x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\x04\xf2\x06\x02\r\n\r\n\x05\ - \x05\x07\x02g\x02\x12\x04\xf2\x06\x10\x12\n\x0c\n\x04\x05\x07\x02h\x12\ - \x04\xf3\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\x01\x12\x04\xf3\x06\x02\x05\ - \n\r\n\x05\x05\x07\x02h\x02\x12\x04\xf3\x06\x08\n\n\x0c\n\x04\x05\x07\ - \x02i\x12\x04\xf4\x06\x02\x0f\n\r\n\x05\x05\x07\x02i\x01\x12\x04\xf4\x06\ - \x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\xf4\x06\x0c\x0e\n\x0c\n\x04\ - \x05\x07\x02j\x12\x04\xf5\x06\x02\x0b\n\r\n\x05\x05\x07\x02j\x01\x12\x04\ - \xf5\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\x12\x04\xf5\x06\x08\n\n\x0c\ - \n\x04\x05\x07\x02k\x12\x04\xf6\x06\x02\x0b\n\r\n\x05\x05\x07\x02k\x01\ - \x12\x04\xf6\x06\x02\x05\n\r\n\x05\x05\x07\x02k\x02\x12\x04\xf6\x06\x08\ - \n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xf7\x06\x02\x0c\n\r\n\x05\x05\x07\ - \x02l\x01\x12\x04\xf7\x06\x02\x06\n\r\n\x05\x05\x07\x02l\x02\x12\x04\xf7\ - \x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\x04\xf8\x06\x02\x0b\"\x84\ + \xce\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\x12\x04\xce\x06\x0b\x0e\n\ + \x0c\n\x04\x05\x07\x02>\x12\x04\xcf\x06\x02\x0b\n\r\n\x05\x05\x07\x02>\ + \x01\x12\x04\xcf\x06\x02\x05\n\r\n\x05\x05\x07\x02>\x02\x12\x04\xcf\x06\ + \x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xd0\x06\x02\r\n\r\n\x05\x05\x07\ + \x02?\x01\x12\x04\xd0\x06\x02\x07\n\r\n\x05\x05\x07\x02?\x02\x12\x04\xd0\ + \x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\xd1\x06\x02\x13\n\r\n\x05\ + \x05\x07\x02@\x01\x12\x04\xd1\x06\x02\r\n\r\n\x05\x05\x07\x02@\x02\x12\ + \x04\xd1\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\x12\x04\xd2\x06\x02\x15\n\ + \r\n\x05\x05\x07\x02A\x01\x12\x04\xd2\x06\x02\x0f\n\r\n\x05\x05\x07\x02A\ + \x02\x12\x04\xd2\x06\x12\x14\n\x0c\n\x04\x05\x07\x02B\x12\x04\xd3\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xd3\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02B\x02\x12\x04\xd3\x06\x0b\r\n\x0c\n\x04\x05\x07\x02C\x12\x04\ + \xd4\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\x04\xd4\x06\x02\x05\n\r\ + \n\x05\x05\x07\x02C\x02\x12\x04\xd4\x06\x08\n\n\x0c\n\x04\x05\x07\x02D\ + \x12\x04\xd5\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\x12\x04\xd5\x06\x02\ + \x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xd5\x06\n\x0c\n\x0c\n\x04\x05\ + \x07\x02E\x12\x04\xd6\x06\x02\x0c\n\r\n\x05\x05\x07\x02E\x01\x12\x04\xd6\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xd6\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02F\x12\x04\xd7\x06\x02\x12\n\r\n\x05\x05\x07\x02F\x01\x12\ + \x04\xd7\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\x04\xd7\x06\x0f\x11\ + \n\x0c\n\x04\x05\x07\x02G\x12\x04\xd8\x06\x02\x0e\n\r\n\x05\x05\x07\x02G\ + \x01\x12\x04\xd8\x06\x02\x08\n\r\n\x05\x05\x07\x02G\x02\x12\x04\xd8\x06\ + \x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xd9\x06\x02\x11\n\r\n\x05\x05\ + \x07\x02H\x01\x12\x04\xd9\x06\x02\n\n\r\n\x05\x05\x07\x02H\x02\x12\x04\ + \xd9\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xda\x06\x02\x0e\n\r\n\ + \x05\x05\x07\x02I\x01\x12\x04\xda\x06\x02\x08\n\r\n\x05\x05\x07\x02I\x02\ + \x12\x04\xda\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\xdb\x06\x02\t\n\ + \r\n\x05\x05\x07\x02J\x01\x12\x04\xdb\x06\x02\x03\n\r\n\x05\x05\x07\x02J\ + \x02\x12\x04\xdb\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\x12\x04\xdc\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xdc\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02K\x02\x12\x04\xdc\x06\x0b\r\n\x0c\n\x04\x05\x07\x02L\x12\x04\ + \xdd\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xdd\x06\x02\x06\n\r\ + \n\x05\x05\x07\x02L\x02\x12\x04\xdd\x06\t\x0b\n\x0c\n\x04\x05\x07\x02M\ + \x12\x04\xde\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\x04\xde\x06\x02\ + \x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xde\x06\n\x0c\n2\n\x04\x05\x07\ + \x02N\x12\x04\xdf\x06\x02\x0e\"$\x20Internal\x20language\x20for\x20testi\ + ng\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xdf\x06\x02\x07\n\r\n\ + \x05\x05\x07\x02N\x02\x12\x04\xdf\x06\n\r\n\x0c\n\x04\x05\x07\x02O\x12\ + \x04\xe0\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xe0\x06\x02\x06\ + \n\r\n\x05\x05\x07\x02O\x02\x12\x04\xe0\x06\t\x0b\n\x0c\n\x04\x05\x07\ + \x02P\x12\x04\xe1\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\x04\xe1\x06\ + \x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xe1\x06\t\x0b\n\x0c\n\x04\ + \x05\x07\x02Q\x12\x04\xe2\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\x01\x12\x04\ + \xe2\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xe2\x06\t\x0b\n\x0c\ + \n\x04\x05\x07\x02R\x12\x04\xe3\x06\x02\x0b\n\r\n\x05\x05\x07\x02R\x01\ + \x12\x04\xe3\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\xe3\x06\x08\ + \n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xe4\x06\x02\x0c\n\r\n\x05\x05\x07\ + \x02S\x01\x12\x04\xe4\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\x12\x04\xe4\ + \x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xe5\x06\x02\x0b\n\r\n\x05\ + \x05\x07\x02T\x01\x12\x04\xe5\x06\x02\x05\n\r\n\x05\x05\x07\x02T\x02\x12\ + \x04\xe5\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xe6\x06\x02\x0b\n\r\ + \n\x05\x05\x07\x02U\x01\x12\x04\xe6\x06\x02\x05\n\r\n\x05\x05\x07\x02U\ + \x02\x12\x04\xe6\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\xe7\x06\x02\ + \x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xe7\x06\x02\x06\n\r\n\x05\x05\ + \x07\x02V\x02\x12\x04\xe7\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\x12\x04\xe8\ + \x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xe8\x06\x02\x07\n\r\n\ + \x05\x05\x07\x02W\x02\x12\x04\xe8\x06\n\x0b\n\x0c\n\x04\x05\x07\x02X\x12\ + \x04\xe9\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xe9\x06\x02\x08\ + \n\r\n\x05\x05\x07\x02X\x02\x12\x04\xe9\x06\x0b\r\n\x14\n\x04\x05\x07\ + \x02Y\x12\x04\xea\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\x07\x02Y\x01\ + \x12\x04\xea\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\xea\x06\x10\ + \x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xeb\x06\x02\x0f\n\r\n\x05\x05\x07\ + \x02Z\x01\x12\x04\xeb\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\x12\x04\xeb\ + \x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xec\x06\x02\x0e\n\r\n\x05\ + \x05\x07\x02[\x01\x12\x04\xec\x06\x02\x07\n\r\n\x05\x05\x07\x02[\x02\x12\ + \x04\xec\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xed\x06\x02\x10\n\r\n\ + \x05\x05\x07\x02\\\x01\x12\x04\xed\x06\x02\n\n\r\n\x05\x05\x07\x02\\\x02\ + \x12\x04\xed\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\x04\xee\x06\x02\x0f\ + \n\r\n\x05\x05\x07\x02]\x01\x12\x04\xee\x06\x02\x08\n\r\n\x05\x05\x07\ + \x02]\x02\x12\x04\xee\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02^\x12\x04\xef\ + \x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xef\x06\x02\x07\n\r\n\ + \x05\x05\x07\x02^\x02\x12\x04\xef\x06\n\x0b\n\x0c\n\x04\x05\x07\x02_\x12\ + \x04\xf0\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\xf0\x06\x02\x05\ + \n\r\n\x05\x05\x07\x02_\x02\x12\x04\xf0\x06\x08\x0b\n\x0c\n\x04\x05\x07\ + \x02`\x12\x04\xf1\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\x01\x12\x04\xf1\x06\ + \x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xf1\x06\t\x0b\n\x0c\n\x04\ + \x05\x07\x02a\x12\x04\xf2\x06\x02\x0b\n\r\n\x05\x05\x07\x02a\x01\x12\x04\ + \xf2\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\xf2\x06\x08\n\n\x0c\ + \n\x04\x05\x07\x02b\x12\x04\xf3\x06\x02\x0f\n\r\n\x05\x05\x07\x02b\x01\ + \x12\x04\xf3\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\x12\x04\xf3\x06\x0b\ + \x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xf4\x06\x02\x12\n\r\n\x05\x05\x07\ + \x02c\x01\x12\x04\xf4\x06\x02\x0c\n\r\n\x05\x05\x07\x02c\x02\x12\x04\xf4\ + \x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\xf5\x06\x02\x17\n\r\n\x05\ + \x05\x07\x02d\x01\x12\x04\xf5\x06\x02\x11\n\r\n\x05\x05\x07\x02d\x02\x12\ + \x04\xf5\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\x12\x04\xf6\x06\x02\x10\n\ + \r\n\x05\x05\x07\x02e\x01\x12\x04\xf6\x06\x02\t\n\r\n\x05\x05\x07\x02e\ + \x02\x12\x04\xf6\x06\x0c\x0f\n\x0c\n\x04\x05\x07\x02f\x12\x04\xf7\x06\ + \x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xf7\x06\x02\x06\n\r\n\x05\x05\ + \x07\x02f\x02\x12\x04\xf7\x06\t\x0c\n\x0c\n\x04\x05\x07\x02g\x12\x04\xf8\ + \x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\x04\xf8\x06\x02\r\n\r\n\x05\ + \x05\x07\x02g\x02\x12\x04\xf8\x06\x10\x12\n\x0c\n\x04\x05\x07\x02h\x12\ + \x04\xf9\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\x01\x12\x04\xf9\x06\x02\x05\ + \n\r\n\x05\x05\x07\x02h\x02\x12\x04\xf9\x06\x08\n\n\x0c\n\x04\x05\x07\ + \x02i\x12\x04\xfa\x06\x02\x0f\n\r\n\x05\x05\x07\x02i\x01\x12\x04\xfa\x06\ + \x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\xfa\x06\x0c\x0e\n\x0c\n\x04\ + \x05\x07\x02j\x12\x04\xfb\x06\x02\x0b\n\r\n\x05\x05\x07\x02j\x01\x12\x04\ + \xfb\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\x12\x04\xfb\x06\x08\n\n\x0c\ + \n\x04\x05\x07\x02k\x12\x04\xfc\x06\x02\x0b\n\r\n\x05\x05\x07\x02k\x01\ + \x12\x04\xfc\x06\x02\x05\n\r\n\x05\x05\x07\x02k\x02\x12\x04\xfc\x06\x08\ + \n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xfd\x06\x02\x0c\n\r\n\x05\x05\x07\ + \x02l\x01\x12\x04\xfd\x06\x02\x06\n\r\n\x05\x05\x07\x02l\x02\x12\x04\xfd\ + \x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\x04\xfe\x06\x02\x0b\"\x84\ \x03\x20NextLanguage\x20=\x20111;\n\x20Steps\x20add\x20a\x20new\x20langu\ age:\n\x201.\x20Copy-paste\x20the\x20\"NextLanguage\x20=\x20N\"\x20line\ \x20above\n\x202.\x20Increment\x20\"NextLanguage\x20=\x20N\"\x20to\x20\"\ @@ -6182,8 +6190,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ove\x20the\x20new\x20language\x20to\x20the\x20correct\x20line\x20above\ \x20using\x20alphabetical\x20order\n\x205.\x20(optional)\x20Add\x20a\x20\ brief\x20comment\x20behind\x20the\x20language\x20if\x20the\x20name\x20is\ - \x20not\x20self-explanatory\n\n\r\n\x05\x05\x07\x02m\x01\x12\x04\xf8\x06\ - \x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\x04\xf8\x06\x08\nb\x06proto3\ + \x20not\x20self-explanatory\n\n\r\n\x05\x05\x07\x02m\x01\x12\x04\xfe\x06\ + \x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\x04\xfe\x06\x08\nb\x06proto3\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/bindings/typescript/scip_pb.ts b/bindings/typescript/scip_pb.ts index ffc0bd6e..7294f78a 100644 --- a/bindings/typescript/scip_pb.ts +++ b/bindings/typescript/scip_pb.ts @@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file scip.proto. */ export const file_scip: GenFile = /*@__PURE__*/ - fileDesc("CgpzY2lwLnByb3RvEgRzY2lwIn8KBUluZGV4EiAKCG1ldGFkYXRhGAEgASgLMg4uc2NpcC5NZXRhZGF0YRIhCglkb2N1bWVudHMYAiADKAsyDi5zY2lwLkRvY3VtZW50EjEKEGV4dGVybmFsX3N5bWJvbHMYAyADKAsyFy5zY2lwLlN5bWJvbEluZm9ybWF0aW9uIp8BCghNZXRhZGF0YRImCgd2ZXJzaW9uGAEgASgOMhUuc2NpcC5Qcm90b2NvbFZlcnNpb24SIQoJdG9vbF9pbmZvGAIgASgLMg4uc2NpcC5Ub29sSW5mbxIUCgxwcm9qZWN0X3Jvb3QYAyABKAkSMgoWdGV4dF9kb2N1bWVudF9lbmNvZGluZxgEIAEoDjISLnNjaXAuVGV4dEVuY29kaW5nIjwKCFRvb2xJbmZvEgwKBG5hbWUYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIRCglhcmd1bWVudHMYAyADKAkixQEKCERvY3VtZW50EhAKCGxhbmd1YWdlGAQgASgJEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSJQoLb2NjdXJyZW5jZXMYAiADKAsyEC5zY2lwLk9jY3VycmVuY2USKAoHc3ltYm9scxgDIAMoCzIXLnNjaXAuU3ltYm9sSW5mb3JtYXRpb24SDAoEdGV4dBgFIAEoCRIxChFwb3NpdGlvbl9lbmNvZGluZxgGIAEoDjIWLnNjaXAuUG9zaXRpb25FbmNvZGluZyJfCgZTeW1ib2wSDgoGc2NoZW1lGAEgASgJEh4KB3BhY2thZ2UYAiABKAsyDS5zY2lwLlBhY2thZ2USJQoLZGVzY3JpcHRvcnMYAyADKAsyEC5zY2lwLkRlc2NyaXB0b3IiOQoHUGFja2FnZRIPCgdtYW5hZ2VyGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHdmVyc2lvbhgDIAEoCSKCAgoKRGVzY3JpcHRvchIMCgRuYW1lGAEgASgJEhUKDWRpc2FtYmlndWF0b3IYAiABKAkSJwoGc3VmZml4GAMgASgOMhcuc2NpcC5EZXNjcmlwdG9yLlN1ZmZpeCKlAQoGU3VmZml4EhUKEVVuc3BlY2lmaWVkU3VmZml4EAASDQoJTmFtZXNwYWNlEAESDwoHUGFja2FnZRABGgIIARIICgRUeXBlEAISCAoEVGVybRADEgoKBk1ldGhvZBAEEhEKDVR5cGVQYXJhbWV0ZXIQBRINCglQYXJhbWV0ZXIQBhIICgRNZXRhEAcSCQoFTG9jYWwQCBIJCgVNYWNybxAJGgIQASJkCglTaWduYXR1cmUSEAoIbGFuZ3VhZ2UYBCABKAkSDAoEdGV4dBgFIAEoCRIlCgtvY2N1cnJlbmNlcxgCIAMoCzIQLnNjaXAuT2NjdXJyZW5jZUoECAEQAkoECAMQBEoECAYQByLxCwoRU3ltYm9sSW5mb3JtYXRpb24SDgoGc3ltYm9sGAEgASgJEhUKDWRvY3VtZW50YXRpb24YAyADKAkSKQoNcmVsYXRpb25zaGlwcxgEIAMoCzISLnNjaXAuUmVsYXRpb25zaGlwEioKBGtpbmQYBSABKA4yHC5zY2lwLlN5bWJvbEluZm9ybWF0aW9uLktpbmQSFAoMZGlzcGxheV9uYW1lGAYgASgJEjAKF3NpZ25hdHVyZV9kb2N1bWVudGF0aW9uGAcgASgLMg8uc2NpcC5TaWduYXR1cmUSGAoQZW5jbG9zaW5nX3N5bWJvbBgIIAEoCSL7CQoES2luZBITCg9VbnNwZWNpZmllZEtpbmQQABISCg5BYnN0cmFjdE1ldGhvZBBCEgwKCEFjY2Vzc29yEEgSCQoFQXJyYXkQARINCglBc3NlcnRpb24QAhISCg5Bc3NvY2lhdGVkVHlwZRADEg0KCUF0dHJpYnV0ZRAEEgkKBUF4aW9tEAUSCwoHQm9vbGVhbhAGEgkKBUNsYXNzEAcSCwoHQ29uY2VwdBBWEgwKCENvbnN0YW50EAgSDwoLQ29uc3RydWN0b3IQCRIMCghDb250cmFjdBA+Eg4KCkRhdGFGYW1pbHkQChIMCghEZWxlZ2F0ZRBJEggKBEVudW0QCxIOCgpFbnVtTWVtYmVyEAwSCQoFRXJyb3IQPxIJCgVFdmVudBANEg0KCUV4dGVuc2lvbhBUEggKBEZhY3QQDhIJCgVGaWVsZBAPEggKBEZpbGUQEBIMCghGdW5jdGlvbhAREgoKBkdldHRlchASEgsKB0dyYW1tYXIQExIMCghJbnN0YW5jZRAUEg0KCUludGVyZmFjZRAVEgcKA0tleRAWEggKBExhbmcQFxIJCgVMZW1tYRAYEgsKB0xpYnJhcnkQQBIJCgVNYWNybxAZEgoKBk1ldGhvZBAaEg8KC01ldGhvZEFsaWFzEEoSEgoOTWV0aG9kUmVjZWl2ZXIQGxIXChNNZXRob2RTcGVjaWZpY2F0aW9uEEMSCwoHTWVzc2FnZRAcEgkKBU1peGluEFUSDAoITW9kaWZpZXIQQRIKCgZNb2R1bGUQHRINCglOYW1lc3BhY2UQHhIICgROdWxsEB8SCgoGTnVtYmVyECASCgoGT2JqZWN0ECESDAoIT3BlcmF0b3IQIhILCgdQYWNrYWdlECMSEQoNUGFja2FnZU9iamVjdBAkEg0KCVBhcmFtZXRlchAlEhIKDlBhcmFtZXRlckxhYmVsECYSCwoHUGF0dGVybhAnEg0KCVByZWRpY2F0ZRAoEgwKCFByb3BlcnR5ECkSDAoIUHJvdG9jb2wQKhISCg5Qcm90b2NvbE1ldGhvZBBEEhUKEVB1cmVWaXJ0dWFsTWV0aG9kEEUSDwoLUXVhc2lxdW90ZXIQKxIRCg1TZWxmUGFyYW1ldGVyECwSCgoGU2V0dGVyEC0SDQoJU2lnbmF0dXJlEC4SEgoOU2luZ2xldG9uQ2xhc3MQSxITCg9TaW5nbGV0b25NZXRob2QQTBIUChBTdGF0aWNEYXRhTWVtYmVyEE0SDwoLU3RhdGljRXZlbnQQThIPCgtTdGF0aWNGaWVsZBBPEhAKDFN0YXRpY01ldGhvZBBQEhIKDlN0YXRpY1Byb3BlcnR5EFESEgoOU3RhdGljVmFyaWFibGUQUhIKCgZTdHJpbmcQMBIKCgZTdHJ1Y3QQMRINCglTdWJzY3JpcHQQLxIKCgZUYWN0aWMQMhILCgdUaGVvcmVtEDMSEQoNVGhpc1BhcmFtZXRlchA0EgkKBVRyYWl0EDUSDwoLVHJhaXRNZXRob2QQRhIICgRUeXBlEDYSDQoJVHlwZUFsaWFzEDcSDQoJVHlwZUNsYXNzEDgSEwoPVHlwZUNsYXNzTWV0aG9kEEcSDgoKVHlwZUZhbWlseRA5EhEKDVR5cGVQYXJhbWV0ZXIQOhIJCgVVbmlvbhA7EgkKBVZhbHVlEDwSDAoIVmFyaWFibGUQPSKCAQoMUmVsYXRpb25zaGlwEg4KBnN5bWJvbBgBIAEoCRIUCgxpc19yZWZlcmVuY2UYAiABKAgSGQoRaXNfaW1wbGVtZW50YXRpb24YAyABKAgSGgoSaXNfdHlwZV9kZWZpbml0aW9uGAQgASgIEhUKDWlzX2RlZmluaXRpb24YBSABKAgiyAEKCk9jY3VycmVuY2USDQoFcmFuZ2UYASADKAUSDgoGc3ltYm9sGAIgASgJEhQKDHN5bWJvbF9yb2xlcxgDIAEoBRIeChZvdmVycmlkZV9kb2N1bWVudGF0aW9uGAQgAygJEiUKC3N5bnRheF9raW5kGAUgASgOMhAuc2NpcC5TeW50YXhLaW5kEiUKC2RpYWdub3N0aWNzGAYgAygLMhAuc2NpcC5EaWFnbm9zdGljEhcKD2VuY2xvc2luZ19yYW5nZRgHIAMoBSKAAQoKRGlhZ25vc3RpYxIgCghzZXZlcml0eRgBIAEoDjIOLnNjaXAuU2V2ZXJpdHkSDAoEY29kZRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg4KBnNvdXJjZRgEIAEoCRIhCgR0YWdzGAUgAygOMhMuc2NpcC5EaWFnbm9zdGljVGFnKjEKD1Byb3RvY29sVmVyc2lvbhIeChpVbnNwZWNpZmllZFByb3RvY29sVmVyc2lvbhAAKkAKDFRleHRFbmNvZGluZxIbChdVbnNwZWNpZmllZFRleHRFbmNvZGluZxAAEggKBFVURjgQARIJCgVVVEYxNhACKqQBChBQb3NpdGlvbkVuY29kaW5nEh8KG1Vuc3BlY2lmaWVkUG9zaXRpb25FbmNvZGluZxAAEiMKH1VURjhDb2RlVW5pdE9mZnNldEZyb21MaW5lU3RhcnQQARIkCiBVVEYxNkNvZGVVbml0T2Zmc2V0RnJvbUxpbmVTdGFydBACEiQKIFVURjMyQ29kZVVuaXRPZmZzZXRGcm9tTGluZVN0YXJ0EAMqlAEKClN5bWJvbFJvbGUSGQoVVW5zcGVjaWZpZWRTeW1ib2xSb2xlEAASDgoKRGVmaW5pdGlvbhABEgoKBkltcG9ydBACEg8KC1dyaXRlQWNjZXNzEAQSDgoKUmVhZEFjY2VzcxAIEg0KCUdlbmVyYXRlZBAQEggKBFRlc3QQIBIVChFGb3J3YXJkRGVmaW5pdGlvbhBAKuoGCgpTeW50YXhLaW5kEhkKFVVuc3BlY2lmaWVkU3ludGF4S2luZBAAEgsKB0NvbW1lbnQQARIYChRQdW5jdHVhdGlvbkRlbGltaXRlchACEhYKElB1bmN0dWF0aW9uQnJhY2tldBADEgsKB0tleXdvcmQQBBIZChFJZGVudGlmaWVyS2V5d29yZBAEGgIIARIWChJJZGVudGlmaWVyT3BlcmF0b3IQBRIOCgpJZGVudGlmaWVyEAYSFQoRSWRlbnRpZmllckJ1aWx0aW4QBxISCg5JZGVudGlmaWVyTnVsbBAIEhYKEklkZW50aWZpZXJDb25zdGFudBAJEhsKF0lkZW50aWZpZXJNdXRhYmxlR2xvYmFsEAoSFwoTSWRlbnRpZmllclBhcmFtZXRlchALEhMKD0lkZW50aWZpZXJMb2NhbBAMEhYKEklkZW50aWZpZXJTaGFkb3dlZBANEhcKE0lkZW50aWZpZXJOYW1lc3BhY2UQDhIYChBJZGVudGlmaWVyTW9kdWxlEA4aAggBEhYKEklkZW50aWZpZXJGdW5jdGlvbhAPEiAKHElkZW50aWZpZXJGdW5jdGlvbkRlZmluaXRpb24QEBITCg9JZGVudGlmaWVyTWFjcm8QERIdChlJZGVudGlmaWVyTWFjcm9EZWZpbml0aW9uEBISEgoOSWRlbnRpZmllclR5cGUQExIZChVJZGVudGlmaWVyQnVpbHRpblR5cGUQFBIXChNJZGVudGlmaWVyQXR0cmlidXRlEBUSDwoLUmVnZXhFc2NhcGUQFhIRCg1SZWdleFJlcGVhdGVkEBcSEQoNUmVnZXhXaWxkY2FyZBAYEhIKDlJlZ2V4RGVsaW1pdGVyEBkSDQoJUmVnZXhKb2luEBoSEQoNU3RyaW5nTGl0ZXJhbBAbEhcKE1N0cmluZ0xpdGVyYWxFc2NhcGUQHBIYChRTdHJpbmdMaXRlcmFsU3BlY2lhbBAdEhQKEFN0cmluZ0xpdGVyYWxLZXkQHhIUChBDaGFyYWN0ZXJMaXRlcmFsEB8SEgoOTnVtZXJpY0xpdGVyYWwQIBISCg5Cb29sZWFuTGl0ZXJhbBAhEgcKA1RhZxAiEhAKDFRhZ0F0dHJpYnV0ZRAjEhAKDFRhZ0RlbGltaXRlchAkGgIQASpWCghTZXZlcml0eRIXChNVbnNwZWNpZmllZFNldmVyaXR5EAASCQoFRXJyb3IQARILCgdXYXJuaW5nEAISDwoLSW5mb3JtYXRpb24QAxIICgRIaW50EAQqTgoNRGlhZ25vc3RpY1RhZxIcChhVbnNwZWNpZmllZERpYWdub3N0aWNUYWcQABIPCgtVbm5lY2Vzc2FyeRABEg4KCkRlcHJlY2F0ZWQQAiqbCgoITGFuZ3VhZ2USFwoTVW5zcGVjaWZpZWRMYW5ndWFnZRAAEggKBEFCQVAQPBIICgRBcGV4EGASBwoDQVBMEDESBwoDQWRhECcSCAoEQWdkYRAtEgwKCEFzY2lpRG9jEFYSDAoIQXNzZW1ibHkQOhIHCgNBd2sQQhIHCgNCYXQQRBIKCgZCaWJUZVgQURIFCgFDECISCQoFQ09CT0wQOxIHCgNDUFAQIxIHCgNDU1MQGhIKCgZDU2hhcnAQARILCgdDbG9qdXJlEAgSEAoMQ29mZmVlc2NyaXB0EBUSDgoKQ29tbW9uTGlzcBAJEgcKA0NvcRAvEggKBENVREEQYRIICgREYXJ0EAMSCgoGRGVscGhpEDkSCAoERGlmZhBYEg4KCkRvY2tlcmZpbGUQUBIKCgZEeWFsb2cQMhIKCgZFbGl4aXIQERIKCgZFcmxhbmcQEhIKCgZGU2hhcnAQKhIICgRGaXNoEEESCAoERmxvdxAYEgsKB0ZvcnRyYW4QOBIOCgpHaXRfQ29tbWl0EFsSDgoKR2l0X0NvbmZpZxBZEg4KCkdpdF9SZWJhc2UQXBIGCgJHbxAhEgsKB0dyYXBoUUwQYhIKCgZHcm9vdnkQBxIICgRIVE1MEB4SCAoESGFjaxAUEg4KCkhhbmRsZWJhcnMQWhILCgdIYXNrZWxsECwSCQoFSWRyaXMQLhIHCgNJbmkQSBIFCgFKEDMSCAoESlNPThBLEggKBEphdmEQBhIOCgpKYXZhU2NyaXB0EBYSEwoPSmF2YVNjcmlwdFJlYWN0EF0SCwoHSnNvbm5ldBBMEgkKBUp1bGlhEDcSDAoISnVzdGZpbGUQbRIKCgZLb3RsaW4QBBIJCgVMYVRlWBBTEggKBExlYW4QMBIICgRMZXNzEBsSBwoDTHVhEAwSCAoETHVhdRBsEgwKCE1ha2VmaWxlEE8SDAoITWFya2Rvd24QVBIKCgZNYXRsYWIQNBIKCgZOaWNrZWwQbhIHCgNOaXgQTRIJCgVPQ2FtbBApEg8KC09iamVjdGl2ZV9DECQSEQoNT2JqZWN0aXZlX0NQUBAlEgoKBlBhc2NhbBBjEgcKA1BIUBATEgkKBVBMU1FMEEYSCAoEUGVybBANEg4KClBvd2VyU2hlbGwQQxIKCgZQcm9sb2cQRxIMCghQcm90b2J1ZhBkEgoKBlB5dGhvbhAPEgUKAVIQNhIKCgZSYWNrZXQQCxIICgRSYWt1EA4SCQoFUmF6b3IQPhIJCgVSZXBybxBmEggKBFJlU1QQVRIICgRSdWJ5EBASCAoEUnVzdBAoEgcKA1NBUxA9EggKBFNDU1MQHRIHCgNTTUwQKxIHCgNTUUwQRRIICgRTYXNzEBwSCQoFU2NhbGEQBRIKCgZTY2hlbWUQChIPCgtTaGVsbFNjcmlwdBBAEgsKB1NreWxhcmsQThIJCgVTbGFuZxBrEgwKCFNvbGlkaXR5EF8SCgoGU3ZlbHRlEGoSCQoFU3dpZnQQAhIHCgNUY2wQZRIICgRUT01MEEkSBwoDVGVYEFISCgoGVGhyaWZ0EGcSDgoKVHlwZVNjcmlwdBAXEhMKD1R5cGVTY3JpcHRSZWFjdBBeEgsKB1Zlcmlsb2cQaBIICgRWSERMEGkSDwoLVmlzdWFsQmFzaWMQPxIHCgNWdWUQGRILCgdXb2xmcmFtEDUSBwoDWE1MEB8SBwoDWFNMECASCAoEWUFNTBBKEgcKA1ppZxAmQi1aK2dpdGh1Yi5jb20vc2NpcC1jb2RlL3NjaXAvYmluZGluZ3MvZ28vc2NpcC9iBnByb3RvMw"); + fileDesc("CgpzY2lwLnByb3RvEgRzY2lwIn8KBUluZGV4EiAKCG1ldGFkYXRhGAEgASgLMg4uc2NpcC5NZXRhZGF0YRIhCglkb2N1bWVudHMYAiADKAsyDi5zY2lwLkRvY3VtZW50EjEKEGV4dGVybmFsX3N5bWJvbHMYAyADKAsyFy5zY2lwLlN5bWJvbEluZm9ybWF0aW9uIp8BCghNZXRhZGF0YRImCgd2ZXJzaW9uGAEgASgOMhUuc2NpcC5Qcm90b2NvbFZlcnNpb24SIQoJdG9vbF9pbmZvGAIgASgLMg4uc2NpcC5Ub29sSW5mbxIUCgxwcm9qZWN0X3Jvb3QYAyABKAkSMgoWdGV4dF9kb2N1bWVudF9lbmNvZGluZxgEIAEoDjISLnNjaXAuVGV4dEVuY29kaW5nIjwKCFRvb2xJbmZvEgwKBG5hbWUYASABKAkSDwoHdmVyc2lvbhgCIAEoCRIRCglhcmd1bWVudHMYAyADKAkixQEKCERvY3VtZW50EhAKCGxhbmd1YWdlGAQgASgJEhUKDXJlbGF0aXZlX3BhdGgYASABKAkSJQoLb2NjdXJyZW5jZXMYAiADKAsyEC5zY2lwLk9jY3VycmVuY2USKAoHc3ltYm9scxgDIAMoCzIXLnNjaXAuU3ltYm9sSW5mb3JtYXRpb24SDAoEdGV4dBgFIAEoCRIxChFwb3NpdGlvbl9lbmNvZGluZxgGIAEoDjIWLnNjaXAuUG9zaXRpb25FbmNvZGluZyJfCgZTeW1ib2wSDgoGc2NoZW1lGAEgASgJEh4KB3BhY2thZ2UYAiABKAsyDS5zY2lwLlBhY2thZ2USJQoLZGVzY3JpcHRvcnMYAyADKAsyEC5zY2lwLkRlc2NyaXB0b3IiOQoHUGFja2FnZRIPCgdtYW5hZ2VyGAEgASgJEgwKBG5hbWUYAiABKAkSDwoHdmVyc2lvbhgDIAEoCSKCAgoKRGVzY3JpcHRvchIMCgRuYW1lGAEgASgJEhUKDWRpc2FtYmlndWF0b3IYAiABKAkSJwoGc3VmZml4GAMgASgOMhcuc2NpcC5EZXNjcmlwdG9yLlN1ZmZpeCKlAQoGU3VmZml4EhUKEVVuc3BlY2lmaWVkU3VmZml4EAASDQoJTmFtZXNwYWNlEAESDwoHUGFja2FnZRABGgIIARIICgRUeXBlEAISCAoEVGVybRADEgoKBk1ldGhvZBAEEhEKDVR5cGVQYXJhbWV0ZXIQBRINCglQYXJhbWV0ZXIQBhIICgRNZXRhEAcSCQoFTG9jYWwQCBIJCgVNYWNybxAJGgIQASJkCglTaWduYXR1cmUSEAoIbGFuZ3VhZ2UYBCABKAkSDAoEdGV4dBgFIAEoCRIlCgtvY2N1cnJlbmNlcxgCIAMoCzIQLnNjaXAuT2NjdXJyZW5jZUoECAEQAkoECAMQBEoECAYQByLxCwoRU3ltYm9sSW5mb3JtYXRpb24SDgoGc3ltYm9sGAEgASgJEhUKDWRvY3VtZW50YXRpb24YAyADKAkSKQoNcmVsYXRpb25zaGlwcxgEIAMoCzISLnNjaXAuUmVsYXRpb25zaGlwEioKBGtpbmQYBSABKA4yHC5zY2lwLlN5bWJvbEluZm9ybWF0aW9uLktpbmQSFAoMZGlzcGxheV9uYW1lGAYgASgJEjAKF3NpZ25hdHVyZV9kb2N1bWVudGF0aW9uGAcgASgLMg8uc2NpcC5TaWduYXR1cmUSGAoQZW5jbG9zaW5nX3N5bWJvbBgIIAEoCSL7CQoES2luZBITCg9VbnNwZWNpZmllZEtpbmQQABISCg5BYnN0cmFjdE1ldGhvZBBCEgwKCEFjY2Vzc29yEEgSCQoFQXJyYXkQARINCglBc3NlcnRpb24QAhISCg5Bc3NvY2lhdGVkVHlwZRADEg0KCUF0dHJpYnV0ZRAEEgkKBUF4aW9tEAUSCwoHQm9vbGVhbhAGEgkKBUNsYXNzEAcSCwoHQ29uY2VwdBBWEgwKCENvbnN0YW50EAgSDwoLQ29uc3RydWN0b3IQCRIMCghDb250cmFjdBA+Eg4KCkRhdGFGYW1pbHkQChIMCghEZWxlZ2F0ZRBJEggKBEVudW0QCxIOCgpFbnVtTWVtYmVyEAwSCQoFRXJyb3IQPxIJCgVFdmVudBANEg0KCUV4dGVuc2lvbhBUEggKBEZhY3QQDhIJCgVGaWVsZBAPEggKBEZpbGUQEBIMCghGdW5jdGlvbhAREgoKBkdldHRlchASEgsKB0dyYW1tYXIQExIMCghJbnN0YW5jZRAUEg0KCUludGVyZmFjZRAVEgcKA0tleRAWEggKBExhbmcQFxIJCgVMZW1tYRAYEgsKB0xpYnJhcnkQQBIJCgVNYWNybxAZEgoKBk1ldGhvZBAaEg8KC01ldGhvZEFsaWFzEEoSEgoOTWV0aG9kUmVjZWl2ZXIQGxIXChNNZXRob2RTcGVjaWZpY2F0aW9uEEMSCwoHTWVzc2FnZRAcEgkKBU1peGluEFUSDAoITW9kaWZpZXIQQRIKCgZNb2R1bGUQHRINCglOYW1lc3BhY2UQHhIICgROdWxsEB8SCgoGTnVtYmVyECASCgoGT2JqZWN0ECESDAoIT3BlcmF0b3IQIhILCgdQYWNrYWdlECMSEQoNUGFja2FnZU9iamVjdBAkEg0KCVBhcmFtZXRlchAlEhIKDlBhcmFtZXRlckxhYmVsECYSCwoHUGF0dGVybhAnEg0KCVByZWRpY2F0ZRAoEgwKCFByb3BlcnR5ECkSDAoIUHJvdG9jb2wQKhISCg5Qcm90b2NvbE1ldGhvZBBEEhUKEVB1cmVWaXJ0dWFsTWV0aG9kEEUSDwoLUXVhc2lxdW90ZXIQKxIRCg1TZWxmUGFyYW1ldGVyECwSCgoGU2V0dGVyEC0SDQoJU2lnbmF0dXJlEC4SEgoOU2luZ2xldG9uQ2xhc3MQSxITCg9TaW5nbGV0b25NZXRob2QQTBIUChBTdGF0aWNEYXRhTWVtYmVyEE0SDwoLU3RhdGljRXZlbnQQThIPCgtTdGF0aWNGaWVsZBBPEhAKDFN0YXRpY01ldGhvZBBQEhIKDlN0YXRpY1Byb3BlcnR5EFESEgoOU3RhdGljVmFyaWFibGUQUhIKCgZTdHJpbmcQMBIKCgZTdHJ1Y3QQMRINCglTdWJzY3JpcHQQLxIKCgZUYWN0aWMQMhILCgdUaGVvcmVtEDMSEQoNVGhpc1BhcmFtZXRlchA0EgkKBVRyYWl0EDUSDwoLVHJhaXRNZXRob2QQRhIICgRUeXBlEDYSDQoJVHlwZUFsaWFzEDcSDQoJVHlwZUNsYXNzEDgSEwoPVHlwZUNsYXNzTWV0aG9kEEcSDgoKVHlwZUZhbWlseRA5EhEKDVR5cGVQYXJhbWV0ZXIQOhIJCgVVbmlvbhA7EgkKBVZhbHVlEDwSDAoIVmFyaWFibGUQPSKCAQoMUmVsYXRpb25zaGlwEg4KBnN5bWJvbBgBIAEoCRIUCgxpc19yZWZlcmVuY2UYAiABKAgSGQoRaXNfaW1wbGVtZW50YXRpb24YAyABKAgSGgoSaXNfdHlwZV9kZWZpbml0aW9uGAQgASgIEhUKDWlzX2RlZmluaXRpb24YBSABKAgiyAEKCk9jY3VycmVuY2USDQoFcmFuZ2UYASADKAUSDgoGc3ltYm9sGAIgASgJEhQKDHN5bWJvbF9yb2xlcxgDIAEoBRIeChZvdmVycmlkZV9kb2N1bWVudGF0aW9uGAQgAygJEiUKC3N5bnRheF9raW5kGAUgASgOMhAuc2NpcC5TeW50YXhLaW5kEiUKC2RpYWdub3N0aWNzGAYgAygLMhAuc2NpcC5EaWFnbm9zdGljEhcKD2VuY2xvc2luZ19yYW5nZRgHIAMoBSKAAQoKRGlhZ25vc3RpYxIgCghzZXZlcml0eRgBIAEoDjIOLnNjaXAuU2V2ZXJpdHkSDAoEY29kZRgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg4KBnNvdXJjZRgEIAEoCRIhCgR0YWdzGAUgAygOMhMuc2NpcC5EaWFnbm9zdGljVGFnKjEKD1Byb3RvY29sVmVyc2lvbhIeChpVbnNwZWNpZmllZFByb3RvY29sVmVyc2lvbhAAKkAKDFRleHRFbmNvZGluZxIbChdVbnNwZWNpZmllZFRleHRFbmNvZGluZxAAEggKBFVURjgQARIJCgVVVEYxNhACKqQBChBQb3NpdGlvbkVuY29kaW5nEh8KG1Vuc3BlY2lmaWVkUG9zaXRpb25FbmNvZGluZxAAEiMKH1VURjhDb2RlVW5pdE9mZnNldEZyb21MaW5lU3RhcnQQARIkCiBVVEYxNkNvZGVVbml0T2Zmc2V0RnJvbUxpbmVTdGFydBACEiQKIFVURjMyQ29kZVVuaXRPZmZzZXRGcm9tTGluZVN0YXJ0EAMqlAEKClN5bWJvbFJvbGUSGQoVVW5zcGVjaWZpZWRTeW1ib2xSb2xlEAASDgoKRGVmaW5pdGlvbhABEgoKBkltcG9ydBACEg8KC1dyaXRlQWNjZXNzEAQSDgoKUmVhZEFjY2VzcxAIEg0KCUdlbmVyYXRlZBAQEggKBFRlc3QQIBIVChFGb3J3YXJkRGVmaW5pdGlvbhBAKuoGCgpTeW50YXhLaW5kEhkKFVVuc3BlY2lmaWVkU3ludGF4S2luZBAAEgsKB0NvbW1lbnQQARIYChRQdW5jdHVhdGlvbkRlbGltaXRlchACEhYKElB1bmN0dWF0aW9uQnJhY2tldBADEgsKB0tleXdvcmQQBBIZChFJZGVudGlmaWVyS2V5d29yZBAEGgIIARIWChJJZGVudGlmaWVyT3BlcmF0b3IQBRIOCgpJZGVudGlmaWVyEAYSFQoRSWRlbnRpZmllckJ1aWx0aW4QBxISCg5JZGVudGlmaWVyTnVsbBAIEhYKEklkZW50aWZpZXJDb25zdGFudBAJEhsKF0lkZW50aWZpZXJNdXRhYmxlR2xvYmFsEAoSFwoTSWRlbnRpZmllclBhcmFtZXRlchALEhMKD0lkZW50aWZpZXJMb2NhbBAMEhYKEklkZW50aWZpZXJTaGFkb3dlZBANEhcKE0lkZW50aWZpZXJOYW1lc3BhY2UQDhIYChBJZGVudGlmaWVyTW9kdWxlEA4aAggBEhYKEklkZW50aWZpZXJGdW5jdGlvbhAPEiAKHElkZW50aWZpZXJGdW5jdGlvbkRlZmluaXRpb24QEBITCg9JZGVudGlmaWVyTWFjcm8QERIdChlJZGVudGlmaWVyTWFjcm9EZWZpbml0aW9uEBISEgoOSWRlbnRpZmllclR5cGUQExIZChVJZGVudGlmaWVyQnVpbHRpblR5cGUQFBIXChNJZGVudGlmaWVyQXR0cmlidXRlEBUSDwoLUmVnZXhFc2NhcGUQFhIRCg1SZWdleFJlcGVhdGVkEBcSEQoNUmVnZXhXaWxkY2FyZBAYEhIKDlJlZ2V4RGVsaW1pdGVyEBkSDQoJUmVnZXhKb2luEBoSEQoNU3RyaW5nTGl0ZXJhbBAbEhcKE1N0cmluZ0xpdGVyYWxFc2NhcGUQHBIYChRTdHJpbmdMaXRlcmFsU3BlY2lhbBAdEhQKEFN0cmluZ0xpdGVyYWxLZXkQHhIUChBDaGFyYWN0ZXJMaXRlcmFsEB8SEgoOTnVtZXJpY0xpdGVyYWwQIBISCg5Cb29sZWFuTGl0ZXJhbBAhEgcKA1RhZxAiEhAKDFRhZ0F0dHJpYnV0ZRAjEhAKDFRhZ0RlbGltaXRlchAkGgIQASpWCghTZXZlcml0eRIXChNVbnNwZWNpZmllZFNldmVyaXR5EAASCQoFRXJyb3IQARILCgdXYXJuaW5nEAISDwoLSW5mb3JtYXRpb24QAxIICgRIaW50EAQqTgoNRGlhZ25vc3RpY1RhZxIcChhVbnNwZWNpZmllZERpYWdub3N0aWNUYWcQABIPCgtVbm5lY2Vzc2FyeRABEg4KCkRlcHJlY2F0ZWQQAiqbCgoITGFuZ3VhZ2USFwoTVW5zcGVjaWZpZWRMYW5ndWFnZRAAEggKBEFCQVAQPBIICgRBcGV4EGASBwoDQVBMEDESBwoDQWRhECcSCAoEQWdkYRAtEgwKCEFzY2lpRG9jEFYSDAoIQXNzZW1ibHkQOhIHCgNBd2sQQhIHCgNCYXQQRBIKCgZCaWJUZVgQURIFCgFDECISCQoFQ09CT0wQOxIHCgNDUFAQIxIHCgNDU1MQGhIKCgZDU2hhcnAQARILCgdDbG9qdXJlEAgSEAoMQ29mZmVlc2NyaXB0EBUSDgoKQ29tbW9uTGlzcBAJEgcKA0NvcRAvEggKBENVREEQYRIICgREYXJ0EAMSCgoGRGVscGhpEDkSCAoERGlmZhBYEg4KCkRvY2tlcmZpbGUQUBIKCgZEeWFsb2cQMhIKCgZFbGl4aXIQERIKCgZFcmxhbmcQEhIKCgZGU2hhcnAQKhIICgRGaXNoEEESCAoERmxvdxAYEgsKB0ZvcnRyYW4QOBIOCgpHaXRfQ29tbWl0EFsSDgoKR2l0X0NvbmZpZxBZEg4KCkdpdF9SZWJhc2UQXBIGCgJHbxAhEgsKB0dyYXBoUUwQYhIKCgZHcm9vdnkQBxIICgRIVE1MEB4SCAoESGFjaxAUEg4KCkhhbmRsZWJhcnMQWhILCgdIYXNrZWxsECwSCQoFSWRyaXMQLhIHCgNJbmkQSBIFCgFKEDMSCAoESlNPThBLEggKBEphdmEQBhIOCgpKYXZhU2NyaXB0EBYSEwoPSmF2YVNjcmlwdFJlYWN0EF0SCwoHSnNvbm5ldBBMEgkKBUp1bGlhEDcSDAoISnVzdGZpbGUQbRIKCgZLb3RsaW4QBBIJCgVMYVRlWBBTEggKBExlYW4QMBIICgRMZXNzEBsSBwoDTHVhEAwSCAoETHVhdRBsEgwKCE1ha2VmaWxlEE8SDAoITWFya2Rvd24QVBIKCgZNYXRsYWIQNBIKCgZOaWNrZWwQbhIHCgNOaXgQTRIJCgVPQ2FtbBApEg8KC09iamVjdGl2ZV9DECQSEQoNT2JqZWN0aXZlX0NQUBAlEgoKBlBhc2NhbBBjEgcKA1BIUBATEgkKBVBMU1FMEEYSCAoEUGVybBANEg4KClBvd2VyU2hlbGwQQxIKCgZQcm9sb2cQRxIMCghQcm90b2J1ZhBkEgoKBlB5dGhvbhAPEgUKAVIQNhIKCgZSYWNrZXQQCxIICgRSYWt1EA4SCQoFUmF6b3IQPhIJCgVSZXBybxBmEggKBFJlU1QQVRIICgRSdWJ5EBASCAoEUnVzdBAoEgcKA1NBUxA9EggKBFNDU1MQHRIHCgNTTUwQKxIHCgNTUUwQRRIICgRTYXNzEBwSCQoFU2NhbGEQBRIKCgZTY2hlbWUQChIPCgtTaGVsbFNjcmlwdBBAEgsKB1NreWxhcmsQThIJCgVTbGFuZxBrEgwKCFNvbGlkaXR5EF8SCgoGU3ZlbHRlEGoSCQoFU3dpZnQQAhIHCgNUY2wQZRIICgRUT01MEEkSBwoDVGVYEFISCgoGVGhyaWZ0EGcSDgoKVHlwZVNjcmlwdBAXEhMKD1R5cGVTY3JpcHRSZWFjdBBeEgsKB1Zlcmlsb2cQaBIICgRWSERMEGkSDwoLVmlzdWFsQmFzaWMQPxIHCgNWdWUQGRILCgdXb2xmcmFtEDUSBwoDWE1MEB8SBwoDWFNMECASCAoEWUFNTBBKEgcKA1ppZxAmQk4KEm9yZy5zY2lwX2NvZGUuc2NpcEIJU2NpcFByb3RvUAFaK2dpdGh1Yi5jb20vc2NpcC1jb2RlL3NjaXAvYmluZGluZ3MvZ28vc2NpcC9iBnByb3RvMw"); /** * Index represents a complete SCIP index for a workspace this is rooted at a diff --git a/buf.gen.yaml b/buf.gen.yaml index 59803072..d82926f5 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -1,21 +1,27 @@ # Configuration file for https://buf.build/, which we use for Protobuf code generation. -version: v1 +version: v2 plugins: - - name: doc + - local: protoc-gen-doc out: ./docs/ opt: docs/scip.sprig,scip.md # NOTE: the sprig file is a template, it is not generated. - - name: go + - local: protoc-gen-go out: ./bindings/go/scip/ opt: - paths=source_relative - - name: es + - local: protoc-gen-es out: ./bindings/typescript/ opt: - target=ts - - name: rust - path: protoc-gen-rs + - local: protoc-gen-rs out: ./bindings/rust/src/generated/ - - name: haskell - path: proto-lens-protoc + - local: proto-lens-protoc out: ./bindings/haskell/src + - protoc_builtin: java + out: ./bindings/java/src/main/java/ + # The Kotlin binding only ships the DSL extensions; the underlying Java + # message classes are consumed via a Maven dependency on scip-java, which + # mirrors how the upstream protobuf-kotlin artifact relates to + # protobuf-java. + - protoc_builtin: kotlin + out: ./bindings/kotlin/src/main/kotlin/ diff --git a/buf.yaml b/buf.yaml index e0e268c5..2f0f1514 100644 --- a/buf.yaml +++ b/buf.yaml @@ -4,6 +4,12 @@ build: excludes: - .direnv - node_modules + # The JVM bindings ship a copy of scip.proto as a Maven classifier + # artifact (see bindings/{java,kotlin}/pom.xml). Exclude those copies + # from buf's input set so we don't re-process them as duplicate + # top-level proto files. + - bindings/java/src/main/proto + - bindings/kotlin/src/main/proto lint: use: - DEFAULT diff --git a/checks.nix b/checks.nix index 4af31b73..eb60efa6 100644 --- a/checks.nix +++ b/checks.nix @@ -2,6 +2,21 @@ pkgs, version, }: +let + # Extracts the project's element from a pom.xml. + # Looks for the unique top-level at 2-space indentation, which + # distinguishes it from elements nested inside , + # , etc. (deeper indentation). + extractPomVersion = + pomFile: + let + lines = pkgs.lib.splitString "\n" (builtins.readFile pomFile); + isVersionLine = line: builtins.match "^ [0-9.]+$" line != null; + versionLine = pkgs.lib.findFirst isVersionLine null lines; + match = builtins.match "^ ([0-9.]+)$" versionLine; + in + builtins.head match; +in { github-actions = pkgs.stdenv.mkDerivation { pname = "scip-github-actions"; @@ -66,6 +81,38 @@ ''; }; + java-bindings = + let + pomVersion = extractPomVersion ./bindings/java/pom.xml; + in + assert pkgs.lib.assertMsg ( + pomVersion == version + ) "Version mismatch in bindings/java/pom.xml: expected ${version}, got ${pomVersion}"; + pkgs.maven.buildMavenPackage { + pname = "scip-bindings-java"; + inherit version; + src = ./bindings/java; + mvnHash = "sha256-IwVaByO6zz87VLL6pX8uhKrp9Co1eBiTH+U0ze29EnE="; + doCheck = false; + installPhase = "touch $out"; + }; + + kotlin-bindings = + let + pomVersion = extractPomVersion ./bindings/kotlin/pom.xml; + in + assert pkgs.lib.assertMsg ( + pomVersion == version + ) "Version mismatch in bindings/kotlin/pom.xml: expected ${version}, got ${pomVersion}"; + pkgs.maven.buildMavenPackage { + pname = "scip-bindings-kotlin"; + inherit version; + src = ./bindings/kotlin; + mvnHash = "sha256-DhQWd2Zcrbf04cqwjI0UqNJiU3h/OWYnfOAZAuzRdWk="; + doCheck = false; + installPhase = "touch $out"; + }; + reprolang = let reprolangVersion = (builtins.fromJSON (builtins.readFile ./reprolang/package.json)).version; diff --git a/flake.nix b/flake.nix index 73f9302f..84484b50 100644 --- a/flake.nix +++ b/flake.nix @@ -66,6 +66,7 @@ gotools haskellPackages.proto-lens-protoc prettier + protobuf protoc-gen-doc protoc-gen-es protoc-gen-go @@ -75,6 +76,13 @@ buf generate goimports -w ./bindings/go/scip/scip.pb.go prettier --write --list-different '**/*.{ts,js(on)?,md,yml}' + # Make scip.proto available to the JVM bindings' Maven build + # so they can attach it as a classifier artifact (consumers + # can then `mvn dependency:get` the canonical schema instead + # of vendoring it). + for d in bindings/java bindings/kotlin; do + install -D -m644 scip.proto "$d/src/main/proto/scip.proto" + done ''; }; diff --git a/go.sum b/go.sum index c3f401e0..5887b590 100644 --- a/go.sum +++ b/go.sum @@ -142,8 +142,6 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/k0kubun/pp/v3 v3.1.0 h1:ifxtqJkRZhw3h554/z/8zm6AAbyO4LLKDlA5eV+9O8Q= github.com/k0kubun/pp/v3 v3.1.0/go.mod h1:vIrP5CF0n78pKHm2Ku6GVerpZBJvscg48WepUYEk2gw= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/compress v1.18.6 h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao= github.com/klauspost/compress v1.18.6/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= diff --git a/scip.proto b/scip.proto index 46f23f0e..b7c33bfb 100644 --- a/scip.proto +++ b/scip.proto @@ -13,6 +13,12 @@ syntax = "proto3"; package scip; option go_package = "github.com/scip-code/scip/bindings/go/scip/"; +option java_multiple_files = true; +// Avoid collision between the file-level outer class (which holds the file +// descriptor and registerAllExtensions) and messages also called "Scip*" +// once java_multiple_files emits each message as its own top-level class. +option java_outer_classname = "ScipProto"; +option java_package = "org.scip_code.scip"; // Index represents a complete SCIP index for a workspace this is rooted at a // single directory. An Index message payload can have a large memory footprint