Version 2.18.0-107.0.dev

Merge commit 'f7c7076fe856ddfcc85e6ed06103a2bd43f2fa09' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ce00d95..10a7ae0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,27 @@
 - Add `connectionState` attribute and `connectionstatechange` listener to
   `RtcPeerConnection`.
 
+### Tools
+
+#### Linter
+
+Updated the Linter to `1.23.0`, which includes changes that
+
+- fixes `no_leading_underscores_for_local_identifiers`
+  to lint local function declarations.
+- fixes `avoid_init_to_null` to correctly handle super
+  initializing defaults that are non-null.
+- updates `no_leading_underscores_for_local_identifiers`
+  to allow identifiers with just underscores.
+- fixes `flutter_style_todos` to support usernames that
+  start with a digit.
+- updates `require_trailing_commas` to handle functions
+  in asserts and multi-line strings.
+- updates `unsafe_html` to allow assignments to
+  `img.src`.
+- fixes `unnecessary_null_checks` to properly handle map
+  literal entries.
+
 ## 2.17.0
 
 ### Language
@@ -274,22 +295,8 @@
 
 #### Linter
 
-Updated the Linter to `1.23.0`, which includes changes that
+Updated the Linter to `1.22.0`, which includes changes that
 
-- fixes `no_leading_underscores_for_local_identifiers`
-  to lint local function declarations.
-- fixes `avoid_init_to_null` to correctly handle super
-  initializing defaults that are non-null.
-- updates `no_leading_underscores_for_local_identifiers`
-  to allow identifiers with just underscores.
-- fixes `flutter_style_todos` to support usernames that
-  start with a digit.
-- updates `require_trailing_commas` to handle functions
-  in asserts and multi-line strings.
-- updates `unsafe_html` to allow assignments to 
-  `img.src`.
-- fixes `unnecessary_null_checks` to properly handle map
-  literal entries.
 - fixes null-safe variance exceptions in `invariant_booleans`.
 - updates `depend_on_referenced_packages` to treat `flutter_gen` as a virtual
   package, not needing an explicit dependency.
diff --git a/DEPS b/DEPS
index 2075bbb..75ce990 100644
--- a/DEPS
+++ b/DEPS
@@ -144,7 +144,7 @@
   "rust_revision": "b7856f695d65a8ebc846754f97d15814bcb1c244",
   "shelf_packages_handler_rev": "78302e67c035047e6348e692b0c1182131f0fe35",
   "shelf_proxy_rev": "124615d0614b38814970aa9638725d9d6b435268",
-  "shelf_rev": "78ac724a7944700340a3cef28c84bccbe62e9367",
+  "shelf_rev": "6d1f24da2f85ba221dda3cfaadb4d3fc043e8eec",
   "shelf_static_rev": "202ec1a53c9a830c17cf3b718d089cf7eba568ad",
   "shelf_web_socket_rev": "24fb8a04befa75a94ac63a27047b231d1a22aab4",
   "source_map_stack_trace_rev": "8eabd96b1811e30a11d3c54c9b4afae4fb72e98f",
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
index cf3476b..437ae8a 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -282,6 +282,17 @@
   }
 
   @override
+  void beginLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {
+    listener?.beginLibraryAugmentation(libraryKeyword, augmentKeyword);
+  }
+
+  @override
+  void endLibraryAugmentation(
+      Token libraryKeyword, Token augmentKeyword, Token semicolon) {
+    listener?.endLibraryAugmentation(libraryKeyword, augmentKeyword, semicolon);
+  }
+
+  @override
   void beginLibraryName(Token token) {
     listener?.beginLibraryName(token);
   }
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index d31bac8b..f72d10b 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -953,6 +953,16 @@
     logEvent("LabeledStatement");
   }
 
+  void beginLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {}
+
+  /// Handle the end of a library augmentation directive.  Substructures:
+  /// - metadata
+  /// - uri
+  void endLibraryAugmentation(
+      Token libraryKeyword, Token augmentKeyword, Token semicolon) {
+    logEvent("LibraryAugmentation");
+  }
+
   void beginLibraryName(Token token) {}
 
   /// Handle the end of a library directive.  Substructures:
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index 4359e27..89a8755 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -617,7 +617,13 @@
         } else if (identical(value, 'library')) {
           context.parseTopLevelKeywordModifiers(start, keyword);
           directiveState?.checkLibrary(this, keyword);
-          return parseLibraryName(keyword);
+          final Token tokenAfterKeyword = keyword.next!;
+          if (tokenAfterKeyword.isIdentifier &&
+              tokenAfterKeyword.lexeme == 'augment') {
+            return parseLibraryAugmentation(keyword, tokenAfterKeyword);
+          } else {
+            return parseLibraryName(keyword);
+          }
         }
       }
     }
@@ -626,6 +632,23 @@
   }
 
   /// ```
+  /// libraryAugmentationDirective:
+  ///   'library' 'augment' uri ';'
+  /// ;
+  /// ```
+  Token parseLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {
+    assert(optional('library', libraryKeyword));
+    assert(optional('augment', augmentKeyword));
+    listener.beginUncategorizedTopLevelDeclaration(libraryKeyword);
+    listener.beginLibraryAugmentation(libraryKeyword, augmentKeyword);
+    Token start = augmentKeyword;
+    Token token = ensureLiteralString(start);
+    Token semicolon = ensureSemicolon(token);
+    listener.endLibraryAugmentation(libraryKeyword, augmentKeyword, semicolon);
+    return semicolon;
+  }
+
+  /// ```
   /// libraryDirective:
   ///   'library' qualified ';'
   /// ;
diff --git a/pkg/analysis_server/benchmark/perf/memory_tests.dart b/pkg/analysis_server/benchmark/perf/memory_tests.dart
index 7836814..c751542 100644
--- a/pkg/analysis_server/benchmark/perf/memory_tests.dart
+++ b/pkg/analysis_server/benchmark/perf/memory_tests.dart
@@ -6,7 +6,7 @@
 import 'dart:convert' show jsonDecode, jsonEncode;
 import 'dart:io';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart' as lsp;
 import 'package:analysis_server/src/lsp/client_capabilities.dart';
 import 'package:analysis_server/src/protocol_server.dart';
 import 'package:analyzer/instrumentation/instrumentation.dart';
@@ -209,7 +209,7 @@
 class LspAnalysisServerMemoryUsageTest
     extends AbstractLspAnalysisServerIntegrationTest
     with ServerMemoryUsageMixin {
-  Map<String, List<Diagnostic>> currentAnalysisErrors = {};
+  Map<String, List<lsp.Diagnostic>> currentAnalysisErrors = {};
 
   @override
   void expect(Object? actual, Matcher matcher, {String? reason}) =>
@@ -227,7 +227,7 @@
     ]);
     await super.setUp();
 
-    errorNotificationsFromServer.listen((NotificationMessage error) {
+    errorNotificationsFromServer.listen((lsp.NotificationMessage error) {
       // A server error should never happen during an integration test.
       fail('${error.toJson()}');
     });
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol.dart b/pkg/analysis_server/lib/lsp_protocol/protocol.dart
new file mode 100644
index 0000000..7243549
--- /dev/null
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol.dart
@@ -0,0 +1,8 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+export 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart'
+    hide jsonEncoder;
+export 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+export 'package:analysis_server/lsp_protocol/protocol_special.dart';
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart
index 6ba59ff..e3c0fe5 100644
--- a/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart
@@ -96,17 +96,17 @@
   );
 
   ClosingLabel({
-    required this.range,
     required this.label,
+    required this.range,
   });
   static ClosingLabel fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final labelJson = json['label'];
     final label = labelJson as String;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return ClosingLabel(
-      range: range,
       label: label,
+      range: range,
     );
   }
 
@@ -115,31 +115,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     __result['label'] = label;
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('range');
-      try {
-        if (!obj.containsKey('range')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final range = obj['range'];
-        if (range == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(range, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('label');
       try {
         if (!obj.containsKey('label')) {
@@ -158,6 +140,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('range');
+      try {
+        if (!obj.containsKey('range')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final range = obj['range'];
+        if (range == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(range, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ClosingLabel');
@@ -168,15 +168,15 @@
   @override
   bool operator ==(Object other) {
     if (other is ClosingLabel && other.runtimeType == ClosingLabel) {
-      return range == other.range && label == other.label && true;
+      return label == other.label && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         label,
+        range,
       );
 
   @override
@@ -307,38 +307,38 @@
   );
 
   DartSuggestionSetCompletionItemResolutionInfo({
-    required this.file,
-    required this.offset,
-    required this.libId,
     required this.displayUri,
-    required this.rOffset,
+    required this.file,
     required this.iLength,
+    required this.libId,
+    required this.offset,
     required this.rLength,
+    required this.rOffset,
   });
   static DartSuggestionSetCompletionItemResolutionInfo fromJson(
       Map<String, Object?> json) {
-    final fileJson = json['file'];
-    final file = fileJson as String;
-    final offsetJson = json['offset'];
-    final offset = offsetJson as int;
-    final libIdJson = json['libId'];
-    final libId = libIdJson as int;
     final displayUriJson = json['displayUri'];
     final displayUri = displayUriJson as String;
-    final rOffsetJson = json['rOffset'];
-    final rOffset = rOffsetJson as int;
+    final fileJson = json['file'];
+    final file = fileJson as String;
     final iLengthJson = json['iLength'];
     final iLength = iLengthJson as int;
+    final libIdJson = json['libId'];
+    final libId = libIdJson as int;
+    final offsetJson = json['offset'];
+    final offset = offsetJson as int;
     final rLengthJson = json['rLength'];
     final rLength = rLengthJson as int;
+    final rOffsetJson = json['rOffset'];
+    final rOffset = rOffsetJson as int;
     return DartSuggestionSetCompletionItemResolutionInfo(
-      file: file,
-      offset: offset,
-      libId: libId,
       displayUri: displayUri,
-      rOffset: rOffset,
+      file: file,
       iLength: iLength,
+      libId: libId,
+      offset: offset,
       rLength: rLength,
+      rOffset: rOffset,
     );
   }
 
@@ -352,18 +352,36 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['file'] = file;
-    __result['offset'] = offset;
-    __result['libId'] = libId;
     __result['displayUri'] = displayUri;
-    __result['rOffset'] = rOffset;
+    __result['file'] = file;
     __result['iLength'] = iLength;
+    __result['libId'] = libId;
+    __result['offset'] = offset;
     __result['rLength'] = rLength;
+    __result['rOffset'] = rOffset;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('displayUri');
+      try {
+        if (!obj.containsKey('displayUri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final displayUri = obj['displayUri'];
+        if (displayUri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(displayUri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('file');
       try {
         if (!obj.containsKey('file')) {
@@ -382,18 +400,18 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('offset');
+      reporter.push('iLength');
       try {
-        if (!obj.containsKey('offset')) {
+        if (!obj.containsKey('iLength')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final offset = obj['offset'];
-        if (offset == null) {
+        final iLength = obj['iLength'];
+        if (iLength == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(offset is int)) {
+        if (!(iLength is int)) {
           reporter.reportError('must be of type int');
           return false;
         }
@@ -418,54 +436,18 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('displayUri');
+      reporter.push('offset');
       try {
-        if (!obj.containsKey('displayUri')) {
+        if (!obj.containsKey('offset')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final displayUri = obj['displayUri'];
-        if (displayUri == null) {
+        final offset = obj['offset'];
+        if (offset == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(displayUri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('rOffset');
-      try {
-        if (!obj.containsKey('rOffset')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final rOffset = obj['rOffset'];
-        if (rOffset == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(rOffset is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('iLength');
-      try {
-        if (!obj.containsKey('iLength')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final iLength = obj['iLength'];
-        if (iLength == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(iLength is int)) {
+        if (!(offset is int)) {
           reporter.reportError('must be of type int');
           return false;
         }
@@ -490,6 +472,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('rOffset');
+      try {
+        if (!obj.containsKey('rOffset')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final rOffset = obj['rOffset'];
+        if (rOffset == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(rOffset is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError(
@@ -502,13 +502,13 @@
   bool operator ==(Object other) {
     if (other is DartSuggestionSetCompletionItemResolutionInfo &&
         other.runtimeType == DartSuggestionSetCompletionItemResolutionInfo) {
-      return file == other.file &&
-          offset == other.offset &&
-          libId == other.libId &&
-          displayUri == other.displayUri &&
-          rOffset == other.rOffset &&
+      return displayUri == other.displayUri &&
+          file == other.file &&
           iLength == other.iLength &&
+          libId == other.libId &&
+          offset == other.offset &&
           rLength == other.rLength &&
+          rOffset == other.rOffset &&
           true;
     }
     return false;
@@ -516,13 +516,13 @@
 
   @override
   int get hashCode => Object.hash(
-        file,
-        offset,
-        libId,
         displayUri,
-        rOffset,
+        file,
         iLength,
+        libId,
+        offset,
         rLength,
+        rOffset,
       );
 
   @override
@@ -536,35 +536,35 @@
   );
 
   Element({
-    this.range,
-    required this.name,
     required this.kind,
+    required this.name,
     this.parameters,
-    this.typeParameters,
+    this.range,
     this.returnType,
+    this.typeParameters,
   });
   static Element fromJson(Map<String, Object?> json) {
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
+    final nameJson = json['name'];
+    final name = nameJson as String;
+    final parametersJson = json['parameters'];
+    final parameters = parametersJson as String?;
     final rangeJson = json['range'];
     final range = rangeJson != null
         ? Range.fromJson(rangeJson as Map<String, Object?>)
         : null;
-    final nameJson = json['name'];
-    final name = nameJson as String;
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
-    final parametersJson = json['parameters'];
-    final parameters = parametersJson as String?;
-    final typeParametersJson = json['typeParameters'];
-    final typeParameters = typeParametersJson as String?;
     final returnTypeJson = json['returnType'];
     final returnType = returnTypeJson as String?;
+    final typeParametersJson = json['typeParameters'];
+    final typeParameters = typeParametersJson as String?;
     return Element(
-      range: range,
-      name: name,
       kind: kind,
+      name: name,
       parameters: parameters,
-      typeParameters: typeParameters,
+      range: range,
       returnType: returnType,
+      typeParameters: typeParameters,
     );
   }
 
@@ -577,30 +577,38 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (range != null) {
-      __result['range'] = range?.toJson();
-    }
-    __result['name'] = name;
     __result['kind'] = kind;
+    __result['name'] = name;
     if (parameters != null) {
       __result['parameters'] = parameters;
     }
-    if (typeParameters != null) {
-      __result['typeParameters'] = typeParameters;
+    if (range != null) {
+      __result['range'] = range?.toJson();
     }
     if (returnType != null) {
       __result['returnType'] = returnType;
     }
+    if (typeParameters != null) {
+      __result['typeParameters'] = typeParameters;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('range');
+      reporter.push('kind');
       try {
-        final range = obj['range'];
-        if (range != null && !(Range.canParse(range, reporter))) {
-          reporter.reportError('must be of type Range');
+        if (!obj.containsKey('kind')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final kind = obj['kind'];
+        if (kind == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(kind is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -624,28 +632,30 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('kind');
+      reporter.push('parameters');
       try {
-        if (!obj.containsKey('kind')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final kind = obj['kind'];
-        if (kind == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(kind is String)) {
+        final parameters = obj['parameters'];
+        if (parameters != null && !(parameters is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('parameters');
+      reporter.push('range');
       try {
-        final parameters = obj['parameters'];
-        if (parameters != null && !(parameters is String)) {
+        final range = obj['range'];
+        if (range != null && !(Range.canParse(range, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('returnType');
+      try {
+        final returnType = obj['returnType'];
+        if (returnType != null && !(returnType is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -662,16 +672,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('returnType');
-      try {
-        final returnType = obj['returnType'];
-        if (returnType != null && !(returnType is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type Element');
@@ -682,12 +682,12 @@
   @override
   bool operator ==(Object other) {
     if (other is Element && other.runtimeType == Element) {
-      return range == other.range &&
+      return kind == other.kind &&
           name == other.name &&
-          kind == other.kind &&
           parameters == other.parameters &&
-          typeParameters == other.typeParameters &&
+          range == other.range &&
           returnType == other.returnType &&
+          typeParameters == other.typeParameters &&
           true;
     }
     return false;
@@ -695,12 +695,12 @@
 
   @override
   int get hashCode => Object.hash(
-        range,
-        name,
         kind,
+        name,
         parameters,
-        typeParameters,
+        range,
         returnType,
+        typeParameters,
       );
 
   @override
@@ -714,52 +714,52 @@
   );
 
   FlutterOutline({
+    this.attributes,
+    this.children,
+    this.className,
+    required this.codeRange,
+    this.dartElement,
     required this.kind,
     this.label,
-    this.className,
-    this.variableName,
-    this.attributes,
-    this.dartElement,
     required this.range,
-    required this.codeRange,
-    this.children,
+    this.variableName,
   });
   static FlutterOutline fromJson(Map<String, Object?> json) {
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
-    final labelJson = json['label'];
-    final label = labelJson as String?;
-    final classNameJson = json['className'];
-    final className = classNameJson as String?;
-    final variableNameJson = json['variableName'];
-    final variableName = variableNameJson as String?;
     final attributesJson = json['attributes'];
     final attributes = (attributesJson as List<Object?>?)
         ?.map((item) =>
             FlutterOutlineAttribute.fromJson(item as Map<String, Object?>))
         .toList();
-    final dartElementJson = json['dartElement'];
-    final dartElement = dartElementJson != null
-        ? Element.fromJson(dartElementJson as Map<String, Object?>)
-        : null;
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
-    final codeRangeJson = json['codeRange'];
-    final codeRange = Range.fromJson(codeRangeJson as Map<String, Object?>);
     final childrenJson = json['children'];
     final children = (childrenJson as List<Object?>?)
         ?.map((item) => FlutterOutline.fromJson(item as Map<String, Object?>))
         .toList();
+    final classNameJson = json['className'];
+    final className = classNameJson as String?;
+    final codeRangeJson = json['codeRange'];
+    final codeRange = Range.fromJson(codeRangeJson as Map<String, Object?>);
+    final dartElementJson = json['dartElement'];
+    final dartElement = dartElementJson != null
+        ? Element.fromJson(dartElementJson as Map<String, Object?>)
+        : null;
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
+    final labelJson = json['label'];
+    final label = labelJson as String?;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
+    final variableNameJson = json['variableName'];
+    final variableName = variableNameJson as String?;
     return FlutterOutline(
+      attributes: attributes,
+      children: children,
+      className: className,
+      codeRange: codeRange,
+      dartElement: dartElement,
       kind: kind,
       label: label,
-      className: className,
-      variableName: variableName,
-      attributes: attributes,
-      dartElement: dartElement,
       range: range,
-      codeRange: codeRange,
-      children: children,
+      variableName: variableName,
     );
   }
 
@@ -775,33 +775,97 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['kind'] = kind;
-    if (label != null) {
-      __result['label'] = label;
-    }
-    if (className != null) {
-      __result['className'] = className;
-    }
-    if (variableName != null) {
-      __result['variableName'] = variableName;
-    }
     if (attributes != null) {
       __result['attributes'] =
           attributes?.map((item) => item.toJson()).toList();
     }
+    if (children != null) {
+      __result['children'] = children?.map((item) => item.toJson()).toList();
+    }
+    if (className != null) {
+      __result['className'] = className;
+    }
+    __result['codeRange'] = codeRange.toJson();
     if (dartElement != null) {
       __result['dartElement'] = dartElement?.toJson();
     }
+    __result['kind'] = kind;
+    if (label != null) {
+      __result['label'] = label;
+    }
     __result['range'] = range.toJson();
-    __result['codeRange'] = codeRange.toJson();
-    if (children != null) {
-      __result['children'] = children?.map((item) => item.toJson()).toList();
+    if (variableName != null) {
+      __result['variableName'] = variableName;
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('attributes');
+      try {
+        final attributes = obj['attributes'];
+        if (attributes != null &&
+            !((attributes is List<Object?> &&
+                (attributes.every((item) =>
+                    FlutterOutlineAttribute.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<FlutterOutlineAttribute>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('children');
+      try {
+        final children = obj['children'];
+        if (children != null &&
+            !((children is List<Object?> &&
+                (children.every(
+                    (item) => FlutterOutline.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<FlutterOutline>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('className');
+      try {
+        final className = obj['className'];
+        if (className != null && !(className is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('codeRange');
+      try {
+        if (!obj.containsKey('codeRange')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final codeRange = obj['codeRange'];
+        if (codeRange == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(codeRange, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('dartElement');
+      try {
+        final dartElement = obj['dartElement'];
+        if (dartElement != null && !(Element.canParse(dartElement, reporter))) {
+          reporter.reportError('must be of type Element');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -830,49 +894,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('className');
-      try {
-        final className = obj['className'];
-        if (className != null && !(className is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('variableName');
-      try {
-        final variableName = obj['variableName'];
-        if (variableName != null && !(variableName is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('attributes');
-      try {
-        final attributes = obj['attributes'];
-        if (attributes != null &&
-            !((attributes is List<Object?> &&
-                (attributes.every((item) =>
-                    FlutterOutlineAttribute.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<FlutterOutlineAttribute>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('dartElement');
-      try {
-        final dartElement = obj['dartElement'];
-        if (dartElement != null && !(Element.canParse(dartElement, reporter))) {
-          reporter.reportError('must be of type Element');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -891,32 +912,11 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('codeRange');
+      reporter.push('variableName');
       try {
-        if (!obj.containsKey('codeRange')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final codeRange = obj['codeRange'];
-        if (codeRange == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(codeRange, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('children');
-      try {
-        final children = obj['children'];
-        if (children != null &&
-            !((children is List<Object?> &&
-                (children.every(
-                    (item) => FlutterOutline.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<FlutterOutline>');
+        final variableName = obj['variableName'];
+        if (variableName != null && !(variableName is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -932,20 +932,20 @@
   @override
   bool operator ==(Object other) {
     if (other is FlutterOutline && other.runtimeType == FlutterOutline) {
-      return kind == other.kind &&
-          label == other.label &&
-          className == other.className &&
-          variableName == other.variableName &&
-          listEqual(
+      return listEqual(
               attributes,
               other.attributes,
               (FlutterOutlineAttribute a, FlutterOutlineAttribute b) =>
                   a == b) &&
-          dartElement == other.dartElement &&
-          range == other.range &&
-          codeRange == other.codeRange &&
           listEqual(children, other.children,
               (FlutterOutline a, FlutterOutline b) => a == b) &&
+          className == other.className &&
+          codeRange == other.codeRange &&
+          dartElement == other.dartElement &&
+          kind == other.kind &&
+          label == other.label &&
+          range == other.range &&
+          variableName == other.variableName &&
           true;
     }
     return false;
@@ -953,15 +953,15 @@
 
   @override
   int get hashCode => Object.hash(
+        lspHashCode(attributes),
+        lspHashCode(children),
+        className,
+        codeRange,
+        dartElement,
         kind,
         label,
-        className,
-        variableName,
-        lspHashCode(attributes),
-        dartElement,
         range,
-        codeRange,
-        lspHashCode(children),
+        variableName,
       );
 
   @override
@@ -975,22 +975,22 @@
   );
 
   FlutterOutlineAttribute({
-    required this.name,
     required this.label,
+    required this.name,
     this.valueRange,
   });
   static FlutterOutlineAttribute fromJson(Map<String, Object?> json) {
-    final nameJson = json['name'];
-    final name = nameJson as String;
     final labelJson = json['label'];
     final label = labelJson as String;
+    final nameJson = json['name'];
+    final name = nameJson as String;
     final valueRangeJson = json['valueRange'];
     final valueRange = valueRangeJson != null
         ? Range.fromJson(valueRangeJson as Map<String, Object?>)
         : null;
     return FlutterOutlineAttribute(
-      name: name,
       label: label,
+      name: name,
       valueRange: valueRange,
     );
   }
@@ -1001,8 +1001,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['name'] = name;
     __result['label'] = label;
+    __result['name'] = name;
     if (valueRange != null) {
       __result['valueRange'] = valueRange?.toJson();
     }
@@ -1011,24 +1011,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('name');
-      try {
-        if (!obj.containsKey('name')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final name = obj['name'];
-        if (name == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(name is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('label');
       try {
         if (!obj.containsKey('label')) {
@@ -1047,6 +1029,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('name');
+      try {
+        if (!obj.containsKey('name')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final name = obj['name'];
+        if (name == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(name is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('valueRange');
       try {
         final valueRange = obj['valueRange'];
@@ -1068,8 +1068,8 @@
   bool operator ==(Object other) {
     if (other is FlutterOutlineAttribute &&
         other.runtimeType == FlutterOutlineAttribute) {
-      return name == other.name &&
-          label == other.label &&
+      return label == other.label &&
+          name == other.name &&
           valueRange == other.valueRange &&
           true;
     }
@@ -1078,8 +1078,8 @@
 
   @override
   int get hashCode => Object.hash(
-        name,
         label,
+        name,
         valueRange,
       );
 
@@ -1094,27 +1094,27 @@
   );
 
   Outline({
+    this.children,
+    required this.codeRange,
     required this.element,
     required this.range,
-    required this.codeRange,
-    this.children,
   });
   static Outline fromJson(Map<String, Object?> json) {
-    final elementJson = json['element'];
-    final element = Element.fromJson(elementJson as Map<String, Object?>);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
-    final codeRangeJson = json['codeRange'];
-    final codeRange = Range.fromJson(codeRangeJson as Map<String, Object?>);
     final childrenJson = json['children'];
     final children = (childrenJson as List<Object?>?)
         ?.map((item) => Outline.fromJson(item as Map<String, Object?>))
         .toList();
+    final codeRangeJson = json['codeRange'];
+    final codeRange = Range.fromJson(codeRangeJson as Map<String, Object?>);
+    final elementJson = json['element'];
+    final element = Element.fromJson(elementJson as Map<String, Object?>);
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return Outline(
+      children: children,
+      codeRange: codeRange,
       element: element,
       range: range,
-      codeRange: codeRange,
-      children: children,
     );
   }
 
@@ -1125,17 +1125,48 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['element'] = element.toJson();
-    __result['range'] = range.toJson();
-    __result['codeRange'] = codeRange.toJson();
     if (children != null) {
       __result['children'] = children?.map((item) => item.toJson()).toList();
     }
+    __result['codeRange'] = codeRange.toJson();
+    __result['element'] = element.toJson();
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('children');
+      try {
+        final children = obj['children'];
+        if (children != null &&
+            !((children is List<Object?> &&
+                (children
+                    .every((item) => Outline.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<Outline>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('codeRange');
+      try {
+        if (!obj.containsKey('codeRange')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final codeRange = obj['codeRange'];
+        if (codeRange == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(codeRange, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('element');
       try {
         if (!obj.containsKey('element')) {
@@ -1172,37 +1203,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('codeRange');
-      try {
-        if (!obj.containsKey('codeRange')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final codeRange = obj['codeRange'];
-        if (codeRange == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(codeRange, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('children');
-      try {
-        final children = obj['children'];
-        if (children != null &&
-            !((children is List<Object?> &&
-                (children
-                    .every((item) => Outline.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<Outline>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type Outline');
@@ -1213,11 +1213,11 @@
   @override
   bool operator ==(Object other) {
     if (other is Outline && other.runtimeType == Outline) {
-      return element == other.element &&
-          range == other.range &&
-          codeRange == other.codeRange &&
-          listEqual(
+      return listEqual(
               children, other.children, (Outline a, Outline b) => a == b) &&
+          codeRange == other.codeRange &&
+          element == other.element &&
+          range == other.range &&
           true;
     }
     return false;
@@ -1225,10 +1225,10 @@
 
   @override
   int get hashCode => Object.hash(
+        lspHashCode(children),
+        codeRange,
         element,
         range,
-        codeRange,
-        lspHashCode(children),
       );
 
   @override
@@ -1313,19 +1313,19 @@
   );
 
   PublishClosingLabelsParams({
-    required this.uri,
     required this.labels,
+    required this.uri,
   });
   static PublishClosingLabelsParams fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final labelsJson = json['labels'];
     final labels = (labelsJson as List<Object?>)
         .map((item) => ClosingLabel.fromJson(item as Map<String, Object?>))
         .toList();
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return PublishClosingLabelsParams(
-      uri: uri,
       labels: labels,
+      uri: uri,
     );
   }
 
@@ -1334,31 +1334,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
     __result['labels'] = labels.map((item) => item.toJson()).toList();
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final uri = obj['uri'];
-        if (uri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('labels');
       try {
         if (!obj.containsKey('labels')) {
@@ -1378,69 +1360,6 @@
       } finally {
         reporter.pop();
       }
-      return true;
-    } else {
-      reporter.reportError('must be of type PublishClosingLabelsParams');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is PublishClosingLabelsParams &&
-        other.runtimeType == PublishClosingLabelsParams) {
-      return uri == other.uri &&
-          listEqual(labels, other.labels,
-              (ClosingLabel a, ClosingLabel b) => a == b) &&
-          true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => Object.hash(
-        uri,
-        lspHashCode(labels),
-      );
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
-class PublishFlutterOutlineParams implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    PublishFlutterOutlineParams.canParse,
-    PublishFlutterOutlineParams.fromJson,
-  );
-
-  PublishFlutterOutlineParams({
-    required this.uri,
-    required this.outline,
-  });
-  static PublishFlutterOutlineParams fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
-    final outlineJson = json['outline'];
-    final outline =
-        FlutterOutline.fromJson(outlineJson as Map<String, Object?>);
-    return PublishFlutterOutlineParams(
-      uri: uri,
-      outline: outline,
-    );
-  }
-
-  final FlutterOutline outline;
-  final String uri;
-
-  Map<String, Object?> toJson() {
-    var __result = <String, Object?>{};
-    __result['uri'] = uri;
-    __result['outline'] = outline.toJson();
-    return __result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -1459,6 +1378,69 @@
       } finally {
         reporter.pop();
       }
+      return true;
+    } else {
+      reporter.reportError('must be of type PublishClosingLabelsParams');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is PublishClosingLabelsParams &&
+        other.runtimeType == PublishClosingLabelsParams) {
+      return listEqual(labels, other.labels,
+              (ClosingLabel a, ClosingLabel b) => a == b) &&
+          uri == other.uri &&
+          true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => Object.hash(
+        lspHashCode(labels),
+        uri,
+      );
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
+class PublishFlutterOutlineParams implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    PublishFlutterOutlineParams.canParse,
+    PublishFlutterOutlineParams.fromJson,
+  );
+
+  PublishFlutterOutlineParams({
+    required this.outline,
+    required this.uri,
+  });
+  static PublishFlutterOutlineParams fromJson(Map<String, Object?> json) {
+    final outlineJson = json['outline'];
+    final outline =
+        FlutterOutline.fromJson(outlineJson as Map<String, Object?>);
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
+    return PublishFlutterOutlineParams(
+      outline: outline,
+      uri: uri,
+    );
+  }
+
+  final FlutterOutline outline;
+  final String uri;
+
+  Map<String, Object?> toJson() {
+    var __result = <String, Object?>{};
+    __result['outline'] = outline.toJson();
+    __result['uri'] = uri;
+    return __result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
       reporter.push('outline');
       try {
         if (!obj.containsKey('outline')) {
@@ -1477,65 +1459,6 @@
       } finally {
         reporter.pop();
       }
-      return true;
-    } else {
-      reporter.reportError('must be of type PublishFlutterOutlineParams');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is PublishFlutterOutlineParams &&
-        other.runtimeType == PublishFlutterOutlineParams) {
-      return uri == other.uri && outline == other.outline && true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => Object.hash(
-        uri,
-        outline,
-      );
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
-class PublishOutlineParams implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    PublishOutlineParams.canParse,
-    PublishOutlineParams.fromJson,
-  );
-
-  PublishOutlineParams({
-    required this.uri,
-    required this.outline,
-  });
-  static PublishOutlineParams fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
-    final outlineJson = json['outline'];
-    final outline = Outline.fromJson(outlineJson as Map<String, Object?>);
-    return PublishOutlineParams(
-      uri: uri,
-      outline: outline,
-    );
-  }
-
-  final Outline outline;
-  final String uri;
-
-  Map<String, Object?> toJson() {
-    var __result = <String, Object?>{};
-    __result['uri'] = uri;
-    __result['outline'] = outline.toJson();
-    return __result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -1554,6 +1477,65 @@
       } finally {
         reporter.pop();
       }
+      return true;
+    } else {
+      reporter.reportError('must be of type PublishFlutterOutlineParams');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is PublishFlutterOutlineParams &&
+        other.runtimeType == PublishFlutterOutlineParams) {
+      return outline == other.outline && uri == other.uri && true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => Object.hash(
+        outline,
+        uri,
+      );
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
+class PublishOutlineParams implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    PublishOutlineParams.canParse,
+    PublishOutlineParams.fromJson,
+  );
+
+  PublishOutlineParams({
+    required this.outline,
+    required this.uri,
+  });
+  static PublishOutlineParams fromJson(Map<String, Object?> json) {
+    final outlineJson = json['outline'];
+    final outline = Outline.fromJson(outlineJson as Map<String, Object?>);
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
+    return PublishOutlineParams(
+      outline: outline,
+      uri: uri,
+    );
+  }
+
+  final Outline outline;
+  final String uri;
+
+  Map<String, Object?> toJson() {
+    var __result = <String, Object?>{};
+    __result['outline'] = outline.toJson();
+    __result['uri'] = uri;
+    return __result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
       reporter.push('outline');
       try {
         if (!obj.containsKey('outline')) {
@@ -1572,6 +1554,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type PublishOutlineParams');
@@ -1583,15 +1583,15 @@
   bool operator ==(Object other) {
     if (other is PublishOutlineParams &&
         other.runtimeType == PublishOutlineParams) {
-      return uri == other.uri && outline == other.outline && true;
+      return outline == other.outline && uri == other.uri && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        uri,
         outline,
+        uri,
       );
 
   @override
@@ -1606,21 +1606,21 @@
 
   SnippetTextEdit({
     required this.insertTextFormat,
-    required this.range,
     required this.newText,
+    required this.range,
   });
   static SnippetTextEdit fromJson(Map<String, Object?> json) {
     final insertTextFormatJson = json['insertTextFormat'];
     final insertTextFormat =
         InsertTextFormat.fromJson(insertTextFormatJson as int);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final newTextJson = json['newText'];
     final newText = newTextJson as String;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return SnippetTextEdit(
       insertTextFormat: insertTextFormat,
-      range: range,
       newText: newText,
+      range: range,
     );
   }
 
@@ -1636,8 +1636,8 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['insertTextFormat'] = insertTextFormat.toJson();
-    __result['range'] = range.toJson();
     __result['newText'] = newText;
+    __result['range'] = range.toJson();
     return __result;
   }
 
@@ -1661,24 +1661,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('range');
-      try {
-        if (!obj.containsKey('range')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final range = obj['range'];
-        if (range == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(range, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('newText');
       try {
         if (!obj.containsKey('newText')) {
@@ -1697,6 +1679,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('range');
+      try {
+        if (!obj.containsKey('range')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final range = obj['range'];
+        if (range == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(range, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type SnippetTextEdit');
@@ -1708,8 +1708,8 @@
   bool operator ==(Object other) {
     if (other is SnippetTextEdit && other.runtimeType == SnippetTextEdit) {
       return insertTextFormat == other.insertTextFormat &&
-          range == other.range &&
           newText == other.newText &&
+          range == other.range &&
           true;
     }
     return false;
@@ -1718,8 +1718,8 @@
   @override
   int get hashCode => Object.hash(
         insertTextFormat,
-        range,
         newText,
+        range,
       );
 
   @override
@@ -1733,17 +1733,17 @@
   );
 
   ValidateRefactorResult({
-    required this.valid,
     this.message,
+    required this.valid,
   });
   static ValidateRefactorResult fromJson(Map<String, Object?> json) {
-    final validJson = json['valid'];
-    final valid = validJson as bool;
     final messageJson = json['message'];
     final message = messageJson as String?;
+    final validJson = json['valid'];
+    final valid = validJson as bool;
     return ValidateRefactorResult(
-      valid: valid,
       message: message,
+      valid: valid,
     );
   }
 
@@ -1752,15 +1752,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['valid'] = valid;
     if (message != null) {
       __result['message'] = message;
     }
+    __result['valid'] = valid;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('message');
+      try {
+        final message = obj['message'];
+        if (message != null && !(message is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('valid');
       try {
         if (!obj.containsKey('valid')) {
@@ -1779,16 +1789,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('message');
-      try {
-        final message = obj['message'];
-        if (message != null && !(message is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ValidateRefactorResult');
@@ -1800,15 +1800,15 @@
   bool operator ==(Object other) {
     if (other is ValidateRefactorResult &&
         other.runtimeType == ValidateRefactorResult) {
-      return valid == other.valid && message == other.message && true;
+      return message == other.message && valid == other.valid && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        valid,
         message,
+        valid,
       );
 
   @override
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
index 0eb4484..699d04e 100644
--- a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
@@ -31,20 +31,20 @@
 
   AnnotatedTextEdit({
     required this.annotationId,
-    required this.range,
     required this.newText,
+    required this.range,
   });
   static AnnotatedTextEdit fromJson(Map<String, Object?> json) {
     final annotationIdJson = json['annotationId'];
     final annotationId = annotationIdJson as String;
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final newTextJson = json['newText'];
     final newText = newTextJson as String;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return AnnotatedTextEdit(
       annotationId: annotationId,
-      range: range,
       newText: newText,
+      range: range,
     );
   }
 
@@ -61,8 +61,8 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['annotationId'] = annotationId;
-    __result['range'] = range.toJson();
     __result['newText'] = newText;
+    __result['range'] = range.toJson();
     return __result;
   }
 
@@ -86,6 +86,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('newText');
+      try {
+        if (!obj.containsKey('newText')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final newText = obj['newText'];
+        if (newText == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(newText is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -104,24 +122,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('newText');
-      try {
-        if (!obj.containsKey('newText')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final newText = obj['newText'];
-        if (newText == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(newText is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type AnnotatedTextEdit');
@@ -133,8 +133,8 @@
   bool operator ==(Object other) {
     if (other is AnnotatedTextEdit && other.runtimeType == AnnotatedTextEdit) {
       return annotationId == other.annotationId &&
-          range == other.range &&
           newText == other.newText &&
+          range == other.range &&
           true;
     }
     return false;
@@ -143,8 +143,8 @@
   @override
   int get hashCode => Object.hash(
         annotationId,
-        range,
         newText,
+        range,
       );
 
   @override
@@ -158,17 +158,17 @@
   );
 
   ApplyWorkspaceEditParams({
-    this.label,
     required this.edit,
+    this.label,
   });
   static ApplyWorkspaceEditParams fromJson(Map<String, Object?> json) {
-    final labelJson = json['label'];
-    final label = labelJson as String?;
     final editJson = json['edit'];
     final edit = WorkspaceEdit.fromJson(editJson as Map<String, Object?>);
+    final labelJson = json['label'];
+    final label = labelJson as String?;
     return ApplyWorkspaceEditParams(
-      label: label,
       edit: edit,
+      label: label,
     );
   }
 
@@ -181,25 +181,15 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['edit'] = edit.toJson();
     if (label != null) {
       __result['label'] = label;
     }
-    __result['edit'] = edit.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('label');
-      try {
-        final label = obj['label'];
-        if (label != null && !(label is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('edit');
       try {
         if (!obj.containsKey('edit')) {
@@ -218,6 +208,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('label');
+      try {
+        final label = obj['label'];
+        if (label != null && !(label is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ApplyWorkspaceEditParams');
@@ -229,15 +229,15 @@
   bool operator ==(Object other) {
     if (other is ApplyWorkspaceEditParams &&
         other.runtimeType == ApplyWorkspaceEditParams) {
-      return label == other.label && edit == other.edit && true;
+      return edit == other.edit && label == other.label && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        label,
         edit,
+        label,
       );
 
   @override
@@ -252,20 +252,20 @@
 
   ApplyWorkspaceEditResult({
     required this.applied,
-    this.failureReason,
     this.failedChange,
+    this.failureReason,
   });
   static ApplyWorkspaceEditResult fromJson(Map<String, Object?> json) {
     final appliedJson = json['applied'];
     final applied = appliedJson as bool;
-    final failureReasonJson = json['failureReason'];
-    final failureReason = failureReasonJson as String?;
     final failedChangeJson = json['failedChange'];
     final failedChange = failedChangeJson as int?;
+    final failureReasonJson = json['failureReason'];
+    final failureReason = failureReasonJson as String?;
     return ApplyWorkspaceEditResult(
       applied: applied,
-      failureReason: failureReason,
       failedChange: failedChange,
+      failureReason: failureReason,
     );
   }
 
@@ -286,12 +286,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['applied'] = applied;
-    if (failureReason != null) {
-      __result['failureReason'] = failureReason;
-    }
     if (failedChange != null) {
       __result['failedChange'] = failedChange;
     }
+    if (failureReason != null) {
+      __result['failureReason'] = failureReason;
+    }
     return __result;
   }
 
@@ -315,16 +315,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('failureReason');
-      try {
-        final failureReason = obj['failureReason'];
-        if (failureReason != null && !(failureReason is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('failedChange');
       try {
         final failedChange = obj['failedChange'];
@@ -335,6 +325,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('failureReason');
+      try {
+        final failureReason = obj['failureReason'];
+        if (failureReason != null && !(failureReason is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ApplyWorkspaceEditResult');
@@ -347,8 +347,8 @@
     if (other is ApplyWorkspaceEditResult &&
         other.runtimeType == ApplyWorkspaceEditResult) {
       return applied == other.applied &&
-          failureReason == other.failureReason &&
           failedChange == other.failedChange &&
+          failureReason == other.failureReason &&
           true;
     }
     return false;
@@ -357,8 +357,8 @@
   @override
   int get hashCode => Object.hash(
         applied,
-        failureReason,
         failedChange,
+        failureReason,
       );
 
   @override
@@ -545,20 +545,12 @@
 
   CallHierarchyIncomingCallsParams({
     required this.item,
-    this.workDoneToken,
     this.partialResultToken,
+    this.workDoneToken,
   });
   static CallHierarchyIncomingCallsParams fromJson(Map<String, Object?> json) {
     final itemJson = json['item'];
     final item = CallHierarchyItem.fromJson(itemJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -567,10 +559,18 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return CallHierarchyIncomingCallsParams(
       item: item,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -586,12 +586,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['item'] = item.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
@@ -615,22 +615,22 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('partialResultToken');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -649,8 +649,8 @@
     if (other is CallHierarchyIncomingCallsParams &&
         other.runtimeType == CallHierarchyIncomingCallsParams) {
       return item == other.item &&
-          workDoneToken == other.workDoneToken &&
           partialResultToken == other.partialResultToken &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -659,8 +659,8 @@
   @override
   int get hashCode => Object.hash(
         item,
-        workDoneToken,
         partialResultToken,
+        workDoneToken,
       );
 
   @override
@@ -674,44 +674,44 @@
   );
 
   CallHierarchyItem({
-    required this.name,
-    required this.kind,
-    this.tags,
+    this.data,
     this.detail,
-    required this.uri,
+    required this.kind,
+    required this.name,
     required this.range,
     required this.selectionRange,
-    this.data,
+    this.tags,
+    required this.uri,
   });
   static CallHierarchyItem fromJson(Map<String, Object?> json) {
-    final nameJson = json['name'];
-    final name = nameJson as String;
-    final kindJson = json['kind'];
-    final kind = SymbolKind.fromJson(kindJson as int);
-    final tagsJson = json['tags'];
-    final tags = (tagsJson as List<Object?>?)
-        ?.map((item) => SymbolTag.fromJson(item as int))
-        .toList();
+    final dataJson = json['data'];
+    final data = dataJson;
     final detailJson = json['detail'];
     final detail = detailJson as String?;
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
+    final kindJson = json['kind'];
+    final kind = SymbolKind.fromJson(kindJson as int);
+    final nameJson = json['name'];
+    final name = nameJson as String;
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final selectionRangeJson = json['selectionRange'];
     final selectionRange =
         Range.fromJson(selectionRangeJson as Map<String, Object?>);
-    final dataJson = json['data'];
-    final data = dataJson;
+    final tagsJson = json['tags'];
+    final tags = (tagsJson as List<Object?>?)
+        ?.map((item) => SymbolTag.fromJson(item as int))
+        .toList();
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return CallHierarchyItem(
-      name: name,
-      kind: kind,
-      tags: tags,
+      data: data,
       detail: detail,
-      uri: uri,
+      kind: kind,
+      name: name,
       range: range,
       selectionRange: selectionRange,
-      data: data,
+      tags: tags,
+      uri: uri,
     );
   }
 
@@ -745,37 +745,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['name'] = name;
-    __result['kind'] = kind.toJson();
-    if (tags != null) {
-      __result['tags'] = tags?.map((item) => item.toJson()).toList();
+    if (data != null) {
+      __result['data'] = data;
     }
     if (detail != null) {
       __result['detail'] = detail;
     }
-    __result['uri'] = uri;
+    __result['kind'] = kind.toJson();
+    __result['name'] = name;
     __result['range'] = range.toJson();
     __result['selectionRange'] = selectionRange.toJson();
-    if (data != null) {
-      __result['data'] = data;
+    if (tags != null) {
+      __result['tags'] = tags?.map((item) => item.toJson()).toList();
     }
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('name');
+      reporter.push('detail');
       try {
-        if (!obj.containsKey('name')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final name = obj['name'];
-        if (name == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(name is String)) {
+        final detail = obj['detail'];
+        if (detail != null && !(detail is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -800,40 +792,18 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tags');
+      reporter.push('name');
       try {
-        final tags = obj['tags'];
-        if (tags != null &&
-            !((tags is List<Object?> &&
-                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<SymbolTag>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('detail');
-      try {
-        final detail = obj['detail'];
-        if (detail != null && !(detail is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
+        if (!obj.containsKey('name')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final uri = obj['uri'];
-        if (uri == null) {
+        final name = obj['name'];
+        if (name == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(uri is String)) {
+        if (!(name is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -876,6 +846,36 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('tags');
+      try {
+        final tags = obj['tags'];
+        if (tags != null &&
+            !((tags is List<Object?> &&
+                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<SymbolTag>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type CallHierarchyItem');
@@ -886,14 +886,14 @@
   @override
   bool operator ==(Object other) {
     if (other is CallHierarchyItem && other.runtimeType == CallHierarchyItem) {
-      return name == other.name &&
-          kind == other.kind &&
-          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
+      return data == other.data &&
           detail == other.detail &&
-          uri == other.uri &&
+          kind == other.kind &&
+          name == other.name &&
           range == other.range &&
           selectionRange == other.selectionRange &&
-          data == other.data &&
+          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
+          uri == other.uri &&
           true;
     }
     return false;
@@ -901,14 +901,14 @@
 
   @override
   int get hashCode => Object.hash(
-        name,
-        kind,
-        lspHashCode(tags),
+        data,
         detail,
-        uri,
+        kind,
+        name,
         range,
         selectionRange,
-        data,
+        lspHashCode(tags),
+        uri,
       );
 
   @override
@@ -987,19 +987,19 @@
   );
 
   CallHierarchyOutgoingCall({
-    required this.to,
     required this.fromRanges,
+    required this.to,
   });
   static CallHierarchyOutgoingCall fromJson(Map<String, Object?> json) {
-    final toJson = json['to'];
-    final to = CallHierarchyItem.fromJson(toJson as Map<String, Object?>);
     final fromRangesJson = json['fromRanges'];
     final fromRanges = (fromRangesJson as List<Object?>)
         .map((item) => Range.fromJson(item as Map<String, Object?>))
         .toList();
+    final toJson = json['to'];
+    final to = CallHierarchyItem.fromJson(toJson as Map<String, Object?>);
     return CallHierarchyOutgoingCall(
-      to: to,
       fromRanges: fromRanges,
+      to: to,
     );
   }
 
@@ -1012,31 +1012,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['to'] = to.toJson();
     __result['fromRanges'] = fromRanges.map((item) => item.toJson()).toList();
+    __result['to'] = to.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('to');
-      try {
-        if (!obj.containsKey('to')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final to = obj['to'];
-        if (to == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(CallHierarchyItem.canParse(to, reporter))) {
-          reporter.reportError('must be of type CallHierarchyItem');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('fromRanges');
       try {
         if (!obj.containsKey('fromRanges')) {
@@ -1056,6 +1038,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('to');
+      try {
+        if (!obj.containsKey('to')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final to = obj['to'];
+        if (to == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(CallHierarchyItem.canParse(to, reporter))) {
+          reporter.reportError('must be of type CallHierarchyItem');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type CallHierarchyOutgoingCall');
@@ -1067,9 +1067,9 @@
   bool operator ==(Object other) {
     if (other is CallHierarchyOutgoingCall &&
         other.runtimeType == CallHierarchyOutgoingCall) {
-      return to == other.to &&
-          listEqual(
+      return listEqual(
               fromRanges, other.fromRanges, (Range a, Range b) => a == b) &&
+          to == other.to &&
           true;
     }
     return false;
@@ -1077,8 +1077,8 @@
 
   @override
   int get hashCode => Object.hash(
-        to,
         lspHashCode(fromRanges),
+        to,
       );
 
   @override
@@ -1094,20 +1094,12 @@
 
   CallHierarchyOutgoingCallsParams({
     required this.item,
-    this.workDoneToken,
     this.partialResultToken,
+    this.workDoneToken,
   });
   static CallHierarchyOutgoingCallsParams fromJson(Map<String, Object?> json) {
     final itemJson = json['item'];
     final item = CallHierarchyItem.fromJson(itemJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -1116,10 +1108,18 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return CallHierarchyOutgoingCallsParams(
       item: item,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -1135,12 +1135,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['item'] = item.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
@@ -1164,22 +1164,22 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('partialResultToken');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -1198,8 +1198,8 @@
     if (other is CallHierarchyOutgoingCallsParams &&
         other.runtimeType == CallHierarchyOutgoingCallsParams) {
       return item == other.item &&
-          workDoneToken == other.workDoneToken &&
           partialResultToken == other.partialResultToken &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -1208,8 +1208,8 @@
   @override
   int get hashCode => Object.hash(
         item,
-        workDoneToken,
         partialResultToken,
+        workDoneToken,
       );
 
   @override
@@ -1224,16 +1224,16 @@
   );
 
   CallHierarchyPrepareParams({
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
     this.workDoneToken,
   });
   static CallHierarchyPrepareParams fromJson(Map<String, Object?> json) {
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -1243,8 +1243,8 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return CallHierarchyPrepareParams(
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -1260,8 +1260,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -1270,24 +1270,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -1306,6 +1288,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -1328,8 +1328,8 @@
   bool operator ==(Object other) {
     if (other is CallHierarchyPrepareParams &&
         other.runtimeType == CallHierarchyPrepareParams) {
-      return textDocument == other.textDocument &&
-          position == other.position &&
+      return position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -1338,8 +1338,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         position,
+        textDocument,
         workDoneToken,
       );
 
@@ -1360,28 +1360,29 @@
 
   CallHierarchyRegistrationOptions({
     this.documentSelector,
-    this.workDoneProgress,
     this.id,
+    this.workDoneProgress,
   });
   static CallHierarchyRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return CallHierarchyRegistrationOptions(
       documentSelector: documentSelector,
-      workDoneProgress: workDoneProgress,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -1391,12 +1392,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
@@ -1412,18 +1413,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -1439,6 +1430,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type CallHierarchyRegistrationOptions');
@@ -1451,9 +1452,9 @@
     if (other is CallHierarchyRegistrationOptions &&
         other.runtimeType == CallHierarchyRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          workDoneProgress == other.workDoneProgress &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -1462,8 +1463,8 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
-        workDoneProgress,
         id,
+        workDoneProgress,
       );
 
   @override
@@ -1551,21 +1552,21 @@
   );
 
   ChangeAnnotation({
+    this.description,
     required this.label,
     this.needsConfirmation,
-    this.description,
   });
   static ChangeAnnotation fromJson(Map<String, Object?> json) {
+    final descriptionJson = json['description'];
+    final description = descriptionJson as String?;
     final labelJson = json['label'];
     final label = labelJson as String;
     final needsConfirmationJson = json['needsConfirmation'];
     final needsConfirmation = needsConfirmationJson as bool?;
-    final descriptionJson = json['description'];
-    final description = descriptionJson as String?;
     return ChangeAnnotation(
+      description: description,
       label: label,
       needsConfirmation: needsConfirmation,
-      description: description,
     );
   }
 
@@ -1583,18 +1584,28 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (description != null) {
+      __result['description'] = description;
+    }
     __result['label'] = label;
     if (needsConfirmation != null) {
       __result['needsConfirmation'] = needsConfirmation;
     }
-    if (description != null) {
-      __result['description'] = description;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('description');
+      try {
+        final description = obj['description'];
+        if (description != null && !(description is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('label');
       try {
         if (!obj.containsKey('label')) {
@@ -1623,16 +1634,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('description');
-      try {
-        final description = obj['description'];
-        if (description != null && !(description is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ChangeAnnotation');
@@ -1643,9 +1644,9 @@
   @override
   bool operator ==(Object other) {
     if (other is ChangeAnnotation && other.runtimeType == ChangeAnnotation) {
-      return label == other.label &&
+      return description == other.description &&
+          label == other.label &&
           needsConfirmation == other.needsConfirmation &&
-          description == other.description &&
           true;
     }
     return false;
@@ -1653,9 +1654,9 @@
 
   @override
   int get hashCode => Object.hash(
+        description,
         label,
         needsConfirmation,
-        description,
       );
 
   @override
@@ -1669,47 +1670,47 @@
   );
 
   ClientCapabilities({
-    this.workspace,
-    this.textDocument,
-    this.notebookDocument,
-    this.window,
-    this.general,
     this.experimental,
+    this.general,
+    this.notebookDocument,
+    this.textDocument,
+    this.window,
+    this.workspace,
   });
   static ClientCapabilities fromJson(Map<String, Object?> json) {
-    final workspaceJson = json['workspace'];
-    final workspace = workspaceJson != null
-        ? ClientCapabilitiesWorkspace.fromJson(
-            workspaceJson as Map<String, Object?>)
-        : null;
-    final textDocumentJson = json['textDocument'];
-    final textDocument = textDocumentJson != null
-        ? TextDocumentClientCapabilities.fromJson(
-            textDocumentJson as Map<String, Object?>)
+    final experimentalJson = json['experimental'];
+    final experimental = experimentalJson;
+    final generalJson = json['general'];
+    final general = generalJson != null
+        ? ClientCapabilitiesGeneral.fromJson(
+            generalJson as Map<String, Object?>)
         : null;
     final notebookDocumentJson = json['notebookDocument'];
     final notebookDocument = notebookDocumentJson != null
         ? NotebookDocumentClientCapabilities.fromJson(
             notebookDocumentJson as Map<String, Object?>)
         : null;
+    final textDocumentJson = json['textDocument'];
+    final textDocument = textDocumentJson != null
+        ? TextDocumentClientCapabilities.fromJson(
+            textDocumentJson as Map<String, Object?>)
+        : null;
     final windowJson = json['window'];
     final window = windowJson != null
-        ? ClientCapabilitiesWindow.fromJson(windowJson as Map<String, Object?>)
+        ? WindowClientCapabilities.fromJson(windowJson as Map<String, Object?>)
         : null;
-    final generalJson = json['general'];
-    final general = generalJson != null
-        ? ClientCapabilitiesGeneral.fromJson(
-            generalJson as Map<String, Object?>)
+    final workspaceJson = json['workspace'];
+    final workspace = workspaceJson != null
+        ? WorkspaceClientCapabilities.fromJson(
+            workspaceJson as Map<String, Object?>)
         : null;
-    final experimentalJson = json['experimental'];
-    final experimental = experimentalJson;
     return ClientCapabilities(
-      workspace: workspace,
-      textDocument: textDocument,
-      notebookDocument: notebookDocument,
-      window: window,
-      general: general,
       experimental: experimental,
+      general: general,
+      notebookDocument: notebookDocument,
+      textDocument: textDocument,
+      window: window,
+      workspace: workspace,
     );
   }
 
@@ -1728,55 +1729,42 @@
   final TextDocumentClientCapabilities? textDocument;
 
   /// Window specific client capabilities.
-  final ClientCapabilitiesWindow? window;
+  final WindowClientCapabilities? window;
 
   /// Workspace specific client capabilities.
-  final ClientCapabilitiesWorkspace? workspace;
+  final WorkspaceClientCapabilities? workspace;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (workspace != null) {
-      __result['workspace'] = workspace?.toJson();
-    }
-    if (textDocument != null) {
-      __result['textDocument'] = textDocument?.toJson();
-    }
-    if (notebookDocument != null) {
-      __result['notebookDocument'] = notebookDocument?.toJson();
-    }
-    if (window != null) {
-      __result['window'] = window?.toJson();
+    if (experimental != null) {
+      __result['experimental'] = experimental;
     }
     if (general != null) {
       __result['general'] = general?.toJson();
     }
-    if (experimental != null) {
-      __result['experimental'] = experimental;
+    if (notebookDocument != null) {
+      __result['notebookDocument'] = notebookDocument?.toJson();
+    }
+    if (textDocument != null) {
+      __result['textDocument'] = textDocument?.toJson();
+    }
+    if (window != null) {
+      __result['window'] = window?.toJson();
+    }
+    if (workspace != null) {
+      __result['workspace'] = workspace?.toJson();
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('workspace');
+      reporter.push('general');
       try {
-        final workspace = obj['workspace'];
-        if (workspace != null &&
-            !(ClientCapabilitiesWorkspace.canParse(workspace, reporter))) {
-          reporter.reportError('must be of type ClientCapabilitiesWorkspace');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('textDocument');
-      try {
-        final textDocument = obj['textDocument'];
-        if (textDocument != null &&
-            !(TextDocumentClientCapabilities.canParse(
-                textDocument, reporter))) {
-          reporter
-              .reportError('must be of type TextDocumentClientCapabilities');
+        final general = obj['general'];
+        if (general != null &&
+            !(ClientCapabilitiesGeneral.canParse(general, reporter))) {
+          reporter.reportError('must be of type ClientCapabilitiesGeneral');
           return false;
         }
       } finally {
@@ -1795,23 +1783,36 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('window');
+      reporter.push('textDocument');
       try {
-        final window = obj['window'];
-        if (window != null &&
-            !(ClientCapabilitiesWindow.canParse(window, reporter))) {
-          reporter.reportError('must be of type ClientCapabilitiesWindow');
+        final textDocument = obj['textDocument'];
+        if (textDocument != null &&
+            !(TextDocumentClientCapabilities.canParse(
+                textDocument, reporter))) {
+          reporter
+              .reportError('must be of type TextDocumentClientCapabilities');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('general');
+      reporter.push('window');
       try {
-        final general = obj['general'];
-        if (general != null &&
-            !(ClientCapabilitiesGeneral.canParse(general, reporter))) {
-          reporter.reportError('must be of type ClientCapabilitiesGeneral');
+        final window = obj['window'];
+        if (window != null &&
+            !(WindowClientCapabilities.canParse(window, reporter))) {
+          reporter.reportError('must be of type WindowClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('workspace');
+      try {
+        final workspace = obj['workspace'];
+        if (workspace != null &&
+            !(WorkspaceClientCapabilities.canParse(workspace, reporter))) {
+          reporter.reportError('must be of type WorkspaceClientCapabilities');
           return false;
         }
       } finally {
@@ -1828,12 +1829,12 @@
   bool operator ==(Object other) {
     if (other is ClientCapabilities &&
         other.runtimeType == ClientCapabilities) {
-      return workspace == other.workspace &&
-          textDocument == other.textDocument &&
-          notebookDocument == other.notebookDocument &&
-          window == other.window &&
+      return experimental == other.experimental &&
           general == other.general &&
-          experimental == other.experimental &&
+          notebookDocument == other.notebookDocument &&
+          textDocument == other.textDocument &&
+          window == other.window &&
+          workspace == other.workspace &&
           true;
     }
     return false;
@@ -1841,12 +1842,12 @@
 
   @override
   int get hashCode => Object.hash(
-        workspace,
-        textDocument,
-        notebookDocument,
-        window,
-        general,
         experimental,
+        general,
+        notebookDocument,
+        textDocument,
+        window,
+        workspace,
       );
 
   @override
@@ -1860,37 +1861,37 @@
   );
 
   ClientCapabilitiesFileOperations({
-    this.dynamicRegistration,
     this.didCreate,
-    this.willCreate,
-    this.didRename,
-    this.willRename,
     this.didDelete,
+    this.didRename,
+    this.dynamicRegistration,
+    this.willCreate,
     this.willDelete,
+    this.willRename,
   });
   static ClientCapabilitiesFileOperations fromJson(Map<String, Object?> json) {
-    final dynamicRegistrationJson = json['dynamicRegistration'];
-    final dynamicRegistration = dynamicRegistrationJson as bool?;
     final didCreateJson = json['didCreate'];
     final didCreate = didCreateJson as bool?;
-    final willCreateJson = json['willCreate'];
-    final willCreate = willCreateJson as bool?;
-    final didRenameJson = json['didRename'];
-    final didRename = didRenameJson as bool?;
-    final willRenameJson = json['willRename'];
-    final willRename = willRenameJson as bool?;
     final didDeleteJson = json['didDelete'];
     final didDelete = didDeleteJson as bool?;
+    final didRenameJson = json['didRename'];
+    final didRename = didRenameJson as bool?;
+    final dynamicRegistrationJson = json['dynamicRegistration'];
+    final dynamicRegistration = dynamicRegistrationJson as bool?;
+    final willCreateJson = json['willCreate'];
+    final willCreate = willCreateJson as bool?;
     final willDeleteJson = json['willDelete'];
     final willDelete = willDeleteJson as bool?;
+    final willRenameJson = json['willRename'];
+    final willRename = willRenameJson as bool?;
     return ClientCapabilitiesFileOperations(
-      dynamicRegistration: dynamicRegistration,
       didCreate: didCreate,
-      willCreate: willCreate,
-      didRename: didRename,
-      willRename: willRename,
       didDelete: didDelete,
+      didRename: didRename,
+      dynamicRegistration: dynamicRegistration,
+      willCreate: willCreate,
       willDelete: willDelete,
+      willRename: willRename,
     );
   }
 
@@ -1918,42 +1919,32 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (dynamicRegistration != null) {
-      __result['dynamicRegistration'] = dynamicRegistration;
-    }
     if (didCreate != null) {
       __result['didCreate'] = didCreate;
     }
-    if (willCreate != null) {
-      __result['willCreate'] = willCreate;
-    }
-    if (didRename != null) {
-      __result['didRename'] = didRename;
-    }
-    if (willRename != null) {
-      __result['willRename'] = willRename;
-    }
     if (didDelete != null) {
       __result['didDelete'] = didDelete;
     }
+    if (didRename != null) {
+      __result['didRename'] = didRename;
+    }
+    if (dynamicRegistration != null) {
+      __result['dynamicRegistration'] = dynamicRegistration;
+    }
+    if (willCreate != null) {
+      __result['willCreate'] = willCreate;
+    }
     if (willDelete != null) {
       __result['willDelete'] = willDelete;
     }
+    if (willRename != null) {
+      __result['willRename'] = willRename;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('dynamicRegistration');
-      try {
-        final dynamicRegistration = obj['dynamicRegistration'];
-        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('didCreate');
       try {
         final didCreate = obj['didCreate'];
@@ -1964,36 +1955,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('willCreate');
-      try {
-        final willCreate = obj['willCreate'];
-        if (willCreate != null && !(willCreate is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('didRename');
-      try {
-        final didRename = obj['didRename'];
-        if (didRename != null && !(didRename is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('willRename');
-      try {
-        final willRename = obj['willRename'];
-        if (willRename != null && !(willRename is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('didDelete');
       try {
         final didDelete = obj['didDelete'];
@@ -2004,6 +1965,36 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('didRename');
+      try {
+        final didRename = obj['didRename'];
+        if (didRename != null && !(didRename is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('dynamicRegistration');
+      try {
+        final dynamicRegistration = obj['dynamicRegistration'];
+        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('willCreate');
+      try {
+        final willCreate = obj['willCreate'];
+        if (willCreate != null && !(willCreate is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('willDelete');
       try {
         final willDelete = obj['willDelete'];
@@ -2014,6 +2005,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('willRename');
+      try {
+        final willRename = obj['willRename'];
+        if (willRename != null && !(willRename is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ClientCapabilitiesFileOperations');
@@ -2025,13 +2026,13 @@
   bool operator ==(Object other) {
     if (other is ClientCapabilitiesFileOperations &&
         other.runtimeType == ClientCapabilitiesFileOperations) {
-      return dynamicRegistration == other.dynamicRegistration &&
-          didCreate == other.didCreate &&
-          willCreate == other.willCreate &&
-          didRename == other.didRename &&
-          willRename == other.willRename &&
+      return didCreate == other.didCreate &&
           didDelete == other.didDelete &&
+          didRename == other.didRename &&
+          dynamicRegistration == other.dynamicRegistration &&
+          willCreate == other.willCreate &&
           willDelete == other.willDelete &&
+          willRename == other.willRename &&
           true;
     }
     return false;
@@ -2039,13 +2040,13 @@
 
   @override
   int get hashCode => Object.hash(
-        dynamicRegistration,
         didCreate,
-        willCreate,
-        didRename,
-        willRename,
         didDelete,
+        didRename,
+        dynamicRegistration,
+        willCreate,
         willDelete,
+        willRename,
       );
 
   @override
@@ -2059,22 +2060,12 @@
   );
 
   ClientCapabilitiesGeneral({
-    this.staleRequestSupport,
-    this.regularExpressions,
     this.markdown,
     this.positionEncodings,
+    this.regularExpressions,
+    this.staleRequestSupport,
   });
   static ClientCapabilitiesGeneral fromJson(Map<String, Object?> json) {
-    final staleRequestSupportJson = json['staleRequestSupport'];
-    final staleRequestSupport = staleRequestSupportJson != null
-        ? ClientCapabilitiesStaleRequestSupport.fromJson(
-            staleRequestSupportJson as Map<String, Object?>)
-        : null;
-    final regularExpressionsJson = json['regularExpressions'];
-    final regularExpressions = regularExpressionsJson != null
-        ? RegularExpressionsClientCapabilities.fromJson(
-            regularExpressionsJson as Map<String, Object?>)
-        : null;
     final markdownJson = json['markdown'];
     final markdown = markdownJson != null
         ? MarkdownClientCapabilities.fromJson(
@@ -2084,11 +2075,21 @@
     final positionEncodings = (positionEncodingsJson as List<Object?>?)
         ?.map((item) => PositionEncodingKind.fromJson(item as String))
         .toList();
+    final regularExpressionsJson = json['regularExpressions'];
+    final regularExpressions = regularExpressionsJson != null
+        ? RegularExpressionsClientCapabilities.fromJson(
+            regularExpressionsJson as Map<String, Object?>)
+        : null;
+    final staleRequestSupportJson = json['staleRequestSupport'];
+    final staleRequestSupport = staleRequestSupportJson != null
+        ? ClientCapabilitiesStaleRequestSupport.fromJson(
+            staleRequestSupportJson as Map<String, Object?>)
+        : null;
     return ClientCapabilitiesGeneral(
-      staleRequestSupport: staleRequestSupport,
-      regularExpressions: regularExpressions,
       markdown: markdown,
       positionEncodings: positionEncodings,
+      regularExpressions: regularExpressions,
+      staleRequestSupport: staleRequestSupport,
     );
   }
 
@@ -2125,12 +2126,6 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (staleRequestSupport != null) {
-      __result['staleRequestSupport'] = staleRequestSupport?.toJson();
-    }
-    if (regularExpressions != null) {
-      __result['regularExpressions'] = regularExpressions?.toJson();
-    }
     if (markdown != null) {
       __result['markdown'] = markdown?.toJson();
     }
@@ -2138,37 +2133,17 @@
       __result['positionEncodings'] =
           positionEncodings?.map((item) => item.toJson()).toList();
     }
+    if (regularExpressions != null) {
+      __result['regularExpressions'] = regularExpressions?.toJson();
+    }
+    if (staleRequestSupport != null) {
+      __result['staleRequestSupport'] = staleRequestSupport?.toJson();
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('staleRequestSupport');
-      try {
-        final staleRequestSupport = obj['staleRequestSupport'];
-        if (staleRequestSupport != null &&
-            !(ClientCapabilitiesStaleRequestSupport.canParse(
-                staleRequestSupport, reporter))) {
-          reporter.reportError(
-              'must be of type ClientCapabilitiesStaleRequestSupport');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('regularExpressions');
-      try {
-        final regularExpressions = obj['regularExpressions'];
-        if (regularExpressions != null &&
-            !(RegularExpressionsClientCapabilities.canParse(
-                regularExpressions, reporter))) {
-          reporter.reportError(
-              'must be of type RegularExpressionsClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('markdown');
       try {
         final markdown = obj['markdown'];
@@ -2193,6 +2168,32 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('regularExpressions');
+      try {
+        final regularExpressions = obj['regularExpressions'];
+        if (regularExpressions != null &&
+            !(RegularExpressionsClientCapabilities.canParse(
+                regularExpressions, reporter))) {
+          reporter.reportError(
+              'must be of type RegularExpressionsClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('staleRequestSupport');
+      try {
+        final staleRequestSupport = obj['staleRequestSupport'];
+        if (staleRequestSupport != null &&
+            !(ClientCapabilitiesStaleRequestSupport.canParse(
+                staleRequestSupport, reporter))) {
+          reporter.reportError(
+              'must be of type ClientCapabilitiesStaleRequestSupport');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ClientCapabilitiesGeneral');
@@ -2204,11 +2205,11 @@
   bool operator ==(Object other) {
     if (other is ClientCapabilitiesGeneral &&
         other.runtimeType == ClientCapabilitiesGeneral) {
-      return staleRequestSupport == other.staleRequestSupport &&
-          regularExpressions == other.regularExpressions &&
-          markdown == other.markdown &&
+      return markdown == other.markdown &&
           listEqual(positionEncodings, other.positionEncodings,
               (PositionEncodingKind a, PositionEncodingKind b) => a == b) &&
+          regularExpressions == other.regularExpressions &&
+          staleRequestSupport == other.staleRequestSupport &&
           true;
     }
     return false;
@@ -2216,10 +2217,10 @@
 
   @override
   int get hashCode => Object.hash(
-        staleRequestSupport,
-        regularExpressions,
         markdown,
         lspHashCode(positionEncodings),
+        regularExpressions,
+        staleRequestSupport,
       );
 
   @override
@@ -2333,565 +2334,6 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class ClientCapabilitiesWindow implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    ClientCapabilitiesWindow.canParse,
-    ClientCapabilitiesWindow.fromJson,
-  );
-
-  ClientCapabilitiesWindow({
-    this.workDoneProgress,
-    this.showMessage,
-    this.showDocument,
-  });
-  static ClientCapabilitiesWindow fromJson(Map<String, Object?> json) {
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
-    final showMessageJson = json['showMessage'];
-    final showMessage = showMessageJson != null
-        ? ShowMessageRequestClientCapabilities.fromJson(
-            showMessageJson as Map<String, Object?>)
-        : null;
-    final showDocumentJson = json['showDocument'];
-    final showDocument = showDocumentJson != null
-        ? ShowDocumentClientCapabilities.fromJson(
-            showDocumentJson as Map<String, Object?>)
-        : null;
-    return ClientCapabilitiesWindow(
-      workDoneProgress: workDoneProgress,
-      showMessage: showMessage,
-      showDocument: showDocument,
-    );
-  }
-
-  /// Client capabilities for the show document request.
-  ///  @since 3.16.0
-  final ShowDocumentClientCapabilities? showDocument;
-
-  /// Capabilities specific to the showMessage request
-  ///  @since 3.16.0
-  final ShowMessageRequestClientCapabilities? showMessage;
-
-  /// It indicates whether the client supports server initiated progress using
-  /// the `window/workDoneProgress/create` request.
-  ///
-  /// The capability also controls Whether client supports handling of progress
-  /// notifications. If set servers are allowed to report a `workDoneProgress`
-  /// property in the request specific server capabilities.
-  ///  @since 3.15.0
-  final bool? workDoneProgress;
-
-  Map<String, Object?> toJson() {
-    var __result = <String, Object?>{};
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
-    if (showMessage != null) {
-      __result['showMessage'] = showMessage?.toJson();
-    }
-    if (showDocument != null) {
-      __result['showDocument'] = showDocument?.toJson();
-    }
-    return __result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('showMessage');
-      try {
-        final showMessage = obj['showMessage'];
-        if (showMessage != null &&
-            !(ShowMessageRequestClientCapabilities.canParse(
-                showMessage, reporter))) {
-          reporter.reportError(
-              'must be of type ShowMessageRequestClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('showDocument');
-      try {
-        final showDocument = obj['showDocument'];
-        if (showDocument != null &&
-            !(ShowDocumentClientCapabilities.canParse(
-                showDocument, reporter))) {
-          reporter
-              .reportError('must be of type ShowDocumentClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      return true;
-    } else {
-      reporter.reportError('must be of type ClientCapabilitiesWindow');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is ClientCapabilitiesWindow &&
-        other.runtimeType == ClientCapabilitiesWindow) {
-      return workDoneProgress == other.workDoneProgress &&
-          showMessage == other.showMessage &&
-          showDocument == other.showDocument &&
-          true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => Object.hash(
-        workDoneProgress,
-        showMessage,
-        showDocument,
-      );
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
-class ClientCapabilitiesWorkspace implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    ClientCapabilitiesWorkspace.canParse,
-    ClientCapabilitiesWorkspace.fromJson,
-  );
-
-  ClientCapabilitiesWorkspace({
-    this.applyEdit,
-    this.workspaceEdit,
-    this.didChangeConfiguration,
-    this.didChangeWatchedFiles,
-    this.symbol,
-    this.executeCommand,
-    this.workspaceFolders,
-    this.configuration,
-    this.semanticTokens,
-    this.codeLens,
-    this.fileOperations,
-    this.inlineValue,
-    this.inlayHint,
-    this.diagnostics,
-  });
-  static ClientCapabilitiesWorkspace fromJson(Map<String, Object?> json) {
-    final applyEditJson = json['applyEdit'];
-    final applyEdit = applyEditJson as bool?;
-    final workspaceEditJson = json['workspaceEdit'];
-    final workspaceEdit = workspaceEditJson != null
-        ? WorkspaceEditClientCapabilities.fromJson(
-            workspaceEditJson as Map<String, Object?>)
-        : null;
-    final didChangeConfigurationJson = json['didChangeConfiguration'];
-    final didChangeConfiguration = didChangeConfigurationJson != null
-        ? DidChangeConfigurationClientCapabilities.fromJson(
-            didChangeConfigurationJson as Map<String, Object?>)
-        : null;
-    final didChangeWatchedFilesJson = json['didChangeWatchedFiles'];
-    final didChangeWatchedFiles = didChangeWatchedFilesJson != null
-        ? DidChangeWatchedFilesClientCapabilities.fromJson(
-            didChangeWatchedFilesJson as Map<String, Object?>)
-        : null;
-    final symbolJson = json['symbol'];
-    final symbol = symbolJson != null
-        ? WorkspaceSymbolClientCapabilities.fromJson(
-            symbolJson as Map<String, Object?>)
-        : null;
-    final executeCommandJson = json['executeCommand'];
-    final executeCommand = executeCommandJson != null
-        ? ExecuteCommandClientCapabilities.fromJson(
-            executeCommandJson as Map<String, Object?>)
-        : null;
-    final workspaceFoldersJson = json['workspaceFolders'];
-    final workspaceFolders = workspaceFoldersJson as bool?;
-    final configurationJson = json['configuration'];
-    final configuration = configurationJson as bool?;
-    final semanticTokensJson = json['semanticTokens'];
-    final semanticTokens = semanticTokensJson != null
-        ? SemanticTokensWorkspaceClientCapabilities.fromJson(
-            semanticTokensJson as Map<String, Object?>)
-        : null;
-    final codeLensJson = json['codeLens'];
-    final codeLens = codeLensJson != null
-        ? CodeLensWorkspaceClientCapabilities.fromJson(
-            codeLensJson as Map<String, Object?>)
-        : null;
-    final fileOperationsJson = json['fileOperations'];
-    final fileOperations = fileOperationsJson != null
-        ? ClientCapabilitiesFileOperations.fromJson(
-            fileOperationsJson as Map<String, Object?>)
-        : null;
-    final inlineValueJson = json['inlineValue'];
-    final inlineValue = inlineValueJson != null
-        ? InlineValueWorkspaceClientCapabilities.fromJson(
-            inlineValueJson as Map<String, Object?>)
-        : null;
-    final inlayHintJson = json['inlayHint'];
-    final inlayHint = inlayHintJson != null
-        ? InlayHintWorkspaceClientCapabilities.fromJson(
-            inlayHintJson as Map<String, Object?>)
-        : null;
-    final diagnosticsJson = json['diagnostics'];
-    final diagnostics = diagnosticsJson != null
-        ? DiagnosticWorkspaceClientCapabilities.fromJson(
-            diagnosticsJson as Map<String, Object?>)
-        : null;
-    return ClientCapabilitiesWorkspace(
-      applyEdit: applyEdit,
-      workspaceEdit: workspaceEdit,
-      didChangeConfiguration: didChangeConfiguration,
-      didChangeWatchedFiles: didChangeWatchedFiles,
-      symbol: symbol,
-      executeCommand: executeCommand,
-      workspaceFolders: workspaceFolders,
-      configuration: configuration,
-      semanticTokens: semanticTokens,
-      codeLens: codeLens,
-      fileOperations: fileOperations,
-      inlineValue: inlineValue,
-      inlayHint: inlayHint,
-      diagnostics: diagnostics,
-    );
-  }
-
-  /// The client supports applying batch edits to the workspace by supporting
-  /// the request 'workspace/applyEdit'
-  final bool? applyEdit;
-
-  /// Capabilities specific to the code lens requests scoped to the workspace.
-  ///  @since 3.16.0
-  final CodeLensWorkspaceClientCapabilities? codeLens;
-
-  /// The client supports `workspace/configuration` requests.
-  ///  @since 3.6.0
-  final bool? configuration;
-
-  /// Client workspace capabilities specific to diagnostics.
-  ///  @since 3.17.0.
-  final DiagnosticWorkspaceClientCapabilities? diagnostics;
-
-  /// Capabilities specific to the `workspace/didChangeConfiguration`
-  /// notification.
-  final DidChangeConfigurationClientCapabilities? didChangeConfiguration;
-
-  /// Capabilities specific to the `workspace/didChangeWatchedFiles`
-  /// notification.
-  final DidChangeWatchedFilesClientCapabilities? didChangeWatchedFiles;
-
-  /// Capabilities specific to the `workspace/executeCommand` request.
-  final ExecuteCommandClientCapabilities? executeCommand;
-
-  /// The client has support for file requests/notifications.
-  ///  @since 3.16.0
-  final ClientCapabilitiesFileOperations? fileOperations;
-
-  /// Client workspace capabilities specific to inlay hints.
-  ///  @since 3.17.0
-  final InlayHintWorkspaceClientCapabilities? inlayHint;
-
-  /// Client workspace capabilities specific to inline values.
-  ///  @since 3.17.0
-  final InlineValueWorkspaceClientCapabilities? inlineValue;
-
-  /// Capabilities specific to the semantic token requests scoped to the
-  /// workspace.
-  ///  @since 3.16.0
-  final SemanticTokensWorkspaceClientCapabilities? semanticTokens;
-
-  /// Capabilities specific to the `workspace/symbol` request.
-  final WorkspaceSymbolClientCapabilities? symbol;
-
-  /// Capabilities specific to `WorkspaceEdit`s
-  final WorkspaceEditClientCapabilities? workspaceEdit;
-
-  /// The client has support for workspace folders.
-  ///  @since 3.6.0
-  final bool? workspaceFolders;
-
-  Map<String, Object?> toJson() {
-    var __result = <String, Object?>{};
-    if (applyEdit != null) {
-      __result['applyEdit'] = applyEdit;
-    }
-    if (workspaceEdit != null) {
-      __result['workspaceEdit'] = workspaceEdit?.toJson();
-    }
-    if (didChangeConfiguration != null) {
-      __result['didChangeConfiguration'] = didChangeConfiguration?.toJson();
-    }
-    if (didChangeWatchedFiles != null) {
-      __result['didChangeWatchedFiles'] = didChangeWatchedFiles?.toJson();
-    }
-    if (symbol != null) {
-      __result['symbol'] = symbol?.toJson();
-    }
-    if (executeCommand != null) {
-      __result['executeCommand'] = executeCommand?.toJson();
-    }
-    if (workspaceFolders != null) {
-      __result['workspaceFolders'] = workspaceFolders;
-    }
-    if (configuration != null) {
-      __result['configuration'] = configuration;
-    }
-    if (semanticTokens != null) {
-      __result['semanticTokens'] = semanticTokens?.toJson();
-    }
-    if (codeLens != null) {
-      __result['codeLens'] = codeLens?.toJson();
-    }
-    if (fileOperations != null) {
-      __result['fileOperations'] = fileOperations?.toJson();
-    }
-    if (inlineValue != null) {
-      __result['inlineValue'] = inlineValue?.toJson();
-    }
-    if (inlayHint != null) {
-      __result['inlayHint'] = inlayHint?.toJson();
-    }
-    if (diagnostics != null) {
-      __result['diagnostics'] = diagnostics?.toJson();
-    }
-    return __result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
-      reporter.push('applyEdit');
-      try {
-        final applyEdit = obj['applyEdit'];
-        if (applyEdit != null && !(applyEdit is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workspaceEdit');
-      try {
-        final workspaceEdit = obj['workspaceEdit'];
-        if (workspaceEdit != null &&
-            !(WorkspaceEditClientCapabilities.canParse(
-                workspaceEdit, reporter))) {
-          reporter
-              .reportError('must be of type WorkspaceEditClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('didChangeConfiguration');
-      try {
-        final didChangeConfiguration = obj['didChangeConfiguration'];
-        if (didChangeConfiguration != null &&
-            !(DidChangeConfigurationClientCapabilities.canParse(
-                didChangeConfiguration, reporter))) {
-          reporter.reportError(
-              'must be of type DidChangeConfigurationClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('didChangeWatchedFiles');
-      try {
-        final didChangeWatchedFiles = obj['didChangeWatchedFiles'];
-        if (didChangeWatchedFiles != null &&
-            !(DidChangeWatchedFilesClientCapabilities.canParse(
-                didChangeWatchedFiles, reporter))) {
-          reporter.reportError(
-              'must be of type DidChangeWatchedFilesClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('symbol');
-      try {
-        final symbol = obj['symbol'];
-        if (symbol != null &&
-            !(WorkspaceSymbolClientCapabilities.canParse(symbol, reporter))) {
-          reporter
-              .reportError('must be of type WorkspaceSymbolClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('executeCommand');
-      try {
-        final executeCommand = obj['executeCommand'];
-        if (executeCommand != null &&
-            !(ExecuteCommandClientCapabilities.canParse(
-                executeCommand, reporter))) {
-          reporter
-              .reportError('must be of type ExecuteCommandClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workspaceFolders');
-      try {
-        final workspaceFolders = obj['workspaceFolders'];
-        if (workspaceFolders != null && !(workspaceFolders is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('configuration');
-      try {
-        final configuration = obj['configuration'];
-        if (configuration != null && !(configuration is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('semanticTokens');
-      try {
-        final semanticTokens = obj['semanticTokens'];
-        if (semanticTokens != null &&
-            !(SemanticTokensWorkspaceClientCapabilities.canParse(
-                semanticTokens, reporter))) {
-          reporter.reportError(
-              'must be of type SemanticTokensWorkspaceClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('codeLens');
-      try {
-        final codeLens = obj['codeLens'];
-        if (codeLens != null &&
-            !(CodeLensWorkspaceClientCapabilities.canParse(
-                codeLens, reporter))) {
-          reporter.reportError(
-              'must be of type CodeLensWorkspaceClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('fileOperations');
-      try {
-        final fileOperations = obj['fileOperations'];
-        if (fileOperations != null &&
-            !(ClientCapabilitiesFileOperations.canParse(
-                fileOperations, reporter))) {
-          reporter
-              .reportError('must be of type ClientCapabilitiesFileOperations');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('inlineValue');
-      try {
-        final inlineValue = obj['inlineValue'];
-        if (inlineValue != null &&
-            !(InlineValueWorkspaceClientCapabilities.canParse(
-                inlineValue, reporter))) {
-          reporter.reportError(
-              'must be of type InlineValueWorkspaceClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('inlayHint');
-      try {
-        final inlayHint = obj['inlayHint'];
-        if (inlayHint != null &&
-            !(InlayHintWorkspaceClientCapabilities.canParse(
-                inlayHint, reporter))) {
-          reporter.reportError(
-              'must be of type InlayHintWorkspaceClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('diagnostics');
-      try {
-        final diagnostics = obj['diagnostics'];
-        if (diagnostics != null &&
-            !(DiagnosticWorkspaceClientCapabilities.canParse(
-                diagnostics, reporter))) {
-          reporter.reportError(
-              'must be of type DiagnosticWorkspaceClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      return true;
-    } else {
-      reporter.reportError('must be of type ClientCapabilitiesWorkspace');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is ClientCapabilitiesWorkspace &&
-        other.runtimeType == ClientCapabilitiesWorkspace) {
-      return applyEdit == other.applyEdit &&
-          workspaceEdit == other.workspaceEdit &&
-          didChangeConfiguration == other.didChangeConfiguration &&
-          didChangeWatchedFiles == other.didChangeWatchedFiles &&
-          symbol == other.symbol &&
-          executeCommand == other.executeCommand &&
-          workspaceFolders == other.workspaceFolders &&
-          configuration == other.configuration &&
-          semanticTokens == other.semanticTokens &&
-          codeLens == other.codeLens &&
-          fileOperations == other.fileOperations &&
-          inlineValue == other.inlineValue &&
-          inlayHint == other.inlayHint &&
-          diagnostics == other.diagnostics &&
-          true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => Object.hash(
-        applyEdit,
-        workspaceEdit,
-        didChangeConfiguration,
-        didChangeWatchedFiles,
-        symbol,
-        executeCommand,
-        workspaceFolders,
-        configuration,
-        semanticTokens,
-        codeLens,
-        fileOperations,
-        inlineValue,
-        inlayHint,
-        diagnostics,
-      );
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
 /// A code action represents a change that can be performed in code, e.g. to fix
 /// a problem or to refactor code.
 ///
@@ -2904,27 +2346,26 @@
   );
 
   CodeAction({
-    required this.title,
-    this.kind,
-    this.diagnostics,
-    this.isPreferred,
-    this.disabled,
-    this.edit,
     this.command,
     this.data,
+    this.diagnostics,
+    this.disabled,
+    this.edit,
+    this.isPreferred,
+    this.kind,
+    required this.title,
   });
   static CodeAction fromJson(Map<String, Object?> json) {
-    final titleJson = json['title'];
-    final title = titleJson as String;
-    final kindJson = json['kind'];
-    final kind =
-        kindJson != null ? CodeActionKind.fromJson(kindJson as String) : null;
+    final commandJson = json['command'];
+    final command = commandJson != null
+        ? Command.fromJson(commandJson as Map<String, Object?>)
+        : null;
+    final dataJson = json['data'];
+    final data = dataJson;
     final diagnosticsJson = json['diagnostics'];
     final diagnostics = (diagnosticsJson as List<Object?>?)
         ?.map((item) => Diagnostic.fromJson(item as Map<String, Object?>))
         .toList();
-    final isPreferredJson = json['isPreferred'];
-    final isPreferred = isPreferredJson as bool?;
     final disabledJson = json['disabled'];
     final disabled = disabledJson != null
         ? CodeActionDisabled.fromJson(disabledJson as Map<String, Object?>)
@@ -2933,21 +2374,22 @@
     final edit = editJson != null
         ? WorkspaceEdit.fromJson(editJson as Map<String, Object?>)
         : null;
-    final commandJson = json['command'];
-    final command = commandJson != null
-        ? Command.fromJson(commandJson as Map<String, Object?>)
-        : null;
-    final dataJson = json['data'];
-    final data = dataJson;
+    final isPreferredJson = json['isPreferred'];
+    final isPreferred = isPreferredJson as bool?;
+    final kindJson = json['kind'];
+    final kind =
+        kindJson != null ? CodeActionKind.fromJson(kindJson as String) : null;
+    final titleJson = json['title'];
+    final title = titleJson as String;
     return CodeAction(
-      title: title,
-      kind: kind,
-      diagnostics: diagnostics,
-      isPreferred: isPreferred,
-      disabled: disabled,
-      edit: edit,
       command: command,
       data: data,
+      diagnostics: diagnostics,
+      disabled: disabled,
+      edit: edit,
+      isPreferred: isPreferred,
+      kind: kind,
+      title: title,
     );
   }
 
@@ -3003,57 +2445,39 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['title'] = title;
-    if (kind != null) {
-      __result['kind'] = kind?.toJson();
+    if (command != null) {
+      __result['command'] = command?.toJson();
+    }
+    if (data != null) {
+      __result['data'] = data;
     }
     if (diagnostics != null) {
       __result['diagnostics'] =
           diagnostics?.map((item) => item.toJson()).toList();
     }
-    if (isPreferred != null) {
-      __result['isPreferred'] = isPreferred;
-    }
     if (disabled != null) {
       __result['disabled'] = disabled?.toJson();
     }
     if (edit != null) {
       __result['edit'] = edit?.toJson();
     }
-    if (command != null) {
-      __result['command'] = command?.toJson();
+    if (isPreferred != null) {
+      __result['isPreferred'] = isPreferred;
     }
-    if (data != null) {
-      __result['data'] = data;
+    if (kind != null) {
+      __result['kind'] = kind?.toJson();
     }
+    __result['title'] = title;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('title');
+      reporter.push('command');
       try {
-        if (!obj.containsKey('title')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final title = obj['title'];
-        if (title == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(title is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('kind');
-      try {
-        final kind = obj['kind'];
-        if (kind != null && !(CodeActionKind.canParse(kind, reporter))) {
-          reporter.reportError('must be of type CodeActionKind');
+        final command = obj['command'];
+        if (command != null && !(Command.canParse(command, reporter))) {
+          reporter.reportError('must be of type Command');
           return false;
         }
       } finally {
@@ -3072,16 +2496,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('isPreferred');
-      try {
-        final isPreferred = obj['isPreferred'];
-        if (isPreferred != null && !(isPreferred is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('disabled');
       try {
         final disabled = obj['disabled'];
@@ -3103,11 +2517,39 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('command');
+      reporter.push('isPreferred');
       try {
-        final command = obj['command'];
-        if (command != null && !(Command.canParse(command, reporter))) {
-          reporter.reportError('must be of type Command');
+        final isPreferred = obj['isPreferred'];
+        if (isPreferred != null && !(isPreferred is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('kind');
+      try {
+        final kind = obj['kind'];
+        if (kind != null && !(CodeActionKind.canParse(kind, reporter))) {
+          reporter.reportError('must be of type CodeActionKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('title');
+      try {
+        if (!obj.containsKey('title')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final title = obj['title'];
+        if (title == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(title is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -3123,15 +2565,15 @@
   @override
   bool operator ==(Object other) {
     if (other is CodeAction && other.runtimeType == CodeAction) {
-      return title == other.title &&
-          kind == other.kind &&
+      return command == other.command &&
+          data == other.data &&
           listEqual(diagnostics, other.diagnostics,
               (Diagnostic a, Diagnostic b) => a == b) &&
-          isPreferred == other.isPreferred &&
           disabled == other.disabled &&
           edit == other.edit &&
-          command == other.command &&
-          data == other.data &&
+          isPreferred == other.isPreferred &&
+          kind == other.kind &&
+          title == other.title &&
           true;
     }
     return false;
@@ -3139,14 +2581,14 @@
 
   @override
   int get hashCode => Object.hash(
-        title,
-        kind,
-        lspHashCode(diagnostics),
-        isPreferred,
-        disabled,
-        edit,
         command,
         data,
+        lspHashCode(diagnostics),
+        disabled,
+        edit,
+        isPreferred,
+        kind,
+        title,
       );
 
   @override
@@ -3160,43 +2602,43 @@
   );
 
   CodeActionClientCapabilities({
-    this.dynamicRegistration,
     this.codeActionLiteralSupport,
-    this.isPreferredSupport,
-    this.disabledSupport,
     this.dataSupport,
-    this.resolveSupport,
+    this.disabledSupport,
+    this.dynamicRegistration,
     this.honorsChangeAnnotations,
+    this.isPreferredSupport,
+    this.resolveSupport,
   });
   static CodeActionClientCapabilities fromJson(Map<String, Object?> json) {
-    final dynamicRegistrationJson = json['dynamicRegistration'];
-    final dynamicRegistration = dynamicRegistrationJson as bool?;
     final codeActionLiteralSupportJson = json['codeActionLiteralSupport'];
     final codeActionLiteralSupport = codeActionLiteralSupportJson != null
         ? CodeActionClientCapabilitiesCodeActionLiteralSupport.fromJson(
             codeActionLiteralSupportJson as Map<String, Object?>)
         : null;
-    final isPreferredSupportJson = json['isPreferredSupport'];
-    final isPreferredSupport = isPreferredSupportJson as bool?;
-    final disabledSupportJson = json['disabledSupport'];
-    final disabledSupport = disabledSupportJson as bool?;
     final dataSupportJson = json['dataSupport'];
     final dataSupport = dataSupportJson as bool?;
+    final disabledSupportJson = json['disabledSupport'];
+    final disabledSupport = disabledSupportJson as bool?;
+    final dynamicRegistrationJson = json['dynamicRegistration'];
+    final dynamicRegistration = dynamicRegistrationJson as bool?;
+    final honorsChangeAnnotationsJson = json['honorsChangeAnnotations'];
+    final honorsChangeAnnotations = honorsChangeAnnotationsJson as bool?;
+    final isPreferredSupportJson = json['isPreferredSupport'];
+    final isPreferredSupport = isPreferredSupportJson as bool?;
     final resolveSupportJson = json['resolveSupport'];
     final resolveSupport = resolveSupportJson != null
         ? CodeActionClientCapabilitiesResolveSupport.fromJson(
             resolveSupportJson as Map<String, Object?>)
         : null;
-    final honorsChangeAnnotationsJson = json['honorsChangeAnnotations'];
-    final honorsChangeAnnotations = honorsChangeAnnotationsJson as bool?;
     return CodeActionClientCapabilities(
-      dynamicRegistration: dynamicRegistration,
       codeActionLiteralSupport: codeActionLiteralSupport,
-      isPreferredSupport: isPreferredSupport,
-      disabledSupport: disabledSupport,
       dataSupport: dataSupport,
-      resolveSupport: resolveSupport,
+      disabledSupport: disabledSupport,
+      dynamicRegistration: dynamicRegistration,
       honorsChangeAnnotations: honorsChangeAnnotations,
+      isPreferredSupport: isPreferredSupport,
+      resolveSupport: resolveSupport,
     );
   }
 
@@ -3236,42 +2678,32 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (dynamicRegistration != null) {
-      __result['dynamicRegistration'] = dynamicRegistration;
-    }
     if (codeActionLiteralSupport != null) {
       __result['codeActionLiteralSupport'] = codeActionLiteralSupport?.toJson();
     }
-    if (isPreferredSupport != null) {
-      __result['isPreferredSupport'] = isPreferredSupport;
-    }
-    if (disabledSupport != null) {
-      __result['disabledSupport'] = disabledSupport;
-    }
     if (dataSupport != null) {
       __result['dataSupport'] = dataSupport;
     }
-    if (resolveSupport != null) {
-      __result['resolveSupport'] = resolveSupport?.toJson();
+    if (disabledSupport != null) {
+      __result['disabledSupport'] = disabledSupport;
+    }
+    if (dynamicRegistration != null) {
+      __result['dynamicRegistration'] = dynamicRegistration;
     }
     if (honorsChangeAnnotations != null) {
       __result['honorsChangeAnnotations'] = honorsChangeAnnotations;
     }
+    if (isPreferredSupport != null) {
+      __result['isPreferredSupport'] = isPreferredSupport;
+    }
+    if (resolveSupport != null) {
+      __result['resolveSupport'] = resolveSupport?.toJson();
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('dynamicRegistration');
-      try {
-        final dynamicRegistration = obj['dynamicRegistration'];
-        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('codeActionLiteralSupport');
       try {
         final codeActionLiteralSupport = obj['codeActionLiteralSupport'];
@@ -3285,10 +2717,10 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('isPreferredSupport');
+      reporter.push('dataSupport');
       try {
-        final isPreferredSupport = obj['isPreferredSupport'];
-        if (isPreferredSupport != null && !(isPreferredSupport is bool)) {
+        final dataSupport = obj['dataSupport'];
+        if (dataSupport != null && !(dataSupport is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
@@ -3305,10 +2737,31 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('dataSupport');
+      reporter.push('dynamicRegistration');
       try {
-        final dataSupport = obj['dataSupport'];
-        if (dataSupport != null && !(dataSupport is bool)) {
+        final dynamicRegistration = obj['dynamicRegistration'];
+        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('honorsChangeAnnotations');
+      try {
+        final honorsChangeAnnotations = obj['honorsChangeAnnotations'];
+        if (honorsChangeAnnotations != null &&
+            !(honorsChangeAnnotations is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('isPreferredSupport');
+      try {
+        final isPreferredSupport = obj['isPreferredSupport'];
+        if (isPreferredSupport != null && !(isPreferredSupport is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
@@ -3328,17 +2781,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('honorsChangeAnnotations');
-      try {
-        final honorsChangeAnnotations = obj['honorsChangeAnnotations'];
-        if (honorsChangeAnnotations != null &&
-            !(honorsChangeAnnotations is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CodeActionClientCapabilities');
@@ -3350,13 +2792,13 @@
   bool operator ==(Object other) {
     if (other is CodeActionClientCapabilities &&
         other.runtimeType == CodeActionClientCapabilities) {
-      return dynamicRegistration == other.dynamicRegistration &&
-          codeActionLiteralSupport == other.codeActionLiteralSupport &&
-          isPreferredSupport == other.isPreferredSupport &&
-          disabledSupport == other.disabledSupport &&
+      return codeActionLiteralSupport == other.codeActionLiteralSupport &&
           dataSupport == other.dataSupport &&
-          resolveSupport == other.resolveSupport &&
+          disabledSupport == other.disabledSupport &&
+          dynamicRegistration == other.dynamicRegistration &&
           honorsChangeAnnotations == other.honorsChangeAnnotations &&
+          isPreferredSupport == other.isPreferredSupport &&
+          resolveSupport == other.resolveSupport &&
           true;
     }
     return false;
@@ -3364,13 +2806,13 @@
 
   @override
   int get hashCode => Object.hash(
-        dynamicRegistration,
         codeActionLiteralSupport,
-        isPreferredSupport,
-        disabledSupport,
         dataSupport,
-        resolveSupport,
+        disabledSupport,
+        dynamicRegistration,
         honorsChangeAnnotations,
+        isPreferredSupport,
+        resolveSupport,
       );
 
   @override
@@ -4029,29 +3471,16 @@
   );
 
   CodeActionParams({
-    required this.textDocument,
-    required this.range,
     required this.context,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.range,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static CodeActionParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final contextJson = json['context'];
     final context =
         CodeActionContext.fromJson(contextJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -4060,12 +3489,25 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return CodeActionParams(
-      textDocument: textDocument,
-      range: range,
       context: context,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      range: range,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -4087,33 +3529,44 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['range'] = range.toJson();
     __result['context'] = context.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['range'] = range.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('context');
       try {
-        if (!obj.containsKey('textDocument')) {
+        if (!obj.containsKey('context')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
+        final context = obj['context'];
+        if (context == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        if (!(CodeActionContext.canParse(context, reporter))) {
+          reporter.reportError('must be of type CodeActionContext');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -4137,19 +3590,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('context');
+      reporter.push('textDocument');
       try {
-        if (!obj.containsKey('context')) {
+        if (!obj.containsKey('textDocument')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final context = obj['context'];
-        if (context == null) {
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(CodeActionContext.canParse(context, reporter))) {
-          reporter.reportError('must be of type CodeActionContext');
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
@@ -4166,17 +3619,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CodeActionParams');
@@ -4187,11 +3629,11 @@
   @override
   bool operator ==(Object other) {
     if (other is CodeActionParams && other.runtimeType == CodeActionParams) {
-      return textDocument == other.textDocument &&
-          range == other.range &&
-          context == other.context &&
-          workDoneToken == other.workDoneToken &&
+      return context == other.context &&
           partialResultToken == other.partialResultToken &&
+          range == other.range &&
+          textDocument == other.textDocument &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -4199,11 +3641,11 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        range,
         context,
-        workDoneToken,
         partialResultToken,
+        range,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -4218,27 +3660,28 @@
   );
 
   CodeActionRegistrationOptions({
-    this.documentSelector,
     this.codeActionKinds,
+    this.documentSelector,
     this.resolveProvider,
     this.workDoneProgress,
   });
   static CodeActionRegistrationOptions fromJson(Map<String, Object?> json) {
-    final documentSelectorJson = json['documentSelector'];
-    final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
-        .toList();
     final codeActionKindsJson = json['codeActionKinds'];
     final codeActionKinds = (codeActionKindsJson as List<Object?>?)
         ?.map((item) => CodeActionKind.fromJson(item as String))
         .toList();
+    final documentSelectorJson = json['documentSelector'];
+    final documentSelector = (documentSelectorJson as List<Object?>?)
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        .toList();
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CodeActionRegistrationOptions(
-      documentSelector: documentSelector,
       codeActionKinds: codeActionKinds,
+      documentSelector: documentSelector,
       resolveProvider: resolveProvider,
       workDoneProgress: workDoneProgress,
     );
@@ -4252,7 +3695,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The server provides support to resolve additional information for a code
   /// action.
@@ -4262,11 +3705,11 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['documentSelector'] = documentSelector;
     if (codeActionKinds != null) {
       __result['codeActionKinds'] =
           codeActionKinds?.map((item) => item.toJson()).toList();
     }
+    __result['documentSelector'] = documentSelector;
     if (resolveProvider != null) {
       __result['resolveProvider'] = resolveProvider;
     }
@@ -4278,6 +3721,19 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('codeActionKinds');
+      try {
+        final codeActionKinds = obj['codeActionKinds'];
+        if (codeActionKinds != null &&
+            !((codeActionKinds is List<Object?> &&
+                (codeActionKinds.every(
+                    (item) => CodeActionKind.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<CodeActionKind>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('documentSelector');
       try {
         if (!obj.containsKey('documentSelector')) {
@@ -4288,21 +3744,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('codeActionKinds');
-      try {
-        final codeActionKinds = obj['codeActionKinds'];
-        if (codeActionKinds != null &&
-            !((codeActionKinds is List<Object?> &&
-                (codeActionKinds.every(
-                    (item) => CodeActionKind.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<CodeActionKind>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -4339,10 +3782,10 @@
   bool operator ==(Object other) {
     if (other is CodeActionRegistrationOptions &&
         other.runtimeType == CodeActionRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          listEqual(codeActionKinds, other.codeActionKinds,
+      return listEqual(codeActionKinds, other.codeActionKinds,
               (CodeActionKind a, CodeActionKind b) => a == b) &&
+          listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           resolveProvider == other.resolveProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -4352,8 +3795,8 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(documentSelector),
         lspHashCode(codeActionKinds),
+        lspHashCode(documentSelector),
         resolveProvider,
         workDoneProgress,
       );
@@ -4478,23 +3921,23 @@
   );
 
   CodeLens({
-    required this.range,
     this.command,
     this.data,
+    required this.range,
   });
   static CodeLens fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final commandJson = json['command'];
     final command = commandJson != null
         ? Command.fromJson(commandJson as Map<String, Object?>)
         : null;
     final dataJson = json['data'];
     final data = dataJson;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return CodeLens(
-      range: range,
       command: command,
       data: data,
+      range: range,
     );
   }
 
@@ -4511,18 +3954,28 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     if (command != null) {
       __result['command'] = command?.toJson();
     }
     if (data != null) {
       __result['data'] = data;
     }
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('command');
+      try {
+        final command = obj['command'];
+        if (command != null && !(Command.canParse(command, reporter))) {
+          reporter.reportError('must be of type Command');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -4541,16 +3994,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('command');
-      try {
-        final command = obj['command'];
-        if (command != null && !(Command.canParse(command, reporter))) {
-          reporter.reportError('must be of type Command');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CodeLens');
@@ -4561,9 +4004,9 @@
   @override
   bool operator ==(Object other) {
     if (other is CodeLens && other.runtimeType == CodeLens) {
-      return range == other.range &&
-          command == other.command &&
+      return command == other.command &&
           data == other.data &&
+          range == other.range &&
           true;
     }
     return false;
@@ -4571,9 +4014,9 @@
 
   @override
   int get hashCode => Object.hash(
-        range,
         command,
         data,
+        range,
       );
 
   @override
@@ -4739,11 +4182,19 @@
   );
 
   CodeLensParams({
+    this.partialResultToken,
     required this.textDocument,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static CodeLensParams fromJson(Map<String, Object?> json) {
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
@@ -4755,18 +4206,10 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return CodeLensParams(
+      partialResultToken: partialResultToken,
       textDocument: textDocument,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -4782,18 +4225,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -4823,17 +4277,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CodeLensParams');
@@ -4844,9 +4287,9 @@
   @override
   bool operator ==(Object other) {
     if (other is CodeLensParams && other.runtimeType == CodeLensParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -4854,9 +4297,9 @@
 
   @override
   int get hashCode => Object.hash(
+        partialResultToken,
         textDocument,
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -4878,7 +4321,8 @@
   static CodeLensRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
@@ -4893,7 +4337,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// Code lens has a resolve provider as well.
   final bool? resolveProvider;
@@ -4923,8 +4367,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -4962,7 +4406,7 @@
     if (other is CodeLensRegistrationOptions &&
         other.runtimeType == CodeLensRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           resolveProvider == other.resolveProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -5060,25 +4504,25 @@
   );
 
   Color({
-    required this.red,
-    required this.green,
-    required this.blue,
     required this.alpha,
+    required this.blue,
+    required this.green,
+    required this.red,
   });
   static Color fromJson(Map<String, Object?> json) {
-    final redJson = json['red'];
-    final red = redJson as num;
-    final greenJson = json['green'];
-    final green = greenJson as num;
-    final blueJson = json['blue'];
-    final blue = blueJson as num;
     final alphaJson = json['alpha'];
     final alpha = alphaJson as num;
+    final blueJson = json['blue'];
+    final blue = blueJson as num;
+    final greenJson = json['green'];
+    final green = greenJson as num;
+    final redJson = json['red'];
+    final red = redJson as num;
     return Color(
-      red: red,
-      green: green,
-      blue: blue,
       alpha: alpha,
+      blue: blue,
+      green: green,
+      red: red,
     );
   }
 
@@ -5096,45 +4540,27 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['red'] = red;
-    __result['green'] = green;
-    __result['blue'] = blue;
     __result['alpha'] = alpha;
+    __result['blue'] = blue;
+    __result['green'] = green;
+    __result['red'] = red;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('red');
+      reporter.push('alpha');
       try {
-        if (!obj.containsKey('red')) {
+        if (!obj.containsKey('alpha')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final red = obj['red'];
-        if (red == null) {
+        final alpha = obj['alpha'];
+        if (alpha == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(red is num)) {
-          reporter.reportError('must be of type num');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('green');
-      try {
-        if (!obj.containsKey('green')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final green = obj['green'];
-        if (green == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(green is num)) {
+        if (!(alpha is num)) {
           reporter.reportError('must be of type num');
           return false;
         }
@@ -5159,18 +4585,36 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('alpha');
+      reporter.push('green');
       try {
-        if (!obj.containsKey('alpha')) {
+        if (!obj.containsKey('green')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final alpha = obj['alpha'];
-        if (alpha == null) {
+        final green = obj['green'];
+        if (green == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(alpha is num)) {
+        if (!(green is num)) {
+          reporter.reportError('must be of type num');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('red');
+      try {
+        if (!obj.containsKey('red')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final red = obj['red'];
+        if (red == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(red is num)) {
           reporter.reportError('must be of type num');
           return false;
         }
@@ -5187,10 +4631,10 @@
   @override
   bool operator ==(Object other) {
     if (other is Color && other.runtimeType == Color) {
-      return red == other.red &&
-          green == other.green &&
+      return alpha == other.alpha &&
           blue == other.blue &&
-          alpha == other.alpha &&
+          green == other.green &&
+          red == other.red &&
           true;
     }
     return false;
@@ -5198,10 +4642,10 @@
 
   @override
   int get hashCode => Object.hash(
-        red,
-        green,
-        blue,
         alpha,
+        blue,
+        green,
+        red,
       );
 
   @override
@@ -5215,17 +4659,17 @@
   );
 
   ColorInformation({
-    required this.range,
     required this.color,
+    required this.range,
   });
   static ColorInformation fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final colorJson = json['color'];
     final color = Color.fromJson(colorJson as Map<String, Object?>);
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return ColorInformation(
-      range: range,
       color: color,
+      range: range,
     );
   }
 
@@ -5237,31 +4681,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     __result['color'] = color.toJson();
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('range');
-      try {
-        if (!obj.containsKey('range')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final range = obj['range'];
-        if (range == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(range, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('color');
       try {
         if (!obj.containsKey('color')) {
@@ -5280,6 +4706,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('range');
+      try {
+        if (!obj.containsKey('range')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final range = obj['range'];
+        if (range == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(range, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ColorInformation');
@@ -5290,15 +4734,15 @@
   @override
   bool operator ==(Object other) {
     if (other is ColorInformation && other.runtimeType == ColorInformation) {
-      return range == other.range && color == other.color && true;
+      return color == other.color && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         color,
+        range,
       );
 
   @override
@@ -5312,25 +4756,25 @@
   );
 
   ColorPresentation({
+    this.additionalTextEdits,
     required this.label,
     this.textEdit,
-    this.additionalTextEdits,
   });
   static ColorPresentation fromJson(Map<String, Object?> json) {
+    final additionalTextEditsJson = json['additionalTextEdits'];
+    final additionalTextEdits = (additionalTextEditsJson as List<Object?>?)
+        ?.map((item) => TextEdit.fromJson(item as Map<String, Object?>))
+        .toList();
     final labelJson = json['label'];
     final label = labelJson as String;
     final textEditJson = json['textEdit'];
     final textEdit = textEditJson != null
         ? TextEdit.fromJson(textEditJson as Map<String, Object?>)
         : null;
-    final additionalTextEditsJson = json['additionalTextEdits'];
-    final additionalTextEdits = (additionalTextEditsJson as List<Object?>?)
-        ?.map((item) => TextEdit.fromJson(item as Map<String, Object?>))
-        .toList();
     return ColorPresentation(
+      additionalTextEdits: additionalTextEdits,
       label: label,
       textEdit: textEdit,
-      additionalTextEdits: additionalTextEdits,
     );
   }
 
@@ -5351,19 +4795,32 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['label'] = label;
-    if (textEdit != null) {
-      __result['textEdit'] = textEdit?.toJson();
-    }
     if (additionalTextEdits != null) {
       __result['additionalTextEdits'] =
           additionalTextEdits?.map((item) => item.toJson()).toList();
     }
+    __result['label'] = label;
+    if (textEdit != null) {
+      __result['textEdit'] = textEdit?.toJson();
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('additionalTextEdits');
+      try {
+        final additionalTextEdits = obj['additionalTextEdits'];
+        if (additionalTextEdits != null &&
+            !((additionalTextEdits is List<Object?> &&
+                (additionalTextEdits
+                    .every((item) => TextEdit.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextEdit>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('label');
       try {
         if (!obj.containsKey('label')) {
@@ -5392,19 +4849,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('additionalTextEdits');
-      try {
-        final additionalTextEdits = obj['additionalTextEdits'];
-        if (additionalTextEdits != null &&
-            !((additionalTextEdits is List<Object?> &&
-                (additionalTextEdits
-                    .every((item) => TextEdit.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<TextEdit>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ColorPresentation');
@@ -5415,10 +4859,10 @@
   @override
   bool operator ==(Object other) {
     if (other is ColorPresentation && other.runtimeType == ColorPresentation) {
-      return label == other.label &&
-          textEdit == other.textEdit &&
-          listEqual(additionalTextEdits, other.additionalTextEdits,
+      return listEqual(additionalTextEdits, other.additionalTextEdits,
               (TextEdit a, TextEdit b) => a == b) &&
+          label == other.label &&
+          textEdit == other.textEdit &&
           true;
     }
     return false;
@@ -5426,9 +4870,9 @@
 
   @override
   int get hashCode => Object.hash(
+        lspHashCode(additionalTextEdits),
         label,
         textEdit,
-        lspHashCode(additionalTextEdits),
       );
 
   @override
@@ -5443,28 +4887,15 @@
   );
 
   ColorPresentationParams({
-    required this.textDocument,
     required this.color,
-    required this.range,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.range,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static ColorPresentationParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
     final colorJson = json['color'];
     final color = Color.fromJson(colorJson as Map<String, Object?>);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -5473,12 +4904,25 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return ColorPresentationParams(
-      textDocument: textDocument,
       color: color,
-      range: range,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      range: range,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -5500,38 +4944,20 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['color'] = color.toJson();
-    __result['range'] = range.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['range'] = range.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('color');
       try {
         if (!obj.containsKey('color')) {
@@ -5550,6 +4976,17 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -5568,22 +5005,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -5601,11 +5045,11 @@
   bool operator ==(Object other) {
     if (other is ColorPresentationParams &&
         other.runtimeType == ColorPresentationParams) {
-      return textDocument == other.textDocument &&
-          color == other.color &&
-          range == other.range &&
-          workDoneToken == other.workDoneToken &&
+      return color == other.color &&
           partialResultToken == other.partialResultToken &&
+          range == other.range &&
+          textDocument == other.textDocument &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -5613,11 +5057,11 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         color,
-        range,
-        workDoneToken,
         partialResultToken,
+        range,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -5631,22 +5075,22 @@
   );
 
   Command({
-    required this.title,
-    required this.command,
     this.arguments,
+    required this.command,
+    required this.title,
   });
   static Command fromJson(Map<String, Object?> json) {
-    final titleJson = json['title'];
-    final title = titleJson as String;
-    final commandJson = json['command'];
-    final command = commandJson as String;
     final argumentsJson = json['arguments'];
     final arguments =
         (argumentsJson as List<Object?>?)?.map((item) => item).toList();
+    final commandJson = json['command'];
+    final command = commandJson as String;
+    final titleJson = json['title'];
+    final title = titleJson as String;
     return Command(
-      title: title,
-      command: command,
       arguments: arguments,
+      command: command,
+      title: title,
     );
   }
 
@@ -5661,29 +5105,23 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['title'] = title;
-    __result['command'] = command;
     if (arguments != null) {
       __result['arguments'] = arguments;
     }
+    __result['command'] = command;
+    __result['title'] = title;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('title');
+      reporter.push('arguments');
       try {
-        if (!obj.containsKey('title')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final title = obj['title'];
-        if (title == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(title is String)) {
-          reporter.reportError('must be of type String');
+        final arguments = obj['arguments'];
+        if (arguments != null &&
+            !((arguments is List<Object?> &&
+                (arguments.every((item) => true))))) {
+          reporter.reportError('must be of type List<Object?>');
           return false;
         }
       } finally {
@@ -5707,13 +5145,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('arguments');
+      reporter.push('title');
       try {
-        final arguments = obj['arguments'];
-        if (arguments != null &&
-            !((arguments is List<Object?> &&
-                (arguments.every((item) => true))))) {
-          reporter.reportError('must be of type List<Object?>');
+        if (!obj.containsKey('title')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final title = obj['title'];
+        if (title == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(title is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -5729,10 +5173,10 @@
   @override
   bool operator ==(Object other) {
     if (other is Command && other.runtimeType == Command) {
-      return title == other.title &&
-          command == other.command &&
-          listEqual(
+      return listEqual(
               arguments, other.arguments, (Object? a, Object? b) => a == b) &&
+          command == other.command &&
+          title == other.title &&
           true;
     }
     return false;
@@ -5740,9 +5184,9 @@
 
   @override
   int get hashCode => Object.hash(
-        title,
-        command,
         lspHashCode(arguments),
+        command,
+        title,
       );
 
   @override
@@ -5756,16 +5200,14 @@
   );
 
   CompletionClientCapabilities({
-    this.dynamicRegistration,
     this.completionItem,
     this.completionItemKind,
-    this.contextSupport,
-    this.insertTextMode,
     this.completionList,
+    this.contextSupport,
+    this.dynamicRegistration,
+    this.insertTextMode,
   });
   static CompletionClientCapabilities fromJson(Map<String, Object?> json) {
-    final dynamicRegistrationJson = json['dynamicRegistration'];
-    final dynamicRegistration = dynamicRegistrationJson as bool?;
     final completionItemJson = json['completionItem'];
     final completionItem = completionItemJson != null
         ? CompletionClientCapabilitiesCompletionItem.fromJson(
@@ -5776,24 +5218,26 @@
         ? CompletionClientCapabilitiesCompletionItemKind.fromJson(
             completionItemKindJson as Map<String, Object?>)
         : null;
-    final contextSupportJson = json['contextSupport'];
-    final contextSupport = contextSupportJson as bool?;
-    final insertTextModeJson = json['insertTextMode'];
-    final insertTextMode = insertTextModeJson != null
-        ? InsertTextMode.fromJson(insertTextModeJson as int)
-        : null;
     final completionListJson = json['completionList'];
     final completionList = completionListJson != null
         ? CompletionClientCapabilitiesCompletionList.fromJson(
             completionListJson as Map<String, Object?>)
         : null;
+    final contextSupportJson = json['contextSupport'];
+    final contextSupport = contextSupportJson as bool?;
+    final dynamicRegistrationJson = json['dynamicRegistration'];
+    final dynamicRegistration = dynamicRegistrationJson as bool?;
+    final insertTextModeJson = json['insertTextMode'];
+    final insertTextMode = insertTextModeJson != null
+        ? InsertTextMode.fromJson(insertTextModeJson as int)
+        : null;
     return CompletionClientCapabilities(
-      dynamicRegistration: dynamicRegistration,
       completionItem: completionItem,
       completionItemKind: completionItemKind,
-      contextSupport: contextSupport,
-      insertTextMode: insertTextMode,
       completionList: completionList,
+      contextSupport: contextSupport,
+      dynamicRegistration: dynamicRegistration,
+      insertTextMode: insertTextMode,
     );
   }
 
@@ -5819,39 +5263,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (dynamicRegistration != null) {
-      __result['dynamicRegistration'] = dynamicRegistration;
-    }
     if (completionItem != null) {
       __result['completionItem'] = completionItem?.toJson();
     }
     if (completionItemKind != null) {
       __result['completionItemKind'] = completionItemKind?.toJson();
     }
+    if (completionList != null) {
+      __result['completionList'] = completionList?.toJson();
+    }
     if (contextSupport != null) {
       __result['contextSupport'] = contextSupport;
     }
+    if (dynamicRegistration != null) {
+      __result['dynamicRegistration'] = dynamicRegistration;
+    }
     if (insertTextMode != null) {
       __result['insertTextMode'] = insertTextMode?.toJson();
     }
-    if (completionList != null) {
-      __result['completionList'] = completionList?.toJson();
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('dynamicRegistration');
-      try {
-        final dynamicRegistration = obj['dynamicRegistration'];
-        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('completionItem');
       try {
         final completionItem = obj['completionItem'];
@@ -5878,6 +5312,19 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('completionList');
+      try {
+        final completionList = obj['completionList'];
+        if (completionList != null &&
+            !(CompletionClientCapabilitiesCompletionList.canParse(
+                completionList, reporter))) {
+          reporter.reportError(
+              'must be of type CompletionClientCapabilitiesCompletionList');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('contextSupport');
       try {
         final contextSupport = obj['contextSupport'];
@@ -5888,6 +5335,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('dynamicRegistration');
+      try {
+        final dynamicRegistration = obj['dynamicRegistration'];
+        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('insertTextMode');
       try {
         final insertTextMode = obj['insertTextMode'];
@@ -5899,19 +5356,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('completionList');
-      try {
-        final completionList = obj['completionList'];
-        if (completionList != null &&
-            !(CompletionClientCapabilitiesCompletionList.canParse(
-                completionList, reporter))) {
-          reporter.reportError(
-              'must be of type CompletionClientCapabilitiesCompletionList');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CompletionClientCapabilities');
@@ -5923,12 +5367,12 @@
   bool operator ==(Object other) {
     if (other is CompletionClientCapabilities &&
         other.runtimeType == CompletionClientCapabilities) {
-      return dynamicRegistration == other.dynamicRegistration &&
-          completionItem == other.completionItem &&
+      return completionItem == other.completionItem &&
           completionItemKind == other.completionItemKind &&
-          contextSupport == other.contextSupport &&
-          insertTextMode == other.insertTextMode &&
           completionList == other.completionList &&
+          contextSupport == other.contextSupport &&
+          dynamicRegistration == other.dynamicRegistration &&
+          insertTextMode == other.insertTextMode &&
           true;
     }
     return false;
@@ -5936,12 +5380,12 @@
 
   @override
   int get hashCode => Object.hash(
-        dynamicRegistration,
         completionItem,
         completionItemKind,
-        contextSupport,
-        insertTextMode,
         completionList,
+        contextSupport,
+        dynamicRegistration,
+        insertTextMode,
       );
 
   @override
@@ -5955,43 +5399,29 @@
   );
 
   CompletionClientCapabilitiesCompletionItem({
-    this.snippetSupport,
     this.commitCharactersSupport,
-    this.documentationFormat,
     this.deprecatedSupport,
-    this.preselectSupport,
-    this.tagSupport,
+    this.documentationFormat,
     this.insertReplaceSupport,
-    this.resolveSupport,
     this.insertTextModeSupport,
     this.labelDetailsSupport,
+    this.preselectSupport,
+    this.resolveSupport,
+    this.snippetSupport,
+    this.tagSupport,
   });
   static CompletionClientCapabilitiesCompletionItem fromJson(
       Map<String, Object?> json) {
-    final snippetSupportJson = json['snippetSupport'];
-    final snippetSupport = snippetSupportJson as bool?;
     final commitCharactersSupportJson = json['commitCharactersSupport'];
     final commitCharactersSupport = commitCharactersSupportJson as bool?;
+    final deprecatedSupportJson = json['deprecatedSupport'];
+    final deprecatedSupport = deprecatedSupportJson as bool?;
     final documentationFormatJson = json['documentationFormat'];
     final documentationFormat = (documentationFormatJson as List<Object?>?)
         ?.map((item) => MarkupKind.fromJson(item as String))
         .toList();
-    final deprecatedSupportJson = json['deprecatedSupport'];
-    final deprecatedSupport = deprecatedSupportJson as bool?;
-    final preselectSupportJson = json['preselectSupport'];
-    final preselectSupport = preselectSupportJson as bool?;
-    final tagSupportJson = json['tagSupport'];
-    final tagSupport = tagSupportJson != null
-        ? CompletionClientCapabilitiesTagSupport.fromJson(
-            tagSupportJson as Map<String, Object?>)
-        : null;
     final insertReplaceSupportJson = json['insertReplaceSupport'];
     final insertReplaceSupport = insertReplaceSupportJson as bool?;
-    final resolveSupportJson = json['resolveSupport'];
-    final resolveSupport = resolveSupportJson != null
-        ? CompletionClientCapabilitiesResolveSupport.fromJson(
-            resolveSupportJson as Map<String, Object?>)
-        : null;
     final insertTextModeSupportJson = json['insertTextModeSupport'];
     final insertTextModeSupport = insertTextModeSupportJson != null
         ? CompletionClientCapabilitiesInsertTextModeSupport.fromJson(
@@ -5999,17 +5429,31 @@
         : null;
     final labelDetailsSupportJson = json['labelDetailsSupport'];
     final labelDetailsSupport = labelDetailsSupportJson as bool?;
+    final preselectSupportJson = json['preselectSupport'];
+    final preselectSupport = preselectSupportJson as bool?;
+    final resolveSupportJson = json['resolveSupport'];
+    final resolveSupport = resolveSupportJson != null
+        ? CompletionClientCapabilitiesResolveSupport.fromJson(
+            resolveSupportJson as Map<String, Object?>)
+        : null;
+    final snippetSupportJson = json['snippetSupport'];
+    final snippetSupport = snippetSupportJson as bool?;
+    final tagSupportJson = json['tagSupport'];
+    final tagSupport = tagSupportJson != null
+        ? CompletionClientCapabilitiesTagSupport.fromJson(
+            tagSupportJson as Map<String, Object?>)
+        : null;
     return CompletionClientCapabilitiesCompletionItem(
-      snippetSupport: snippetSupport,
       commitCharactersSupport: commitCharactersSupport,
-      documentationFormat: documentationFormat,
       deprecatedSupport: deprecatedSupport,
-      preselectSupport: preselectSupport,
-      tagSupport: tagSupport,
+      documentationFormat: documentationFormat,
       insertReplaceSupport: insertReplaceSupport,
-      resolveSupport: resolveSupport,
       insertTextModeSupport: insertTextModeSupport,
       labelDetailsSupport: labelDetailsSupport,
+      preselectSupport: preselectSupport,
+      resolveSupport: resolveSupport,
+      snippetSupport: snippetSupport,
+      tagSupport: tagSupport,
     );
   }
 
@@ -6066,57 +5510,57 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (snippetSupport != null) {
-      __result['snippetSupport'] = snippetSupport;
-    }
     if (commitCharactersSupport != null) {
       __result['commitCharactersSupport'] = commitCharactersSupport;
     }
+    if (deprecatedSupport != null) {
+      __result['deprecatedSupport'] = deprecatedSupport;
+    }
     if (documentationFormat != null) {
       __result['documentationFormat'] =
           documentationFormat?.map((item) => item.toJson()).toList();
     }
-    if (deprecatedSupport != null) {
-      __result['deprecatedSupport'] = deprecatedSupport;
-    }
-    if (preselectSupport != null) {
-      __result['preselectSupport'] = preselectSupport;
-    }
-    if (tagSupport != null) {
-      __result['tagSupport'] = tagSupport?.toJson();
-    }
     if (insertReplaceSupport != null) {
       __result['insertReplaceSupport'] = insertReplaceSupport;
     }
-    if (resolveSupport != null) {
-      __result['resolveSupport'] = resolveSupport?.toJson();
-    }
     if (insertTextModeSupport != null) {
       __result['insertTextModeSupport'] = insertTextModeSupport?.toJson();
     }
     if (labelDetailsSupport != null) {
       __result['labelDetailsSupport'] = labelDetailsSupport;
     }
+    if (preselectSupport != null) {
+      __result['preselectSupport'] = preselectSupport;
+    }
+    if (resolveSupport != null) {
+      __result['resolveSupport'] = resolveSupport?.toJson();
+    }
+    if (snippetSupport != null) {
+      __result['snippetSupport'] = snippetSupport;
+    }
+    if (tagSupport != null) {
+      __result['tagSupport'] = tagSupport?.toJson();
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('snippetSupport');
+      reporter.push('commitCharactersSupport');
       try {
-        final snippetSupport = obj['snippetSupport'];
-        if (snippetSupport != null && !(snippetSupport is bool)) {
+        final commitCharactersSupport = obj['commitCharactersSupport'];
+        if (commitCharactersSupport != null &&
+            !(commitCharactersSupport is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('commitCharactersSupport');
+      reporter.push('deprecatedSupport');
       try {
-        final commitCharactersSupport = obj['commitCharactersSupport'];
-        if (commitCharactersSupport != null &&
-            !(commitCharactersSupport is bool)) {
+        final deprecatedSupport = obj['deprecatedSupport'];
+        if (deprecatedSupport != null && !(deprecatedSupport is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
@@ -6136,39 +5580,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('deprecatedSupport');
-      try {
-        final deprecatedSupport = obj['deprecatedSupport'];
-        if (deprecatedSupport != null && !(deprecatedSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('preselectSupport');
-      try {
-        final preselectSupport = obj['preselectSupport'];
-        if (preselectSupport != null && !(preselectSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('tagSupport');
-      try {
-        final tagSupport = obj['tagSupport'];
-        if (tagSupport != null &&
-            !(CompletionClientCapabilitiesTagSupport.canParse(
-                tagSupport, reporter))) {
-          reporter.reportError(
-              'must be of type CompletionClientCapabilitiesTagSupport');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('insertReplaceSupport');
       try {
         final insertReplaceSupport = obj['insertReplaceSupport'];
@@ -6179,19 +5590,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('resolveSupport');
-      try {
-        final resolveSupport = obj['resolveSupport'];
-        if (resolveSupport != null &&
-            !(CompletionClientCapabilitiesResolveSupport.canParse(
-                resolveSupport, reporter))) {
-          reporter.reportError(
-              'must be of type CompletionClientCapabilitiesResolveSupport');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('insertTextModeSupport');
       try {
         final insertTextModeSupport = obj['insertTextModeSupport'];
@@ -6215,6 +5613,52 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('preselectSupport');
+      try {
+        final preselectSupport = obj['preselectSupport'];
+        if (preselectSupport != null && !(preselectSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('resolveSupport');
+      try {
+        final resolveSupport = obj['resolveSupport'];
+        if (resolveSupport != null &&
+            !(CompletionClientCapabilitiesResolveSupport.canParse(
+                resolveSupport, reporter))) {
+          reporter.reportError(
+              'must be of type CompletionClientCapabilitiesResolveSupport');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('snippetSupport');
+      try {
+        final snippetSupport = obj['snippetSupport'];
+        if (snippetSupport != null && !(snippetSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('tagSupport');
+      try {
+        final tagSupport = obj['tagSupport'];
+        if (tagSupport != null &&
+            !(CompletionClientCapabilitiesTagSupport.canParse(
+                tagSupport, reporter))) {
+          reporter.reportError(
+              'must be of type CompletionClientCapabilitiesTagSupport');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError(
@@ -6227,17 +5671,17 @@
   bool operator ==(Object other) {
     if (other is CompletionClientCapabilitiesCompletionItem &&
         other.runtimeType == CompletionClientCapabilitiesCompletionItem) {
-      return snippetSupport == other.snippetSupport &&
-          commitCharactersSupport == other.commitCharactersSupport &&
+      return commitCharactersSupport == other.commitCharactersSupport &&
+          deprecatedSupport == other.deprecatedSupport &&
           listEqual(documentationFormat, other.documentationFormat,
               (MarkupKind a, MarkupKind b) => a == b) &&
-          deprecatedSupport == other.deprecatedSupport &&
-          preselectSupport == other.preselectSupport &&
-          tagSupport == other.tagSupport &&
           insertReplaceSupport == other.insertReplaceSupport &&
-          resolveSupport == other.resolveSupport &&
           insertTextModeSupport == other.insertTextModeSupport &&
           labelDetailsSupport == other.labelDetailsSupport &&
+          preselectSupport == other.preselectSupport &&
+          resolveSupport == other.resolveSupport &&
+          snippetSupport == other.snippetSupport &&
+          tagSupport == other.tagSupport &&
           true;
     }
     return false;
@@ -6245,16 +5689,16 @@
 
   @override
   int get hashCode => Object.hash(
-        snippetSupport,
         commitCharactersSupport,
-        lspHashCode(documentationFormat),
         deprecatedSupport,
-        preselectSupport,
-        tagSupport,
+        lspHashCode(documentationFormat),
         insertReplaceSupport,
-        resolveSupport,
         insertTextModeSupport,
         labelDetailsSupport,
+        preselectSupport,
+        resolveSupport,
+        snippetSupport,
+        tagSupport,
       );
 
   @override
@@ -6654,17 +6098,17 @@
   );
 
   CompletionContext({
-    required this.triggerKind,
     this.triggerCharacter,
+    required this.triggerKind,
   });
   static CompletionContext fromJson(Map<String, Object?> json) {
-    final triggerKindJson = json['triggerKind'];
-    final triggerKind = CompletionTriggerKind.fromJson(triggerKindJson as int);
     final triggerCharacterJson = json['triggerCharacter'];
     final triggerCharacter = triggerCharacterJson as String?;
+    final triggerKindJson = json['triggerKind'];
+    final triggerKind = CompletionTriggerKind.fromJson(triggerKindJson as int);
     return CompletionContext(
-      triggerKind: triggerKind,
       triggerCharacter: triggerCharacter,
+      triggerKind: triggerKind,
     );
   }
 
@@ -6677,15 +6121,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['triggerKind'] = triggerKind.toJson();
     if (triggerCharacter != null) {
       __result['triggerCharacter'] = triggerCharacter;
     }
+    __result['triggerKind'] = triggerKind.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('triggerCharacter');
+      try {
+        final triggerCharacter = obj['triggerCharacter'];
+        if (triggerCharacter != null && !(triggerCharacter is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('triggerKind');
       try {
         if (!obj.containsKey('triggerKind')) {
@@ -6704,16 +6158,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('triggerCharacter');
-      try {
-        final triggerCharacter = obj['triggerCharacter'];
-        if (triggerCharacter != null && !(triggerCharacter is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CompletionContext');
@@ -6724,8 +6168,8 @@
   @override
   bool operator ==(Object other) {
     if (other is CompletionContext && other.runtimeType == CompletionContext) {
-      return triggerKind == other.triggerKind &&
-          triggerCharacter == other.triggerCharacter &&
+      return triggerCharacter == other.triggerCharacter &&
+          triggerKind == other.triggerKind &&
           true;
     }
     return false;
@@ -6733,8 +6177,8 @@
 
   @override
   int get hashCode => Object.hash(
-        triggerKind,
         triggerCharacter,
+        triggerKind,
       );
 
   @override
@@ -6748,58 +6192,57 @@
   );
 
   CompletionItem({
-    required this.label,
-    this.labelDetails,
-    this.kind,
-    this.tags,
+    this.additionalTextEdits,
+    this.command,
+    this.commitCharacters,
+    this.data,
+    this.deprecated,
     this.detail,
     this.documentation,
-    this.deprecated,
-    this.preselect,
-    this.sortText,
     this.filterText,
     this.insertText,
     this.insertTextFormat,
     this.insertTextMode,
+    this.kind,
+    required this.label,
+    this.labelDetails,
+    this.preselect,
+    this.sortText,
+    this.tags,
     this.textEdit,
     this.textEditText,
-    this.additionalTextEdits,
-    this.commitCharacters,
-    this.command,
-    this.data,
   });
   static CompletionItem fromJson(Map<String, Object?> json) {
-    final labelJson = json['label'];
-    final label = labelJson as String;
-    final labelDetailsJson = json['labelDetails'];
-    final labelDetails = labelDetailsJson != null
-        ? CompletionItemLabelDetails.fromJson(
-            labelDetailsJson as Map<String, Object?>)
-        : null;
-    final kindJson = json['kind'];
-    final kind =
-        kindJson != null ? CompletionItemKind.fromJson(kindJson as int) : null;
-    final tagsJson = json['tags'];
-    final tags = (tagsJson as List<Object?>?)
-        ?.map((item) => CompletionItemTag.fromJson(item as int))
+    final additionalTextEditsJson = json['additionalTextEdits'];
+    final additionalTextEdits = (additionalTextEditsJson as List<Object?>?)
+        ?.map((item) => TextEdit.fromJson(item as Map<String, Object?>))
         .toList();
+    final commandJson = json['command'];
+    final command = commandJson != null
+        ? Command.fromJson(commandJson as Map<String, Object?>)
+        : null;
+    final commitCharactersJson = json['commitCharacters'];
+    final commitCharacters = (commitCharactersJson as List<Object?>?)
+        ?.map((item) => item as String)
+        .toList();
+    final dataJson = json['data'];
+    final data = dataJson != null
+        ? CompletionItemResolutionInfo.fromJson(
+            dataJson as Map<String, Object?>)
+        : null;
+    final deprecatedJson = json['deprecated'];
+    final deprecated = deprecatedJson as bool?;
     final detailJson = json['detail'];
     final detail = detailJson as String?;
     final documentationJson = json['documentation'];
     final documentation = documentationJson == null
         ? null
-        : (documentationJson is String
-            ? Either2<String, MarkupContent>.t1(documentationJson)
-            : (MarkupContent.canParse(documentationJson, nullLspJsonReporter)
-                ? Either2<String, MarkupContent>.t2(MarkupContent.fromJson(
-                    documentationJson as Map<String, Object?>))
-                : (throw '''$documentationJson was not one of (String, MarkupContent)''')));
-    final deprecatedJson = json['deprecated'];
-    final deprecated = deprecatedJson as bool?;
-    final preselectJson = json['preselect'];
-    final preselect = preselectJson as bool?;
-    final sortTextJson = json['sortText'];
-    final sortText = sortTextJson as String?;
+        : (MarkupContent.canParse(documentationJson, nullLspJsonReporter)
+            ? Either2<MarkupContent, String>.t1(MarkupContent.fromJson(
+                documentationJson as Map<String, Object?>))
+            : (documentationJson is String
+                ? Either2<MarkupContent, String>.t2(documentationJson)
+                : (throw '''$documentationJson was not one of (MarkupContent, String)''')));
     final filterTextJson = json['filterText'];
     final filterText = filterTextJson as String?;
     final insertTextJson = json['insertText'];
@@ -6812,56 +6255,57 @@
     final insertTextMode = insertTextModeJson != null
         ? InsertTextMode.fromJson(insertTextModeJson as int)
         : null;
+    final kindJson = json['kind'];
+    final kind =
+        kindJson != null ? CompletionItemKind.fromJson(kindJson as int) : null;
+    final labelJson = json['label'];
+    final label = labelJson as String;
+    final labelDetailsJson = json['labelDetails'];
+    final labelDetails = labelDetailsJson != null
+        ? CompletionItemLabelDetails.fromJson(
+            labelDetailsJson as Map<String, Object?>)
+        : null;
+    final preselectJson = json['preselect'];
+    final preselect = preselectJson as bool?;
+    final sortTextJson = json['sortText'];
+    final sortText = sortTextJson as String?;
+    final tagsJson = json['tags'];
+    final tags = (tagsJson as List<Object?>?)
+        ?.map((item) => CompletionItemTag.fromJson(item as int))
+        .toList();
     final textEditJson = json['textEdit'];
     final textEdit = textEditJson == null
         ? null
-        : (TextEdit.canParse(textEditJson, nullLspJsonReporter)
-            ? Either2<TextEdit, InsertReplaceEdit>.t1(
-                TextEdit.fromJson(textEditJson as Map<String, Object?>))
-            : (InsertReplaceEdit.canParse(textEditJson, nullLspJsonReporter)
-                ? Either2<TextEdit, InsertReplaceEdit>.t2(
-                    InsertReplaceEdit.fromJson(
-                        textEditJson as Map<String, Object?>))
-                : (throw '''$textEditJson was not one of (TextEdit, InsertReplaceEdit)''')));
+        : (InsertReplaceEdit.canParse(textEditJson, nullLspJsonReporter)
+            ? Either2<InsertReplaceEdit, TextEdit>.t1(
+                InsertReplaceEdit.fromJson(
+                    textEditJson as Map<String, Object?>))
+            : (TextEdit.canParse(textEditJson, nullLspJsonReporter)
+                ? Either2<InsertReplaceEdit, TextEdit>.t2(
+                    TextEdit.fromJson(textEditJson as Map<String, Object?>))
+                : (throw '''$textEditJson was not one of (InsertReplaceEdit, TextEdit)''')));
     final textEditTextJson = json['textEditText'];
     final textEditText = textEditTextJson as String?;
-    final additionalTextEditsJson = json['additionalTextEdits'];
-    final additionalTextEdits = (additionalTextEditsJson as List<Object?>?)
-        ?.map((item) => TextEdit.fromJson(item as Map<String, Object?>))
-        .toList();
-    final commitCharactersJson = json['commitCharacters'];
-    final commitCharacters = (commitCharactersJson as List<Object?>?)
-        ?.map((item) => item as String)
-        .toList();
-    final commandJson = json['command'];
-    final command = commandJson != null
-        ? Command.fromJson(commandJson as Map<String, Object?>)
-        : null;
-    final dataJson = json['data'];
-    final data = dataJson != null
-        ? CompletionItemResolutionInfo.fromJson(
-            dataJson as Map<String, Object?>)
-        : null;
     return CompletionItem(
-      label: label,
-      labelDetails: labelDetails,
-      kind: kind,
-      tags: tags,
+      additionalTextEdits: additionalTextEdits,
+      command: command,
+      commitCharacters: commitCharacters,
+      data: data,
+      deprecated: deprecated,
       detail: detail,
       documentation: documentation,
-      deprecated: deprecated,
-      preselect: preselect,
-      sortText: sortText,
       filterText: filterText,
       insertText: insertText,
       insertTextFormat: insertTextFormat,
       insertTextMode: insertTextMode,
+      kind: kind,
+      label: label,
+      labelDetails: labelDetails,
+      preselect: preselect,
+      sortText: sortText,
+      tags: tags,
       textEdit: textEdit,
       textEditText: textEditText,
-      additionalTextEdits: additionalTextEdits,
-      commitCharacters: commitCharacters,
-      command: command,
-      data: data,
     );
   }
 
@@ -6898,7 +6342,7 @@
   final String? detail;
 
   /// A human-readable string that represents a doc-comment.
-  final Either2<String, MarkupContent>? documentation;
+  final Either2<MarkupContent, String>? documentation;
 
   /// A string that should be used when filtering a set of completion items.
   /// When `falsy` the label is used as the filter text for this item.
@@ -6985,7 +6429,7 @@
   /// must be a prefix of the edit's replace range, that means it must be
   /// contained and starting at the same position.
   ///  @since 3.16.0 additional type `InsertReplaceEdit`
-  final Either2<TextEdit, InsertReplaceEdit>? textEdit;
+  final Either2<InsertReplaceEdit, TextEdit>? textEdit;
 
   /// The edit text used if the completion item is part of a CompletionList and
   /// CompletionList defines an item default for the text edit range.
@@ -7000,15 +6444,21 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['label'] = label;
-    if (labelDetails != null) {
-      __result['labelDetails'] = labelDetails?.toJson();
+    if (additionalTextEdits != null) {
+      __result['additionalTextEdits'] =
+          additionalTextEdits?.map((item) => item.toJson()).toList();
     }
-    if (kind != null) {
-      __result['kind'] = kind?.toJson();
+    if (command != null) {
+      __result['command'] = command?.toJson();
     }
-    if (tags != null) {
-      __result['tags'] = tags?.map((item) => item.toJson()).toList();
+    if (commitCharacters != null) {
+      __result['commitCharacters'] = commitCharacters;
+    }
+    if (data != null) {
+      __result['data'] = data?.toJson();
+    }
+    if (deprecated != null) {
+      __result['deprecated'] = deprecated;
     }
     if (detail != null) {
       __result['detail'] = detail;
@@ -7016,15 +6466,6 @@
     if (documentation != null) {
       __result['documentation'] = documentation;
     }
-    if (deprecated != null) {
-      __result['deprecated'] = deprecated;
-    }
-    if (preselect != null) {
-      __result['preselect'] = preselect;
-    }
-    if (sortText != null) {
-      __result['sortText'] = sortText;
-    }
     if (filterText != null) {
       __result['filterText'] = filterText;
     }
@@ -7037,77 +6478,84 @@
     if (insertTextMode != null) {
       __result['insertTextMode'] = insertTextMode?.toJson();
     }
+    if (kind != null) {
+      __result['kind'] = kind?.toJson();
+    }
+    __result['label'] = label;
+    if (labelDetails != null) {
+      __result['labelDetails'] = labelDetails?.toJson();
+    }
+    if (preselect != null) {
+      __result['preselect'] = preselect;
+    }
+    if (sortText != null) {
+      __result['sortText'] = sortText;
+    }
+    if (tags != null) {
+      __result['tags'] = tags?.map((item) => item.toJson()).toList();
+    }
     if (textEdit != null) {
       __result['textEdit'] = textEdit;
     }
     if (textEditText != null) {
       __result['textEditText'] = textEditText;
     }
-    if (additionalTextEdits != null) {
-      __result['additionalTextEdits'] =
-          additionalTextEdits?.map((item) => item.toJson()).toList();
-    }
-    if (commitCharacters != null) {
-      __result['commitCharacters'] = commitCharacters;
-    }
-    if (command != null) {
-      __result['command'] = command?.toJson();
-    }
-    if (data != null) {
-      __result['data'] = data?.toJson();
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('label');
+      reporter.push('additionalTextEdits');
       try {
-        if (!obj.containsKey('label')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final label = obj['label'];
-        if (label == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(label is String)) {
-          reporter.reportError('must be of type String');
+        final additionalTextEdits = obj['additionalTextEdits'];
+        if (additionalTextEdits != null &&
+            !((additionalTextEdits is List<Object?> &&
+                (additionalTextEdits
+                    .every((item) => TextEdit.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextEdit>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('labelDetails');
+      reporter.push('command');
       try {
-        final labelDetails = obj['labelDetails'];
-        if (labelDetails != null &&
-            !(CompletionItemLabelDetails.canParse(labelDetails, reporter))) {
-          reporter.reportError('must be of type CompletionItemLabelDetails');
+        final command = obj['command'];
+        if (command != null && !(Command.canParse(command, reporter))) {
+          reporter.reportError('must be of type Command');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('kind');
+      reporter.push('commitCharacters');
       try {
-        final kind = obj['kind'];
-        if (kind != null && !(CompletionItemKind.canParse(kind, reporter))) {
-          reporter.reportError('must be of type CompletionItemKind');
+        final commitCharacters = obj['commitCharacters'];
+        if (commitCharacters != null &&
+            !((commitCharacters is List<Object?> &&
+                (commitCharacters.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('tags');
+      reporter.push('data');
       try {
-        final tags = obj['tags'];
-        if (tags != null &&
-            !((tags is List<Object?> &&
-                (tags.every(
-                    (item) => CompletionItemTag.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<CompletionItemTag>');
+        final data = obj['data'];
+        if (data != null &&
+            !(CompletionItemResolutionInfo.canParse(data, reporter))) {
+          reporter.reportError('must be of type CompletionItemResolutionInfo');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('deprecated');
+      try {
+        final deprecated = obj['deprecated'];
+        if (deprecated != null && !(deprecated is bool)) {
+          reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
@@ -7127,40 +6575,10 @@
       try {
         final documentation = obj['documentation'];
         if (documentation != null &&
-            !((documentation is String ||
-                MarkupContent.canParse(documentation, reporter)))) {
+            !((MarkupContent.canParse(documentation, reporter) ||
+                documentation is String))) {
           reporter
-              .reportError('must be of type Either2<String, MarkupContent>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('deprecated');
-      try {
-        final deprecated = obj['deprecated'];
-        if (deprecated != null && !(deprecated is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('preselect');
-      try {
-        final preselect = obj['preselect'];
-        if (preselect != null && !(preselect is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('sortText');
-      try {
-        final sortText = obj['sortText'];
-        if (sortText != null && !(sortText is String)) {
-          reporter.reportError('must be of type String');
+              .reportError('must be of type Either2<MarkupContent, String>');
           return false;
         }
       } finally {
@@ -7208,14 +6626,86 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('kind');
+      try {
+        final kind = obj['kind'];
+        if (kind != null && !(CompletionItemKind.canParse(kind, reporter))) {
+          reporter.reportError('must be of type CompletionItemKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('label');
+      try {
+        if (!obj.containsKey('label')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final label = obj['label'];
+        if (label == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(label is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('labelDetails');
+      try {
+        final labelDetails = obj['labelDetails'];
+        if (labelDetails != null &&
+            !(CompletionItemLabelDetails.canParse(labelDetails, reporter))) {
+          reporter.reportError('must be of type CompletionItemLabelDetails');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('preselect');
+      try {
+        final preselect = obj['preselect'];
+        if (preselect != null && !(preselect is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('sortText');
+      try {
+        final sortText = obj['sortText'];
+        if (sortText != null && !(sortText is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('tags');
+      try {
+        final tags = obj['tags'];
+        if (tags != null &&
+            !((tags is List<Object?> &&
+                (tags.every(
+                    (item) => CompletionItemTag.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<CompletionItemTag>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textEdit');
       try {
         final textEdit = obj['textEdit'];
         if (textEdit != null &&
-            !((TextEdit.canParse(textEdit, reporter) ||
-                InsertReplaceEdit.canParse(textEdit, reporter)))) {
+            !((InsertReplaceEdit.canParse(textEdit, reporter) ||
+                TextEdit.canParse(textEdit, reporter)))) {
           reporter.reportError(
-              'must be of type Either2<TextEdit, InsertReplaceEdit>');
+              'must be of type Either2<InsertReplaceEdit, TextEdit>');
           return false;
         }
       } finally {
@@ -7231,52 +6721,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('additionalTextEdits');
-      try {
-        final additionalTextEdits = obj['additionalTextEdits'];
-        if (additionalTextEdits != null &&
-            !((additionalTextEdits is List<Object?> &&
-                (additionalTextEdits
-                    .every((item) => TextEdit.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<TextEdit>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('commitCharacters');
-      try {
-        final commitCharacters = obj['commitCharacters'];
-        if (commitCharacters != null &&
-            !((commitCharacters is List<Object?> &&
-                (commitCharacters.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('command');
-      try {
-        final command = obj['command'];
-        if (command != null && !(Command.canParse(command, reporter))) {
-          reporter.reportError('must be of type Command');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('data');
-      try {
-        final data = obj['data'];
-        if (data != null &&
-            !(CompletionItemResolutionInfo.canParse(data, reporter))) {
-          reporter.reportError('must be of type CompletionItemResolutionInfo');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CompletionItem');
@@ -7287,28 +6731,28 @@
   @override
   bool operator ==(Object other) {
     if (other is CompletionItem && other.runtimeType == CompletionItem) {
-      return label == other.label &&
-          labelDetails == other.labelDetails &&
-          kind == other.kind &&
-          listEqual(tags, other.tags,
-              (CompletionItemTag a, CompletionItemTag b) => a == b) &&
+      return listEqual(additionalTextEdits, other.additionalTextEdits,
+              (TextEdit a, TextEdit b) => a == b) &&
+          command == other.command &&
+          listEqual(commitCharacters, other.commitCharacters,
+              (String a, String b) => a == b) &&
+          data == other.data &&
+          deprecated == other.deprecated &&
           detail == other.detail &&
           documentation == other.documentation &&
-          deprecated == other.deprecated &&
-          preselect == other.preselect &&
-          sortText == other.sortText &&
           filterText == other.filterText &&
           insertText == other.insertText &&
           insertTextFormat == other.insertTextFormat &&
           insertTextMode == other.insertTextMode &&
+          kind == other.kind &&
+          label == other.label &&
+          labelDetails == other.labelDetails &&
+          preselect == other.preselect &&
+          sortText == other.sortText &&
+          listEqual(tags, other.tags,
+              (CompletionItemTag a, CompletionItemTag b) => a == b) &&
           textEdit == other.textEdit &&
           textEditText == other.textEditText &&
-          listEqual(additionalTextEdits, other.additionalTextEdits,
-              (TextEdit a, TextEdit b) => a == b) &&
-          listEqual(commitCharacters, other.commitCharacters,
-              (String a, String b) => a == b) &&
-          command == other.command &&
-          data == other.data &&
           true;
     }
     return false;
@@ -7316,25 +6760,25 @@
 
   @override
   int get hashCode => Object.hash(
-        label,
-        labelDetails,
-        kind,
-        lspHashCode(tags),
+        lspHashCode(additionalTextEdits),
+        command,
+        lspHashCode(commitCharacters),
+        data,
+        deprecated,
         detail,
         documentation,
-        deprecated,
-        preselect,
-        sortText,
         filterText,
         insertText,
         insertTextFormat,
         insertTextMode,
+        kind,
+        label,
+        labelDetails,
+        preselect,
+        sortText,
+        lspHashCode(tags),
         textEdit,
         textEditText,
-        lspHashCode(additionalTextEdits),
-        lspHashCode(commitCharacters),
-        command,
-        data,
       );
 
   @override
@@ -7398,17 +6842,17 @@
   );
 
   CompletionItemLabelDetails({
-    this.detail,
     this.description,
+    this.detail,
   });
   static CompletionItemLabelDetails fromJson(Map<String, Object?> json) {
-    final detailJson = json['detail'];
-    final detail = detailJson as String?;
     final descriptionJson = json['description'];
     final description = descriptionJson as String?;
+    final detailJson = json['detail'];
+    final detail = detailJson as String?;
     return CompletionItemLabelDetails(
-      detail: detail,
       description: description,
+      detail: detail,
     );
   }
 
@@ -7424,31 +6868,31 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (detail != null) {
-      __result['detail'] = detail;
-    }
     if (description != null) {
       __result['description'] = description;
     }
+    if (detail != null) {
+      __result['detail'] = detail;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('detail');
+      reporter.push('description');
       try {
-        final detail = obj['detail'];
-        if (detail != null && !(detail is String)) {
+        final description = obj['description'];
+        if (description != null && !(description is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('description');
+      reporter.push('detail');
       try {
-        final description = obj['description'];
-        if (description != null && !(description is String)) {
+        final detail = obj['detail'];
+        if (detail != null && !(detail is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -7466,15 +6910,15 @@
   bool operator ==(Object other) {
     if (other is CompletionItemLabelDetails &&
         other.runtimeType == CompletionItemLabelDetails) {
-      return detail == other.detail && description == other.description && true;
+      return description == other.description && detail == other.detail && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        detail,
         description,
+        detail,
       );
 
   @override
@@ -7769,15 +7213,14 @@
     final editRangeJson = json['editRange'];
     final editRange = editRangeJson == null
         ? null
-        : (Range.canParse(editRangeJson, nullLspJsonReporter)
-            ? Either2<Range, CompletionListEditRange>.t1(
-                Range.fromJson(editRangeJson as Map<String, Object?>))
-            : (CompletionListEditRange.canParse(
-                    editRangeJson, nullLspJsonReporter)
-                ? Either2<Range, CompletionListEditRange>.t2(
-                    CompletionListEditRange.fromJson(
-                        editRangeJson as Map<String, Object?>))
-                : (throw '''$editRangeJson was not one of (Range, CompletionListEditRange)''')));
+        : (CompletionListEditRange.canParse(editRangeJson, nullLspJsonReporter)
+            ? Either2<CompletionListEditRange, Range>.t1(
+                CompletionListEditRange.fromJson(
+                    editRangeJson as Map<String, Object?>))
+            : (Range.canParse(editRangeJson, nullLspJsonReporter)
+                ? Either2<CompletionListEditRange, Range>.t2(
+                    Range.fromJson(editRangeJson as Map<String, Object?>))
+                : (throw '''$editRangeJson was not one of (CompletionListEditRange, Range)''')));
     final insertTextFormatJson = json['insertTextFormat'];
     final insertTextFormat = insertTextFormatJson != null
         ? InsertTextFormat.fromJson(insertTextFormatJson as int)
@@ -7800,7 +7243,7 @@
 
   /// A default edit range
   ///  @since 3.17.0
-  final Either2<Range, CompletionListEditRange>? editRange;
+  final Either2<CompletionListEditRange, Range>? editRange;
 
   /// A default insert text format
   ///  @since 3.17.0
@@ -7845,10 +7288,10 @@
       try {
         final editRange = obj['editRange'];
         if (editRange != null &&
-            !((Range.canParse(editRange, reporter) ||
-                CompletionListEditRange.canParse(editRange, reporter)))) {
+            !((CompletionListEditRange.canParse(editRange, reporter) ||
+                Range.canParse(editRange, reporter)))) {
           reporter.reportError(
-              'must be of type Either2<Range, CompletionListEditRange>');
+              'must be of type Either2<CompletionListEditRange, Range>');
           return false;
         }
       } finally {
@@ -7917,38 +7360,38 @@
   );
 
   CompletionOptions({
-    this.triggerCharacters,
     this.allCommitCharacters,
-    this.resolveProvider,
     this.completionItem,
+    this.resolveProvider,
+    this.triggerCharacters,
     this.workDoneProgress,
   });
   static CompletionOptions fromJson(Map<String, Object?> json) {
     if (CompletionRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return CompletionRegistrationOptions.fromJson(json);
     }
-    final triggerCharactersJson = json['triggerCharacters'];
-    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
-        ?.map((item) => item as String)
-        .toList();
     final allCommitCharactersJson = json['allCommitCharacters'];
     final allCommitCharacters = (allCommitCharactersJson as List<Object?>?)
         ?.map((item) => item as String)
         .toList();
-    final resolveProviderJson = json['resolveProvider'];
-    final resolveProvider = resolveProviderJson as bool?;
     final completionItemJson = json['completionItem'];
     final completionItem = completionItemJson != null
         ? CompletionOptionsCompletionItem.fromJson(
             completionItemJson as Map<String, Object?>)
         : null;
+    final resolveProviderJson = json['resolveProvider'];
+    final resolveProvider = resolveProviderJson as bool?;
+    final triggerCharactersJson = json['triggerCharacters'];
+    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
+        ?.map((item) => item as String)
+        .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CompletionOptions(
-      triggerCharacters: triggerCharacters,
       allCommitCharacters: allCommitCharacters,
-      resolveProvider: resolveProvider,
       completionItem: completionItem,
+      resolveProvider: resolveProvider,
+      triggerCharacters: triggerCharacters,
       workDoneProgress: workDoneProgress,
     );
   }
@@ -7986,17 +7429,17 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (triggerCharacters != null) {
-      __result['triggerCharacters'] = triggerCharacters;
-    }
     if (allCommitCharacters != null) {
       __result['allCommitCharacters'] = allCommitCharacters;
     }
+    if (completionItem != null) {
+      __result['completionItem'] = completionItem?.toJson();
+    }
     if (resolveProvider != null) {
       __result['resolveProvider'] = resolveProvider;
     }
-    if (completionItem != null) {
-      __result['completionItem'] = completionItem?.toJson();
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
     }
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
@@ -8006,18 +7449,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('triggerCharacters');
-      try {
-        final triggerCharacters = obj['triggerCharacters'];
-        if (triggerCharacters != null &&
-            !((triggerCharacters is List<Object?> &&
-                (triggerCharacters.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('allCommitCharacters');
       try {
         final allCommitCharacters = obj['allCommitCharacters'];
@@ -8030,6 +7461,19 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('completionItem');
+      try {
+        final completionItem = obj['completionItem'];
+        if (completionItem != null &&
+            !(CompletionOptionsCompletionItem.canParse(
+                completionItem, reporter))) {
+          reporter
+              .reportError('must be of type CompletionOptionsCompletionItem');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('resolveProvider');
       try {
         final resolveProvider = obj['resolveProvider'];
@@ -8040,14 +7484,13 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('completionItem');
+      reporter.push('triggerCharacters');
       try {
-        final completionItem = obj['completionItem'];
-        if (completionItem != null &&
-            !(CompletionOptionsCompletionItem.canParse(
-                completionItem, reporter))) {
-          reporter
-              .reportError('must be of type CompletionOptionsCompletionItem');
+        final triggerCharacters = obj['triggerCharacters'];
+        if (triggerCharacters != null &&
+            !((triggerCharacters is List<Object?> &&
+                (triggerCharacters.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
           return false;
         }
       } finally {
@@ -8073,12 +7516,12 @@
   @override
   bool operator ==(Object other) {
     if (other is CompletionOptions && other.runtimeType == CompletionOptions) {
-      return listEqual(triggerCharacters, other.triggerCharacters,
+      return listEqual(allCommitCharacters, other.allCommitCharacters,
               (String a, String b) => a == b) &&
-          listEqual(allCommitCharacters, other.allCommitCharacters,
-              (String a, String b) => a == b) &&
-          resolveProvider == other.resolveProvider &&
           completionItem == other.completionItem &&
+          resolveProvider == other.resolveProvider &&
+          listEqual(triggerCharacters, other.triggerCharacters,
+              (String a, String b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -8087,10 +7530,10 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(triggerCharacters),
         lspHashCode(allCommitCharacters),
-        resolveProvider,
         completionItem,
+        resolveProvider,
+        lspHashCode(triggerCharacters),
         workDoneProgress,
       );
 
@@ -8177,29 +7620,16 @@
 
   CompletionParams({
     this.context,
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static CompletionParams fromJson(Map<String, Object?> json) {
     final contextJson = json['context'];
     final context = contextJson != null
         ? CompletionContext.fromJson(contextJson as Map<String, Object?>)
         : null;
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -8208,12 +7638,25 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return CompletionParams(
       context: context,
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -8239,14 +7682,14 @@
     if (context != null) {
       __result['context'] = context?.toJson();
     }
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
@@ -8263,19 +7706,12 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -8299,22 +7735,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -8332,10 +7775,10 @@
   bool operator ==(Object other) {
     if (other is CompletionParams && other.runtimeType == CompletionParams) {
       return context == other.context &&
-          textDocument == other.textDocument &&
-          position == other.position &&
-          workDoneToken == other.workDoneToken &&
           partialResultToken == other.partialResultToken &&
+          position == other.position &&
+          textDocument == other.textDocument &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -8344,10 +7787,10 @@
   @override
   int get hashCode => Object.hash(
         context,
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -8362,41 +7805,42 @@
   );
 
   CompletionRegistrationOptions({
-    this.documentSelector,
-    this.triggerCharacters,
     this.allCommitCharacters,
-    this.resolveProvider,
     this.completionItem,
+    this.documentSelector,
+    this.resolveProvider,
+    this.triggerCharacters,
     this.workDoneProgress,
   });
   static CompletionRegistrationOptions fromJson(Map<String, Object?> json) {
-    final documentSelectorJson = json['documentSelector'];
-    final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
-        .toList();
-    final triggerCharactersJson = json['triggerCharacters'];
-    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
-        ?.map((item) => item as String)
-        .toList();
     final allCommitCharactersJson = json['allCommitCharacters'];
     final allCommitCharacters = (allCommitCharactersJson as List<Object?>?)
         ?.map((item) => item as String)
         .toList();
-    final resolveProviderJson = json['resolveProvider'];
-    final resolveProvider = resolveProviderJson as bool?;
     final completionItemJson = json['completionItem'];
     final completionItem = completionItemJson != null
         ? CompletionOptionsCompletionItem.fromJson(
             completionItemJson as Map<String, Object?>)
         : null;
+    final documentSelectorJson = json['documentSelector'];
+    final documentSelector = (documentSelectorJson as List<Object?>?)
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        .toList();
+    final resolveProviderJson = json['resolveProvider'];
+    final resolveProvider = resolveProviderJson as bool?;
+    final triggerCharactersJson = json['triggerCharacters'];
+    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
+        ?.map((item) => item as String)
+        .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CompletionRegistrationOptions(
-      documentSelector: documentSelector,
-      triggerCharacters: triggerCharacters,
       allCommitCharacters: allCommitCharacters,
-      resolveProvider: resolveProvider,
       completionItem: completionItem,
+      documentSelector: documentSelector,
+      resolveProvider: resolveProvider,
+      triggerCharacters: triggerCharacters,
       workDoneProgress: workDoneProgress,
     );
   }
@@ -8417,7 +7861,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The server provides support to resolve additional information for a
   /// completion item.
@@ -8438,18 +7882,18 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['documentSelector'] = documentSelector;
-    if (triggerCharacters != null) {
-      __result['triggerCharacters'] = triggerCharacters;
-    }
     if (allCommitCharacters != null) {
       __result['allCommitCharacters'] = allCommitCharacters;
     }
+    if (completionItem != null) {
+      __result['completionItem'] = completionItem?.toJson();
+    }
+    __result['documentSelector'] = documentSelector;
     if (resolveProvider != null) {
       __result['resolveProvider'] = resolveProvider;
     }
-    if (completionItem != null) {
-      __result['completionItem'] = completionItem?.toJson();
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
     }
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
@@ -8459,6 +7903,31 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('allCommitCharacters');
+      try {
+        final allCommitCharacters = obj['allCommitCharacters'];
+        if (allCommitCharacters != null &&
+            !((allCommitCharacters is List<Object?> &&
+                (allCommitCharacters.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('completionItem');
+      try {
+        final completionItem = obj['completionItem'];
+        if (completionItem != null &&
+            !(CompletionOptionsCompletionItem.canParse(
+                completionItem, reporter))) {
+          reporter
+              .reportError('must be of type CompletionOptionsCompletionItem');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('documentSelector');
       try {
         if (!obj.containsKey('documentSelector')) {
@@ -8469,32 +7938,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('triggerCharacters');
-      try {
-        final triggerCharacters = obj['triggerCharacters'];
-        if (triggerCharacters != null &&
-            !((triggerCharacters is List<Object?> &&
-                (triggerCharacters.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('allCommitCharacters');
-      try {
-        final allCommitCharacters = obj['allCommitCharacters'];
-        if (allCommitCharacters != null &&
-            !((allCommitCharacters is List<Object?> &&
-                (allCommitCharacters.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -8510,14 +7955,13 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('completionItem');
+      reporter.push('triggerCharacters');
       try {
-        final completionItem = obj['completionItem'];
-        if (completionItem != null &&
-            !(CompletionOptionsCompletionItem.canParse(
-                completionItem, reporter))) {
-          reporter
-              .reportError('must be of type CompletionOptionsCompletionItem');
+        final triggerCharacters = obj['triggerCharacters'];
+        if (triggerCharacters != null &&
+            !((triggerCharacters is List<Object?> &&
+                (triggerCharacters.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
           return false;
         }
       } finally {
@@ -8544,14 +7988,14 @@
   bool operator ==(Object other) {
     if (other is CompletionRegistrationOptions &&
         other.runtimeType == CompletionRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+      return listEqual(allCommitCharacters, other.allCommitCharacters,
+              (String a, String b) => a == b) &&
+          completionItem == other.completionItem &&
+          listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+          resolveProvider == other.resolveProvider &&
           listEqual(triggerCharacters, other.triggerCharacters,
               (String a, String b) => a == b) &&
-          listEqual(allCommitCharacters, other.allCommitCharacters,
-              (String a, String b) => a == b) &&
-          resolveProvider == other.resolveProvider &&
-          completionItem == other.completionItem &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -8560,11 +8004,11 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(documentSelector),
-        lspHashCode(triggerCharacters),
         lspHashCode(allCommitCharacters),
-        resolveProvider,
         completionItem,
+        lspHashCode(documentSelector),
+        resolveProvider,
+        lspHashCode(triggerCharacters),
         workDoneProgress,
       );
 
@@ -8779,31 +8223,31 @@
   );
 
   CreateFile({
-    this.kind = 'create',
-    required this.uri,
-    this.options,
     this.annotationId,
+    this.kind = 'create',
+    this.options,
+    required this.uri,
   }) {
     if (kind != 'create') {
       throw 'kind may only be the literal \'create\'';
     }
   }
   static CreateFile fromJson(Map<String, Object?> json) {
+    final annotationIdJson = json['annotationId'];
+    final annotationId = annotationIdJson as String?;
     final kindJson = json['kind'];
     final kind = kindJson as String;
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final optionsJson = json['options'];
     final options = optionsJson != null
         ? CreateFileOptions.fromJson(optionsJson as Map<String, Object?>)
         : null;
-    final annotationIdJson = json['annotationId'];
-    final annotationId = annotationIdJson as String?;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return CreateFile(
-      kind: kind,
-      uri: uri,
-      options: options,
       annotationId: annotationId,
+      kind: kind,
+      options: options,
+      uri: uri,
     );
   }
 
@@ -8822,19 +8266,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['kind'] = kind;
-    __result['uri'] = uri;
-    if (options != null) {
-      __result['options'] = options?.toJson();
-    }
     if (annotationId != null) {
       __result['annotationId'] = annotationId;
     }
+    __result['kind'] = kind;
+    if (options != null) {
+      __result['options'] = options?.toJson();
+    }
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('annotationId');
+      try {
+        final annotationId = obj['annotationId'];
+        if (annotationId != null && !(annotationId is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -8853,6 +8307,17 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('options');
+      try {
+        final options = obj['options'];
+        if (options != null &&
+            !(CreateFileOptions.canParse(options, reporter))) {
+          reporter.reportError('must be of type CreateFileOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -8871,27 +8336,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('options');
-      try {
-        final options = obj['options'];
-        if (options != null &&
-            !(CreateFileOptions.canParse(options, reporter))) {
-          reporter.reportError('must be of type CreateFileOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('annotationId');
-      try {
-        final annotationId = obj['annotationId'];
-        if (annotationId != null && !(annotationId is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type CreateFile');
@@ -8902,10 +8346,10 @@
   @override
   bool operator ==(Object other) {
     if (other is CreateFile && other.runtimeType == CreateFile) {
-      return kind == other.kind &&
-          uri == other.uri &&
+      return annotationId == other.annotationId &&
+          kind == other.kind &&
           options == other.options &&
-          annotationId == other.annotationId &&
+          uri == other.uri &&
           true;
     }
     return false;
@@ -8913,10 +8357,10 @@
 
   @override
   int get hashCode => Object.hash(
-        kind,
-        uri,
-        options,
         annotationId,
+        kind,
+        options,
+        uri,
       );
 
   @override
@@ -8931,17 +8375,17 @@
   );
 
   CreateFileOptions({
-    this.overwrite,
     this.ignoreIfExists,
+    this.overwrite,
   });
   static CreateFileOptions fromJson(Map<String, Object?> json) {
-    final overwriteJson = json['overwrite'];
-    final overwrite = overwriteJson as bool?;
     final ignoreIfExistsJson = json['ignoreIfExists'];
     final ignoreIfExists = ignoreIfExistsJson as bool?;
+    final overwriteJson = json['overwrite'];
+    final overwrite = overwriteJson as bool?;
     return CreateFileOptions(
-      overwrite: overwrite,
       ignoreIfExists: ignoreIfExists,
+      overwrite: overwrite,
     );
   }
 
@@ -8953,31 +8397,31 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (overwrite != null) {
-      __result['overwrite'] = overwrite;
-    }
     if (ignoreIfExists != null) {
       __result['ignoreIfExists'] = ignoreIfExists;
     }
+    if (overwrite != null) {
+      __result['overwrite'] = overwrite;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('overwrite');
+      reporter.push('ignoreIfExists');
       try {
-        final overwrite = obj['overwrite'];
-        if (overwrite != null && !(overwrite is bool)) {
+        final ignoreIfExists = obj['ignoreIfExists'];
+        if (ignoreIfExists != null && !(ignoreIfExists is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('ignoreIfExists');
+      reporter.push('overwrite');
       try {
-        final ignoreIfExists = obj['ignoreIfExists'];
-        if (ignoreIfExists != null && !(ignoreIfExists is bool)) {
+        final overwrite = obj['overwrite'];
+        if (overwrite != null && !(overwrite is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
@@ -8994,8 +8438,8 @@
   @override
   bool operator ==(Object other) {
     if (other is CreateFileOptions && other.runtimeType == CreateFileOptions) {
-      return overwrite == other.overwrite &&
-          ignoreIfExists == other.ignoreIfExists &&
+      return ignoreIfExists == other.ignoreIfExists &&
+          overwrite == other.overwrite &&
           true;
     }
     return false;
@@ -9003,8 +8447,8 @@
 
   @override
   int get hashCode => Object.hash(
-        overwrite,
         ignoreIfExists,
+        overwrite,
       );
 
   @override
@@ -9254,25 +8698,12 @@
   );
 
   DeclarationParams({
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static DeclarationParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -9281,11 +8712,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DeclarationParams(
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -9304,32 +8748,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -9353,22 +8790,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -9385,10 +8829,10 @@
   @override
   bool operator ==(Object other) {
     if (other is DeclarationParams && other.runtimeType == DeclarationParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -9396,10 +8840,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -9418,29 +8862,30 @@
   );
 
   DeclarationRegistrationOptions({
-    this.workDoneProgress,
     this.documentSelector,
     this.id,
+    this.workDoneProgress,
   });
   static DeclarationRegistrationOptions fromJson(Map<String, Object?> json) {
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return DeclarationRegistrationOptions(
-      workDoneProgress: workDoneProgress,
       documentSelector: documentSelector,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -9449,28 +8894,18 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     __result['documentSelector'] = documentSelector;
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('documentSelector');
       try {
         if (!obj.containsKey('documentSelector')) {
@@ -9481,8 +8916,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -9498,6 +8933,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type DeclarationRegistrationOptions');
@@ -9509,10 +8954,10 @@
   bool operator ==(Object other) {
     if (other is DeclarationRegistrationOptions &&
         other.runtimeType == DeclarationRegistrationOptions) {
-      return workDoneProgress == other.workDoneProgress &&
-          listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+      return listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -9520,9 +8965,9 @@
 
   @override
   int get hashCode => Object.hash(
-        workDoneProgress,
         lspHashCode(documentSelector),
         id,
+        workDoneProgress,
       );
 
   @override
@@ -9694,25 +9139,12 @@
   );
 
   DefinitionParams({
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static DefinitionParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -9721,11 +9153,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DefinitionParams(
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -9744,32 +9189,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -9793,22 +9231,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -9825,10 +9270,10 @@
   @override
   bool operator ==(Object other) {
     if (other is DefinitionParams && other.runtimeType == DefinitionParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -9836,10 +9281,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -9860,7 +9305,8 @@
   static DefinitionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -9872,7 +9318,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -9896,8 +9342,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -9925,7 +9371,7 @@
     if (other is DefinitionRegistrationOptions &&
         other.runtimeType == DefinitionRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -9950,31 +9396,31 @@
   );
 
   DeleteFile({
-    this.kind = 'delete',
-    required this.uri,
-    this.options,
     this.annotationId,
+    this.kind = 'delete',
+    this.options,
+    required this.uri,
   }) {
     if (kind != 'delete') {
       throw 'kind may only be the literal \'delete\'';
     }
   }
   static DeleteFile fromJson(Map<String, Object?> json) {
+    final annotationIdJson = json['annotationId'];
+    final annotationId = annotationIdJson as String?;
     final kindJson = json['kind'];
     final kind = kindJson as String;
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final optionsJson = json['options'];
     final options = optionsJson != null
         ? DeleteFileOptions.fromJson(optionsJson as Map<String, Object?>)
         : null;
-    final annotationIdJson = json['annotationId'];
-    final annotationId = annotationIdJson as String?;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return DeleteFile(
-      kind: kind,
-      uri: uri,
-      options: options,
       annotationId: annotationId,
+      kind: kind,
+      options: options,
+      uri: uri,
     );
   }
 
@@ -9993,19 +9439,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['kind'] = kind;
-    __result['uri'] = uri;
-    if (options != null) {
-      __result['options'] = options?.toJson();
-    }
     if (annotationId != null) {
       __result['annotationId'] = annotationId;
     }
+    __result['kind'] = kind;
+    if (options != null) {
+      __result['options'] = options?.toJson();
+    }
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('annotationId');
+      try {
+        final annotationId = obj['annotationId'];
+        if (annotationId != null && !(annotationId is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -10024,6 +9480,17 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('options');
+      try {
+        final options = obj['options'];
+        if (options != null &&
+            !(DeleteFileOptions.canParse(options, reporter))) {
+          reporter.reportError('must be of type DeleteFileOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -10042,27 +9509,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('options');
-      try {
-        final options = obj['options'];
-        if (options != null &&
-            !(DeleteFileOptions.canParse(options, reporter))) {
-          reporter.reportError('must be of type DeleteFileOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('annotationId');
-      try {
-        final annotationId = obj['annotationId'];
-        if (annotationId != null && !(annotationId is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DeleteFile');
@@ -10073,10 +9519,10 @@
   @override
   bool operator ==(Object other) {
     if (other is DeleteFile && other.runtimeType == DeleteFile) {
-      return kind == other.kind &&
-          uri == other.uri &&
+      return annotationId == other.annotationId &&
+          kind == other.kind &&
           options == other.options &&
-          annotationId == other.annotationId &&
+          uri == other.uri &&
           true;
     }
     return false;
@@ -10084,10 +9530,10 @@
 
   @override
   int get hashCode => Object.hash(
-        kind,
-        uri,
-        options,
         annotationId,
+        kind,
+        options,
+        uri,
       );
 
   @override
@@ -10102,17 +9548,17 @@
   );
 
   DeleteFileOptions({
-    this.recursive,
     this.ignoreIfNotExists,
+    this.recursive,
   });
   static DeleteFileOptions fromJson(Map<String, Object?> json) {
-    final recursiveJson = json['recursive'];
-    final recursive = recursiveJson as bool?;
     final ignoreIfNotExistsJson = json['ignoreIfNotExists'];
     final ignoreIfNotExists = ignoreIfNotExistsJson as bool?;
+    final recursiveJson = json['recursive'];
+    final recursive = recursiveJson as bool?;
     return DeleteFileOptions(
-      recursive: recursive,
       ignoreIfNotExists: ignoreIfNotExists,
+      recursive: recursive,
     );
   }
 
@@ -10124,31 +9570,31 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (recursive != null) {
-      __result['recursive'] = recursive;
-    }
     if (ignoreIfNotExists != null) {
       __result['ignoreIfNotExists'] = ignoreIfNotExists;
     }
+    if (recursive != null) {
+      __result['recursive'] = recursive;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('recursive');
+      reporter.push('ignoreIfNotExists');
       try {
-        final recursive = obj['recursive'];
-        if (recursive != null && !(recursive is bool)) {
+        final ignoreIfNotExists = obj['ignoreIfNotExists'];
+        if (ignoreIfNotExists != null && !(ignoreIfNotExists is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('ignoreIfNotExists');
+      reporter.push('recursive');
       try {
-        final ignoreIfNotExists = obj['ignoreIfNotExists'];
-        if (ignoreIfNotExists != null && !(ignoreIfNotExists is bool)) {
+        final recursive = obj['recursive'];
+        if (recursive != null && !(recursive is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
@@ -10165,8 +9611,8 @@
   @override
   bool operator ==(Object other) {
     if (other is DeleteFileOptions && other.runtimeType == DeleteFileOptions) {
-      return recursive == other.recursive &&
-          ignoreIfNotExists == other.ignoreIfNotExists &&
+      return ignoreIfNotExists == other.ignoreIfNotExists &&
+          recursive == other.recursive &&
           true;
     }
     return false;
@@ -10174,8 +9620,8 @@
 
   @override
   int get hashCode => Object.hash(
-        recursive,
         ignoreIfNotExists,
+        recursive,
       );
 
   @override
@@ -10265,54 +9711,54 @@
   );
 
   Diagnostic({
-    required this.range,
-    this.severity,
     this.code,
     this.codeDescription,
-    this.source,
-    required this.message,
-    this.tags,
-    this.relatedInformation,
     this.data,
+    required this.message,
+    required this.range,
+    this.relatedInformation,
+    this.severity,
+    this.source,
+    this.tags,
   });
   static Diagnostic fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
-    final severityJson = json['severity'];
-    final severity = severityJson != null
-        ? DiagnosticSeverity.fromJson(severityJson as int)
-        : null;
     final codeJson = json['code'];
     final code = codeJson as String?;
     final codeDescriptionJson = json['codeDescription'];
     final codeDescription = codeDescriptionJson != null
         ? CodeDescription.fromJson(codeDescriptionJson as Map<String, Object?>)
         : null;
-    final sourceJson = json['source'];
-    final source = sourceJson as String?;
+    final dataJson = json['data'];
+    final data = dataJson;
     final messageJson = json['message'];
     final message = messageJson as String;
-    final tagsJson = json['tags'];
-    final tags = (tagsJson as List<Object?>?)
-        ?.map((item) => DiagnosticTag.fromJson(item as int))
-        .toList();
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final relatedInformationJson = json['relatedInformation'];
     final relatedInformation = (relatedInformationJson as List<Object?>?)
         ?.map((item) =>
             DiagnosticRelatedInformation.fromJson(item as Map<String, Object?>))
         .toList();
-    final dataJson = json['data'];
-    final data = dataJson;
+    final severityJson = json['severity'];
+    final severity = severityJson != null
+        ? DiagnosticSeverity.fromJson(severityJson as int)
+        : null;
+    final sourceJson = json['source'];
+    final source = sourceJson as String?;
+    final tagsJson = json['tags'];
+    final tags = (tagsJson as List<Object?>?)
+        ?.map((item) => DiagnosticTag.fromJson(item as int))
+        .toList();
     return Diagnostic(
-      range: range,
-      severity: severity,
       code: code,
       codeDescription: codeDescription,
-      source: source,
-      message: message,
-      tags: tags,
-      relatedInformation: relatedInformation,
       data: data,
+      message: message,
+      range: range,
+      relatedInformation: relatedInformation,
+      severity: severity,
+      source: source,
+      tags: tags,
     );
   }
 
@@ -10353,64 +9799,35 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
-    if (severity != null) {
-      __result['severity'] = severity?.toJson();
-    }
     if (code != null) {
       __result['code'] = code;
     }
     if (codeDescription != null) {
       __result['codeDescription'] = codeDescription?.toJson();
     }
-    if (source != null) {
-      __result['source'] = source;
+    if (data != null) {
+      __result['data'] = data;
     }
     __result['message'] = message;
-    if (tags != null) {
-      __result['tags'] = tags?.map((item) => item.toJson()).toList();
-    }
+    __result['range'] = range.toJson();
     if (relatedInformation != null) {
       __result['relatedInformation'] =
           relatedInformation?.map((item) => item.toJson()).toList();
     }
-    if (data != null) {
-      __result['data'] = data;
+    if (severity != null) {
+      __result['severity'] = severity?.toJson();
+    }
+    if (source != null) {
+      __result['source'] = source;
+    }
+    if (tags != null) {
+      __result['tags'] = tags?.map((item) => item.toJson()).toList();
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('range');
-      try {
-        if (!obj.containsKey('range')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final range = obj['range'];
-        if (range == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(range, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('severity');
-      try {
-        final severity = obj['severity'];
-        if (severity != null &&
-            !(DiagnosticSeverity.canParse(severity, reporter))) {
-          reporter.reportError('must be of type DiagnosticSeverity');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('code');
       try {
         final code = obj['code'];
@@ -10432,16 +9849,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('source');
-      try {
-        final source = obj['source'];
-        if (source != null && !(source is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('message');
       try {
         if (!obj.containsKey('message')) {
@@ -10460,14 +9867,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tags');
+      reporter.push('range');
       try {
-        final tags = obj['tags'];
-        if (tags != null &&
-            !((tags is List<Object?> &&
-                (tags.every(
-                    (item) => DiagnosticTag.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DiagnosticTag>');
+        if (!obj.containsKey('range')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final range = obj['range'];
+        if (range == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(range, reporter))) {
+          reporter.reportError('must be of type Range');
           return false;
         }
       } finally {
@@ -10487,6 +9899,40 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('severity');
+      try {
+        final severity = obj['severity'];
+        if (severity != null &&
+            !(DiagnosticSeverity.canParse(severity, reporter))) {
+          reporter.reportError('must be of type DiagnosticSeverity');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('source');
+      try {
+        final source = obj['source'];
+        if (source != null && !(source is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('tags');
+      try {
+        final tags = obj['tags'];
+        if (tags != null &&
+            !((tags is List<Object?> &&
+                (tags.every(
+                    (item) => DiagnosticTag.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<DiagnosticTag>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type Diagnostic');
@@ -10497,21 +9943,21 @@
   @override
   bool operator ==(Object other) {
     if (other is Diagnostic && other.runtimeType == Diagnostic) {
-      return range == other.range &&
-          severity == other.severity &&
-          code == other.code &&
+      return code == other.code &&
           codeDescription == other.codeDescription &&
-          source == other.source &&
+          data == other.data &&
           message == other.message &&
-          listEqual(
-              tags, other.tags, (DiagnosticTag a, DiagnosticTag b) => a == b) &&
+          range == other.range &&
           listEqual(
               relatedInformation,
               other.relatedInformation,
               (DiagnosticRelatedInformation a,
                       DiagnosticRelatedInformation b) =>
                   a == b) &&
-          data == other.data &&
+          severity == other.severity &&
+          source == other.source &&
+          listEqual(
+              tags, other.tags, (DiagnosticTag a, DiagnosticTag b) => a == b) &&
           true;
     }
     return false;
@@ -10519,15 +9965,15 @@
 
   @override
   int get hashCode => Object.hash(
-        range,
-        severity,
         code,
         codeDescription,
-        source,
-        message,
-        lspHashCode(tags),
-        lspHashCode(relatedInformation),
         data,
+        message,
+        range,
+        lspHashCode(relatedInformation),
+        severity,
+        source,
+        lspHashCode(tags),
       );
 
   @override
@@ -10640,8 +10086,8 @@
   DiagnosticOptions({
     this.identifier,
     required this.interFileDependencies,
-    required this.workspaceDiagnostics,
     this.workDoneProgress,
+    required this.workspaceDiagnostics,
   });
   static DiagnosticOptions fromJson(Map<String, Object?> json) {
     if (DiagnosticRegistrationOptions.canParse(json, nullLspJsonReporter)) {
@@ -10651,15 +10097,15 @@
     final identifier = identifierJson as String?;
     final interFileDependenciesJson = json['interFileDependencies'];
     final interFileDependencies = interFileDependenciesJson as bool;
-    final workspaceDiagnosticsJson = json['workspaceDiagnostics'];
-    final workspaceDiagnostics = workspaceDiagnosticsJson as bool;
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
+    final workspaceDiagnosticsJson = json['workspaceDiagnostics'];
+    final workspaceDiagnostics = workspaceDiagnosticsJson as bool;
     return DiagnosticOptions(
       identifier: identifier,
       interFileDependencies: interFileDependencies,
-      workspaceDiagnostics: workspaceDiagnostics,
       workDoneProgress: workDoneProgress,
+      workspaceDiagnostics: workspaceDiagnostics,
     );
   }
 
@@ -10683,10 +10129,10 @@
       __result['identifier'] = identifier;
     }
     __result['interFileDependencies'] = interFileDependencies;
-    __result['workspaceDiagnostics'] = workspaceDiagnostics;
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
     }
+    __result['workspaceDiagnostics'] = workspaceDiagnostics;
     return __result;
   }
 
@@ -10720,6 +10166,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workspaceDiagnostics');
       try {
         if (!obj.containsKey('workspaceDiagnostics')) {
@@ -10738,16 +10194,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DiagnosticOptions');
@@ -10760,8 +10206,8 @@
     if (other is DiagnosticOptions && other.runtimeType == DiagnosticOptions) {
       return identifier == other.identifier &&
           interFileDependencies == other.interFileDependencies &&
-          workspaceDiagnostics == other.workspaceDiagnostics &&
           workDoneProgress == other.workDoneProgress &&
+          workspaceDiagnostics == other.workspaceDiagnostics &&
           true;
     }
     return false;
@@ -10771,8 +10217,8 @@
   int get hashCode => Object.hash(
         identifier,
         interFileDependencies,
-        workspaceDiagnostics,
         workDoneProgress,
+        workspaceDiagnostics,
       );
 
   @override
@@ -10794,40 +10240,41 @@
 
   DiagnosticRegistrationOptions({
     this.documentSelector,
+    this.id,
     this.identifier,
     required this.interFileDependencies,
-    required this.workspaceDiagnostics,
     this.workDoneProgress,
-    this.id,
+    required this.workspaceDiagnostics,
   });
   static DiagnosticRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
+    final idJson = json['id'];
+    final id = idJson as String?;
     final identifierJson = json['identifier'];
     final identifier = identifierJson as String?;
     final interFileDependenciesJson = json['interFileDependencies'];
     final interFileDependencies = interFileDependenciesJson as bool;
-    final workspaceDiagnosticsJson = json['workspaceDiagnostics'];
-    final workspaceDiagnostics = workspaceDiagnosticsJson as bool;
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    final idJson = json['id'];
-    final id = idJson as String?;
+    final workspaceDiagnosticsJson = json['workspaceDiagnostics'];
+    final workspaceDiagnostics = workspaceDiagnosticsJson as bool;
     return DiagnosticRegistrationOptions(
       documentSelector: documentSelector,
+      id: id,
       identifier: identifier,
       interFileDependencies: interFileDependencies,
-      workspaceDiagnostics: workspaceDiagnostics,
       workDoneProgress: workDoneProgress,
-      id: id,
+      workspaceDiagnostics: workspaceDiagnostics,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -10850,17 +10297,17 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
+    if (id != null) {
+      __result['id'] = id;
+    }
     if (identifier != null) {
       __result['identifier'] = identifier;
     }
     __result['interFileDependencies'] = interFileDependencies;
-    __result['workspaceDiagnostics'] = workspaceDiagnostics;
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
     }
-    if (id != null) {
-      __result['id'] = id;
-    }
+    __result['workspaceDiagnostics'] = workspaceDiagnostics;
     return __result;
   }
 
@@ -10876,8 +10323,18 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('id');
+      try {
+        final id = obj['id'];
+        if (id != null && !(id is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -10911,6 +10368,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workspaceDiagnostics');
       try {
         if (!obj.containsKey('workspaceDiagnostics')) {
@@ -10929,26 +10396,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('id');
-      try {
-        final id = obj['id'];
-        if (id != null && !(id is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DiagnosticRegistrationOptions');
@@ -10961,12 +10408,12 @@
     if (other is DiagnosticRegistrationOptions &&
         other.runtimeType == DiagnosticRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+          id == other.id &&
           identifier == other.identifier &&
           interFileDependencies == other.interFileDependencies &&
-          workspaceDiagnostics == other.workspaceDiagnostics &&
           workDoneProgress == other.workDoneProgress &&
-          id == other.id &&
+          workspaceDiagnostics == other.workspaceDiagnostics &&
           true;
     }
     return false;
@@ -10975,11 +10422,11 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
+        id,
         identifier,
         interFileDependencies,
-        workspaceDiagnostics,
         workDoneProgress,
-        id,
+        workspaceDiagnostics,
       );
 
   @override
@@ -11422,19 +10869,19 @@
   );
 
   DidChangeNotebookDocumentParams({
-    required this.notebookDocument,
     required this.change,
+    required this.notebookDocument,
   });
   static DidChangeNotebookDocumentParams fromJson(Map<String, Object?> json) {
-    final notebookDocumentJson = json['notebookDocument'];
-    final notebookDocument = VersionedNotebookDocumentIdentifier.fromJson(
-        notebookDocumentJson as Map<String, Object?>);
     final changeJson = json['change'];
     final change = NotebookDocumentChangeEvent.fromJson(
         changeJson as Map<String, Object?>);
+    final notebookDocumentJson = json['notebookDocument'];
+    final notebookDocument = VersionedNotebookDocumentIdentifier.fromJson(
+        notebookDocumentJson as Map<String, Object?>);
     return DidChangeNotebookDocumentParams(
-      notebookDocument: notebookDocument,
       change: change,
+      notebookDocument: notebookDocument,
     );
   }
 
@@ -11457,13 +10904,31 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['notebookDocument'] = notebookDocument.toJson();
     __result['change'] = change.toJson();
+    __result['notebookDocument'] = notebookDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('change');
+      try {
+        if (!obj.containsKey('change')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final change = obj['change'];
+        if (change == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(NotebookDocumentChangeEvent.canParse(change, reporter))) {
+          reporter.reportError('must be of type NotebookDocumentChangeEvent');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('notebookDocument');
       try {
         if (!obj.containsKey('notebookDocument')) {
@@ -11484,24 +10949,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('change');
-      try {
-        if (!obj.containsKey('change')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final change = obj['change'];
-        if (change == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(NotebookDocumentChangeEvent.canParse(change, reporter))) {
-          reporter.reportError('must be of type NotebookDocumentChangeEvent');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DidChangeNotebookDocumentParams');
@@ -11513,8 +10960,8 @@
   bool operator ==(Object other) {
     if (other is DidChangeNotebookDocumentParams &&
         other.runtimeType == DidChangeNotebookDocumentParams) {
-      return notebookDocument == other.notebookDocument &&
-          change == other.change &&
+      return change == other.change &&
+          notebookDocument == other.notebookDocument &&
           true;
     }
     return false;
@@ -11522,8 +10969,8 @@
 
   @override
   int get hashCode => Object.hash(
-        notebookDocument,
         change,
+        notebookDocument,
       );
 
   @override
@@ -11537,13 +10984,10 @@
   );
 
   DidChangeTextDocumentParams({
-    required this.textDocument,
     required this.contentChanges,
+    required this.textDocument,
   });
   static DidChangeTextDocumentParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = VersionedTextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
     final contentChangesJson = json['contentChanges'];
     final contentChanges = (contentChangesJson as List<Object?>)
         .map((item) => TextDocumentContentChangeEvent1.canParse(
@@ -11557,9 +11001,12 @@
                     TextDocumentContentChangeEvent2.fromJson(item as Map<String, Object?>))
                 : (throw '''$item was not one of (TextDocumentContentChangeEvent1, TextDocumentContentChangeEvent2)''')))
         .toList();
+    final textDocumentJson = json['textDocument'];
+    final textDocument = VersionedTextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
     return DidChangeTextDocumentParams(
-      textDocument: textDocument,
       contentChanges: contentChanges,
+      textDocument: textDocument,
     );
   }
 
@@ -11586,33 +11033,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['contentChanges'] = contentChanges;
+    __result['textDocument'] = textDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(VersionedTextDocumentIdentifier.canParse(
-            textDocument, reporter))) {
-          reporter
-              .reportError('must be of type VersionedTextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('contentChanges');
       try {
         if (!obj.containsKey('contentChanges')) {
@@ -11636,6 +11063,26 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(VersionedTextDocumentIdentifier.canParse(
+            textDocument, reporter))) {
+          reporter
+              .reportError('must be of type VersionedTextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type DidChangeTextDocumentParams');
@@ -11647,8 +11094,7 @@
   bool operator ==(Object other) {
     if (other is DidChangeTextDocumentParams &&
         other.runtimeType == DidChangeTextDocumentParams) {
-      return textDocument == other.textDocument &&
-          listEqual(
+      return listEqual(
               contentChanges,
               other.contentChanges,
               (Either2<TextDocumentContentChangeEvent1,
@@ -11658,6 +11104,7 @@
                               TextDocumentContentChangeEvent2>
                           b) =>
                   a == b) &&
+          textDocument == other.textDocument &&
           true;
     }
     return false;
@@ -11665,8 +11112,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         lspHashCode(contentChanges),
+        textDocument,
       );
 
   @override
@@ -11998,21 +11445,21 @@
   );
 
   DidCloseNotebookDocumentParams({
-    required this.notebookDocument,
     required this.cellTextDocuments,
+    required this.notebookDocument,
   });
   static DidCloseNotebookDocumentParams fromJson(Map<String, Object?> json) {
-    final notebookDocumentJson = json['notebookDocument'];
-    final notebookDocument = NotebookDocumentIdentifier.fromJson(
-        notebookDocumentJson as Map<String, Object?>);
     final cellTextDocumentsJson = json['cellTextDocuments'];
     final cellTextDocuments = (cellTextDocumentsJson as List<Object?>)
         .map((item) =>
             TextDocumentIdentifier.fromJson(item as Map<String, Object?>))
         .toList();
+    final notebookDocumentJson = json['notebookDocument'];
+    final notebookDocument = NotebookDocumentIdentifier.fromJson(
+        notebookDocumentJson as Map<String, Object?>);
     return DidCloseNotebookDocumentParams(
-      notebookDocument: notebookDocument,
       cellTextDocuments: cellTextDocuments,
+      notebookDocument: notebookDocument,
     );
   }
 
@@ -12025,33 +11472,14 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['notebookDocument'] = notebookDocument.toJson();
     __result['cellTextDocuments'] =
         cellTextDocuments.map((item) => item.toJson()).toList();
+    __result['notebookDocument'] = notebookDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('notebookDocument');
-      try {
-        if (!obj.containsKey('notebookDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final notebookDocument = obj['notebookDocument'];
-        if (notebookDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(NotebookDocumentIdentifier.canParse(
-            notebookDocument, reporter))) {
-          reporter.reportError('must be of type NotebookDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('cellTextDocuments');
       try {
         if (!obj.containsKey('cellTextDocuments')) {
@@ -12072,6 +11500,25 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('notebookDocument');
+      try {
+        if (!obj.containsKey('notebookDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final notebookDocument = obj['notebookDocument'];
+        if (notebookDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(NotebookDocumentIdentifier.canParse(
+            notebookDocument, reporter))) {
+          reporter.reportError('must be of type NotebookDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type DidCloseNotebookDocumentParams');
@@ -12083,9 +11530,9 @@
   bool operator ==(Object other) {
     if (other is DidCloseNotebookDocumentParams &&
         other.runtimeType == DidCloseNotebookDocumentParams) {
-      return notebookDocument == other.notebookDocument &&
-          listEqual(cellTextDocuments, other.cellTextDocuments,
+      return listEqual(cellTextDocuments, other.cellTextDocuments,
               (TextDocumentIdentifier a, TextDocumentIdentifier b) => a == b) &&
+          notebookDocument == other.notebookDocument &&
           true;
     }
     return false;
@@ -12093,8 +11540,8 @@
 
   @override
   int get hashCode => Object.hash(
-        notebookDocument,
         lspHashCode(cellTextDocuments),
+        notebookDocument,
       );
 
   @override
@@ -12180,20 +11627,20 @@
   );
 
   DidOpenNotebookDocumentParams({
-    required this.notebookDocument,
     required this.cellTextDocuments,
+    required this.notebookDocument,
   });
   static DidOpenNotebookDocumentParams fromJson(Map<String, Object?> json) {
-    final notebookDocumentJson = json['notebookDocument'];
-    final notebookDocument =
-        NotebookDocument.fromJson(notebookDocumentJson as Map<String, Object?>);
     final cellTextDocumentsJson = json['cellTextDocuments'];
     final cellTextDocuments = (cellTextDocumentsJson as List<Object?>)
         .map((item) => TextDocumentItem.fromJson(item as Map<String, Object?>))
         .toList();
+    final notebookDocumentJson = json['notebookDocument'];
+    final notebookDocument =
+        NotebookDocument.fromJson(notebookDocumentJson as Map<String, Object?>);
     return DidOpenNotebookDocumentParams(
-      notebookDocument: notebookDocument,
       cellTextDocuments: cellTextDocuments,
+      notebookDocument: notebookDocument,
     );
   }
 
@@ -12205,32 +11652,14 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['notebookDocument'] = notebookDocument.toJson();
     __result['cellTextDocuments'] =
         cellTextDocuments.map((item) => item.toJson()).toList();
+    __result['notebookDocument'] = notebookDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('notebookDocument');
-      try {
-        if (!obj.containsKey('notebookDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final notebookDocument = obj['notebookDocument'];
-        if (notebookDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(NotebookDocument.canParse(notebookDocument, reporter))) {
-          reporter.reportError('must be of type NotebookDocument');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('cellTextDocuments');
       try {
         if (!obj.containsKey('cellTextDocuments')) {
@@ -12251,6 +11680,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('notebookDocument');
+      try {
+        if (!obj.containsKey('notebookDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final notebookDocument = obj['notebookDocument'];
+        if (notebookDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(NotebookDocument.canParse(notebookDocument, reporter))) {
+          reporter.reportError('must be of type NotebookDocument');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type DidOpenNotebookDocumentParams');
@@ -12262,9 +11709,9 @@
   bool operator ==(Object other) {
     if (other is DidOpenNotebookDocumentParams &&
         other.runtimeType == DidOpenNotebookDocumentParams) {
-      return notebookDocument == other.notebookDocument &&
-          listEqual(cellTextDocuments, other.cellTextDocuments,
+      return listEqual(cellTextDocuments, other.cellTextDocuments,
               (TextDocumentItem a, TextDocumentItem b) => a == b) &&
+          notebookDocument == other.notebookDocument &&
           true;
     }
     return false;
@@ -12272,8 +11719,8 @@
 
   @override
   int get hashCode => Object.hash(
-        notebookDocument,
         lspHashCode(cellTextDocuments),
+        notebookDocument,
       );
 
   @override
@@ -12430,18 +11877,18 @@
   );
 
   DidSaveTextDocumentParams({
-    required this.textDocument,
     this.text,
+    required this.textDocument,
   });
   static DidSaveTextDocumentParams fromJson(Map<String, Object?> json) {
+    final textJson = json['text'];
+    final text = textJson as String?;
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final textJson = json['text'];
-    final text = textJson as String?;
     return DidSaveTextDocumentParams(
-      textDocument: textDocument,
       text: text,
+      textDocument: textDocument,
     );
   }
 
@@ -12454,15 +11901,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     if (text != null) {
       __result['text'] = text;
     }
+    __result['textDocument'] = textDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('text');
+      try {
+        final text = obj['text'];
+        if (text != null && !(text is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -12481,16 +11938,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('text');
-      try {
-        final text = obj['text'];
-        if (text != null && !(text is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DidSaveTextDocumentParams');
@@ -12502,15 +11949,15 @@
   bool operator ==(Object other) {
     if (other is DidSaveTextDocumentParams &&
         other.runtimeType == DidSaveTextDocumentParams) {
-      return textDocument == other.textDocument && text == other.text && true;
+      return text == other.text && textDocument == other.textDocument && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         text,
+        textDocument,
       );
 
   @override
@@ -12653,11 +12100,19 @@
   );
 
   DocumentColorParams({
+    this.partialResultToken,
     required this.textDocument,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static DocumentColorParams fromJson(Map<String, Object?> json) {
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
@@ -12669,18 +12124,10 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DocumentColorParams(
+      partialResultToken: partialResultToken,
       textDocument: textDocument,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -12696,18 +12143,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -12737,17 +12195,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DocumentColorParams');
@@ -12759,9 +12206,9 @@
   bool operator ==(Object other) {
     if (other is DocumentColorParams &&
         other.runtimeType == DocumentColorParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -12769,9 +12216,9 @@
 
   @override
   int get hashCode => Object.hash(
+        partialResultToken,
         textDocument,
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -12797,7 +12244,8 @@
   static DocumentColorRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -12812,7 +12260,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -12843,8 +12291,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -12882,7 +12330,7 @@
     if (other is DocumentColorRegistrationOptions &&
         other.runtimeType == DocumentColorRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -12911,28 +12359,15 @@
   );
 
   DocumentDiagnosticParams({
-    required this.textDocument,
     this.identifier,
-    this.previousResultId,
-    this.workDoneToken,
     this.partialResultToken,
+    this.previousResultId,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static DocumentDiagnosticParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
     final identifierJson = json['identifier'];
     final identifier = identifierJson as String?;
-    final previousResultIdJson = json['previousResultId'];
-    final previousResultId = previousResultIdJson as String?;
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -12941,12 +12376,25 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final previousResultIdJson = json['previousResultId'];
+    final previousResultId = previousResultIdJson as String?;
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DocumentDiagnosticParams(
-      textDocument: textDocument,
       identifier: identifier,
-      previousResultId: previousResultId,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      previousResultId: previousResultId,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -12968,24 +12416,55 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     if (identifier != null) {
       __result['identifier'] = identifier;
     }
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     if (previousResultId != null) {
       __result['previousResultId'] = previousResultId;
     }
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('identifier');
+      try {
+        final identifier = obj['identifier'];
+        if (identifier != null && !(identifier is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('previousResultId');
+      try {
+        final previousResultId = obj['previousResultId'];
+        if (previousResultId != null && !(previousResultId is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -13004,26 +12483,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('identifier');
-      try {
-        final identifier = obj['identifier'];
-        if (identifier != null && !(identifier is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('previousResultId');
-      try {
-        final previousResultId = obj['previousResultId'];
-        if (previousResultId != null && !(previousResultId is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -13035,17 +12494,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DocumentDiagnosticParams');
@@ -13057,11 +12505,11 @@
   bool operator ==(Object other) {
     if (other is DocumentDiagnosticParams &&
         other.runtimeType == DocumentDiagnosticParams) {
-      return textDocument == other.textDocument &&
-          identifier == other.identifier &&
-          previousResultId == other.previousResultId &&
-          workDoneToken == other.workDoneToken &&
+      return identifier == other.identifier &&
           partialResultToken == other.partialResultToken &&
+          previousResultId == other.previousResultId &&
+          textDocument == other.textDocument &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -13069,11 +12517,11 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         identifier,
-        previousResultId,
-        workDoneToken,
         partialResultToken,
+        previousResultId,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -13214,127 +12662,6 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class DocumentFilter implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    DocumentFilter.canParse,
-    DocumentFilter.fromJson,
-  );
-
-  DocumentFilter({
-    this.language,
-    this.scheme,
-    this.pattern,
-  });
-  static DocumentFilter fromJson(Map<String, Object?> json) {
-    final languageJson = json['language'];
-    final language = languageJson as String?;
-    final schemeJson = json['scheme'];
-    final scheme = schemeJson as String?;
-    final patternJson = json['pattern'];
-    final pattern = patternJson as String?;
-    return DocumentFilter(
-      language: language,
-      scheme: scheme,
-      pattern: pattern,
-    );
-  }
-
-  /// A language id, like `typescript`.
-  final String? language;
-
-  /// A glob pattern, like `*.{ts,js}`.
-  ///
-  /// Glob patterns can have the following syntax:
-  /// - `*` to match one or more characters in a path segment
-  /// - `?` to match on one character in a path segment
-  /// - `**` to match any number of path segments, including none
-  /// - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
-  ///   matches all TypeScript and JavaScript files)
-  /// - `[]` to declare a range of characters to match in a path segment
-  ///   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
-  /// - `[!...]` to negate a range of characters to match in a path segment
-  ///   (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but
-  ///   not `example.0`)
-  final String? pattern;
-
-  /// A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
-  final String? scheme;
-
-  Map<String, Object?> toJson() {
-    var __result = <String, Object?>{};
-    if (language != null) {
-      __result['language'] = language;
-    }
-    if (scheme != null) {
-      __result['scheme'] = scheme;
-    }
-    if (pattern != null) {
-      __result['pattern'] = pattern;
-    }
-    return __result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
-      reporter.push('language');
-      try {
-        final language = obj['language'];
-        if (language != null && !(language is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('scheme');
-      try {
-        final scheme = obj['scheme'];
-        if (scheme != null && !(scheme is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('pattern');
-      try {
-        final pattern = obj['pattern'];
-        if (pattern != null && !(pattern is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      return true;
-    } else {
-      reporter.reportError('must be of type DocumentFilter');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is DocumentFilter && other.runtimeType == DocumentFilter) {
-      return language == other.language &&
-          scheme == other.scheme &&
-          pattern == other.pattern &&
-          true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => Object.hash(
-        language,
-        scheme,
-        pattern,
-      );
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
 class DocumentFormattingClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
     DocumentFormattingClientCapabilities.canParse,
@@ -13473,17 +12800,17 @@
   );
 
   DocumentFormattingParams({
-    required this.textDocument,
     required this.options,
+    required this.textDocument,
     this.workDoneToken,
   });
   static DocumentFormattingParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
     final optionsJson = json['options'];
     final options =
         FormattingOptions.fromJson(optionsJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -13493,8 +12820,8 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DocumentFormattingParams(
-      textDocument: textDocument,
       options: options,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -13510,8 +12837,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['options'] = options.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -13520,24 +12847,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('options');
       try {
         if (!obj.containsKey('options')) {
@@ -13556,6 +12865,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -13578,8 +12905,8 @@
   bool operator ==(Object other) {
     if (other is DocumentFormattingParams &&
         other.runtimeType == DocumentFormattingParams) {
-      return textDocument == other.textDocument &&
-          options == other.options &&
+      return options == other.options &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -13588,8 +12915,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         options,
+        textDocument,
         workDoneToken,
       );
 
@@ -13615,7 +12942,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -13627,7 +12955,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -13651,8 +12979,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -13681,7 +13009,7 @@
     if (other is DocumentFormattingRegistrationOptions &&
         other.runtimeType == DocumentFormattingRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -13708,19 +13036,19 @@
   );
 
   DocumentHighlight({
-    required this.range,
     this.kind,
+    required this.range,
   });
   static DocumentHighlight fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final kindJson = json['kind'];
     final kind = kindJson != null
         ? DocumentHighlightKind.fromJson(kindJson as int)
         : null;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return DocumentHighlight(
-      range: range,
       kind: kind,
+      range: range,
     );
   }
 
@@ -13732,15 +13060,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     if (kind != null) {
       __result['kind'] = kind?.toJson();
     }
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('kind');
+      try {
+        final kind = obj['kind'];
+        if (kind != null && !(DocumentHighlightKind.canParse(kind, reporter))) {
+          reporter.reportError('must be of type DocumentHighlightKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -13759,16 +13097,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('kind');
-      try {
-        final kind = obj['kind'];
-        if (kind != null && !(DocumentHighlightKind.canParse(kind, reporter))) {
-          reporter.reportError('must be of type DocumentHighlightKind');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DocumentHighlight');
@@ -13779,15 +13107,15 @@
   @override
   bool operator ==(Object other) {
     if (other is DocumentHighlight && other.runtimeType == DocumentHighlight) {
-      return range == other.range && kind == other.kind && true;
+      return kind == other.kind && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         kind,
+        range,
       );
 
   @override
@@ -13969,25 +13297,12 @@
   );
 
   DocumentHighlightParams({
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static DocumentHighlightParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -13996,11 +13311,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DocumentHighlightParams(
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -14019,32 +13347,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -14068,22 +13389,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -14101,10 +13429,10 @@
   bool operator ==(Object other) {
     if (other is DocumentHighlightParams &&
         other.runtimeType == DocumentHighlightParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -14112,10 +13440,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -14140,7 +13468,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -14152,7 +13481,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -14176,8 +13505,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -14206,7 +13535,7 @@
     if (other is DocumentHighlightRegistrationOptions &&
         other.runtimeType == DocumentHighlightRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -14232,25 +13561,25 @@
   );
 
   DocumentLink({
+    this.data,
     required this.range,
     this.target,
     this.tooltip,
-    this.data,
   });
   static DocumentLink fromJson(Map<String, Object?> json) {
+    final dataJson = json['data'];
+    final data = dataJson;
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final targetJson = json['target'];
     final target = targetJson as String?;
     final tooltipJson = json['tooltip'];
     final tooltip = tooltipJson as String?;
-    final dataJson = json['data'];
-    final data = dataJson;
     return DocumentLink(
+      data: data,
       range: range,
       target: target,
       tooltip: tooltip,
-      data: data,
     );
   }
 
@@ -14275,6 +13604,9 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (data != null) {
+      __result['data'] = data;
+    }
     __result['range'] = range.toJson();
     if (target != null) {
       __result['target'] = target;
@@ -14282,9 +13614,6 @@
     if (tooltip != null) {
       __result['tooltip'] = tooltip;
     }
-    if (data != null) {
-      __result['data'] = data;
-    }
     return __result;
   }
 
@@ -14338,10 +13667,10 @@
   @override
   bool operator ==(Object other) {
     if (other is DocumentLink && other.runtimeType == DocumentLink) {
-      return range == other.range &&
+      return data == other.data &&
+          range == other.range &&
           target == other.target &&
           tooltip == other.tooltip &&
-          data == other.data &&
           true;
     }
     return false;
@@ -14349,10 +13678,10 @@
 
   @override
   int get hashCode => Object.hash(
+        data,
         range,
         target,
         tooltip,
-        data,
       );
 
   @override
@@ -14545,11 +13874,19 @@
   );
 
   DocumentLinkParams({
+    this.partialResultToken,
     required this.textDocument,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static DocumentLinkParams fromJson(Map<String, Object?> json) {
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
@@ -14561,18 +13898,10 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DocumentLinkParams(
+      partialResultToken: partialResultToken,
       textDocument: textDocument,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -14588,18 +13917,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -14629,17 +13969,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DocumentLinkParams');
@@ -14651,9 +13980,9 @@
   bool operator ==(Object other) {
     if (other is DocumentLinkParams &&
         other.runtimeType == DocumentLinkParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -14661,9 +13990,9 @@
 
   @override
   int get hashCode => Object.hash(
+        partialResultToken,
         textDocument,
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -14688,7 +14017,8 @@
   static DocumentLinkRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
@@ -14703,7 +14033,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// Document links have a resolve provider as well.
   final bool? resolveProvider;
@@ -14733,8 +14063,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -14772,7 +14102,7 @@
     if (other is DocumentLinkRegistrationOptions &&
         other.runtimeType == DocumentLinkRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           resolveProvider == other.resolveProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -14966,27 +14296,27 @@
   );
 
   DocumentOnTypeFormattingParams({
-    required this.textDocument,
-    required this.position,
     required this.ch,
     required this.options,
+    required this.position,
+    required this.textDocument,
   });
   static DocumentOnTypeFormattingParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final chJson = json['ch'];
     final ch = chJson as String;
     final optionsJson = json['options'];
     final options =
         FormattingOptions.fromJson(optionsJson as Map<String, Object?>);
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
     return DocumentOnTypeFormattingParams(
-      textDocument: textDocument,
-      position: position,
       ch: ch,
       options: options,
+      position: position,
+      textDocument: textDocument,
     );
   }
 
@@ -15009,51 +14339,15 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
     __result['ch'] = ch;
     __result['options'] = options.toJson();
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('position');
-      try {
-        if (!obj.containsKey('position')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final position = obj['position'];
-        if (position == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Position.canParse(position, reporter))) {
-          reporter.reportError('must be of type Position');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('ch');
       try {
         if (!obj.containsKey('ch')) {
@@ -15090,6 +14384,42 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('position');
+      try {
+        if (!obj.containsKey('position')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final position = obj['position'];
+        if (position == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Position.canParse(position, reporter))) {
+          reporter.reportError('must be of type Position');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type DocumentOnTypeFormattingParams');
@@ -15101,10 +14431,10 @@
   bool operator ==(Object other) {
     if (other is DocumentOnTypeFormattingParams &&
         other.runtimeType == DocumentOnTypeFormattingParams) {
-      return textDocument == other.textDocument &&
-          position == other.position &&
-          ch == other.ch &&
+      return ch == other.ch &&
           options == other.options &&
+          position == other.position &&
+          textDocument == other.textDocument &&
           true;
     }
     return false;
@@ -15112,10 +14442,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        position,
         ch,
         options,
+        position,
+        textDocument,
       );
 
   @override
@@ -15141,7 +14471,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final firstTriggerCharacterJson = json['firstTriggerCharacter'];
     final firstTriggerCharacter = firstTriggerCharacterJson as String;
@@ -15158,7 +14489,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// A character on which formatting should be triggered, like `{`.
   final String firstTriggerCharacter;
@@ -15188,8 +14519,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -15238,7 +14569,7 @@
     if (other is DocumentOnTypeFormattingRegistrationOptions &&
         other.runtimeType == DocumentOnTypeFormattingRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           firstTriggerCharacter == other.firstTriggerCharacter &&
           listEqual(moreTriggerCharacter, other.moreTriggerCharacter,
               (String a, String b) => a == b) &&
@@ -15398,20 +14729,20 @@
   );
 
   DocumentRangeFormattingParams({
-    required this.textDocument,
-    required this.range,
     required this.options,
+    required this.range,
+    required this.textDocument,
     this.workDoneToken,
   });
   static DocumentRangeFormattingParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final optionsJson = json['options'];
     final options =
         FormattingOptions.fromJson(optionsJson as Map<String, Object?>);
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -15421,9 +14752,9 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DocumentRangeFormattingParams(
-      textDocument: textDocument,
-      range: range,
       options: options,
+      range: range,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -15442,9 +14773,9 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['range'] = range.toJson();
     __result['options'] = options.toJson();
+    __result['range'] = range.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -15453,19 +14784,19 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('options');
       try {
-        if (!obj.containsKey('textDocument')) {
+        if (!obj.containsKey('options')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
+        final options = obj['options'];
+        if (options == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        if (!(FormattingOptions.canParse(options, reporter))) {
+          reporter.reportError('must be of type FormattingOptions');
           return false;
         }
       } finally {
@@ -15489,19 +14820,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('options');
+      reporter.push('textDocument');
       try {
-        if (!obj.containsKey('options')) {
+        if (!obj.containsKey('textDocument')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final options = obj['options'];
-        if (options == null) {
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(FormattingOptions.canParse(options, reporter))) {
-          reporter.reportError('must be of type FormattingOptions');
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
@@ -15529,9 +14860,9 @@
   bool operator ==(Object other) {
     if (other is DocumentRangeFormattingParams &&
         other.runtimeType == DocumentRangeFormattingParams) {
-      return textDocument == other.textDocument &&
+      return options == other.options &&
           range == other.range &&
-          options == other.options &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -15540,9 +14871,9 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        range,
         options,
+        range,
+        textDocument,
         workDoneToken,
       );
 
@@ -15568,7 +14899,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -15580,7 +14912,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -15604,8 +14936,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -15634,7 +14966,7 @@
     if (other is DocumentRangeFormattingRegistrationOptions &&
         other.runtimeType == DocumentRangeFormattingRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -15662,46 +14994,46 @@
   );
 
   DocumentSymbol({
-    required this.name,
+    this.children,
+    this.deprecated,
     this.detail,
     required this.kind,
-    this.tags,
-    this.deprecated,
+    required this.name,
     required this.range,
     required this.selectionRange,
-    this.children,
+    this.tags,
   });
   static DocumentSymbol fromJson(Map<String, Object?> json) {
-    final nameJson = json['name'];
-    final name = nameJson as String;
+    final childrenJson = json['children'];
+    final children = (childrenJson as List<Object?>?)
+        ?.map((item) => DocumentSymbol.fromJson(item as Map<String, Object?>))
+        .toList();
+    final deprecatedJson = json['deprecated'];
+    final deprecated = deprecatedJson as bool?;
     final detailJson = json['detail'];
     final detail = detailJson as String?;
     final kindJson = json['kind'];
     final kind = SymbolKind.fromJson(kindJson as int);
-    final tagsJson = json['tags'];
-    final tags = (tagsJson as List<Object?>?)
-        ?.map((item) => SymbolTag.fromJson(item as int))
-        .toList();
-    final deprecatedJson = json['deprecated'];
-    final deprecated = deprecatedJson as bool?;
+    final nameJson = json['name'];
+    final name = nameJson as String;
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final selectionRangeJson = json['selectionRange'];
     final selectionRange =
         Range.fromJson(selectionRangeJson as Map<String, Object?>);
-    final childrenJson = json['children'];
-    final children = (childrenJson as List<Object?>?)
-        ?.map((item) => DocumentSymbol.fromJson(item as Map<String, Object?>))
+    final tagsJson = json['tags'];
+    final tags = (tagsJson as List<Object?>?)
+        ?.map((item) => SymbolTag.fromJson(item as int))
         .toList();
     return DocumentSymbol(
-      name: name,
+      children: children,
+      deprecated: deprecated,
       detail: detail,
       kind: kind,
-      tags: tags,
-      deprecated: deprecated,
+      name: name,
       range: range,
       selectionRange: selectionRange,
-      children: children,
+      tags: tags,
     );
   }
 
@@ -15739,40 +15071,45 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['name'] = name;
-    if (detail != null) {
-      __result['detail'] = detail;
-    }
-    __result['kind'] = kind.toJson();
-    if (tags != null) {
-      __result['tags'] = tags?.map((item) => item.toJson()).toList();
+    if (children != null) {
+      __result['children'] = children?.map((item) => item.toJson()).toList();
     }
     if (deprecated != null) {
       __result['deprecated'] = deprecated;
     }
+    if (detail != null) {
+      __result['detail'] = detail;
+    }
+    __result['kind'] = kind.toJson();
+    __result['name'] = name;
     __result['range'] = range.toJson();
     __result['selectionRange'] = selectionRange.toJson();
-    if (children != null) {
-      __result['children'] = children?.map((item) => item.toJson()).toList();
+    if (tags != null) {
+      __result['tags'] = tags?.map((item) => item.toJson()).toList();
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('name');
+      reporter.push('children');
       try {
-        if (!obj.containsKey('name')) {
-          reporter.reportError('must not be undefined');
+        final children = obj['children'];
+        if (children != null &&
+            !((children is List<Object?> &&
+                (children.every(
+                    (item) => DocumentSymbol.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<DocumentSymbol>');
           return false;
         }
-        final name = obj['name'];
-        if (name == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(name is String)) {
-          reporter.reportError('must be of type String');
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('deprecated');
+      try {
+        final deprecated = obj['deprecated'];
+        if (deprecated != null && !(deprecated is bool)) {
+          reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
@@ -15806,23 +15143,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tags');
+      reporter.push('name');
       try {
-        final tags = obj['tags'];
-        if (tags != null &&
-            !((tags is List<Object?> &&
-                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<SymbolTag>');
+        if (!obj.containsKey('name')) {
+          reporter.reportError('must not be undefined');
           return false;
         }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('deprecated');
-      try {
-        final deprecated = obj['deprecated'];
-        if (deprecated != null && !(deprecated is bool)) {
-          reporter.reportError('must be of type bool');
+        final name = obj['name'];
+        if (name == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(name is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -15864,14 +15197,13 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('children');
+      reporter.push('tags');
       try {
-        final children = obj['children'];
-        if (children != null &&
-            !((children is List<Object?> &&
-                (children.every(
-                    (item) => DocumentSymbol.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentSymbol>');
+        final tags = obj['tags'];
+        if (tags != null &&
+            !((tags is List<Object?> &&
+                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<SymbolTag>');
           return false;
         }
       } finally {
@@ -15887,15 +15219,15 @@
   @override
   bool operator ==(Object other) {
     if (other is DocumentSymbol && other.runtimeType == DocumentSymbol) {
-      return name == other.name &&
+      return listEqual(children, other.children,
+              (DocumentSymbol a, DocumentSymbol b) => a == b) &&
+          deprecated == other.deprecated &&
           detail == other.detail &&
           kind == other.kind &&
-          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
-          deprecated == other.deprecated &&
+          name == other.name &&
           range == other.range &&
           selectionRange == other.selectionRange &&
-          listEqual(children, other.children,
-              (DocumentSymbol a, DocumentSymbol b) => a == b) &&
+          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
           true;
     }
     return false;
@@ -15903,14 +15235,14 @@
 
   @override
   int get hashCode => Object.hash(
-        name,
+        lspHashCode(children),
+        deprecated,
         detail,
         kind,
-        lspHashCode(tags),
-        deprecated,
+        name,
         range,
         selectionRange,
-        lspHashCode(children),
+        lspHashCode(tags),
       );
 
   @override
@@ -15925,36 +15257,36 @@
 
   DocumentSymbolClientCapabilities({
     this.dynamicRegistration,
-    this.symbolKind,
     this.hierarchicalDocumentSymbolSupport,
-    this.tagSupport,
     this.labelSupport,
+    this.symbolKind,
+    this.tagSupport,
   });
   static DocumentSymbolClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
+    final hierarchicalDocumentSymbolSupportJson =
+        json['hierarchicalDocumentSymbolSupport'];
+    final hierarchicalDocumentSymbolSupport =
+        hierarchicalDocumentSymbolSupportJson as bool?;
+    final labelSupportJson = json['labelSupport'];
+    final labelSupport = labelSupportJson as bool?;
     final symbolKindJson = json['symbolKind'];
     final symbolKind = symbolKindJson != null
         ? DocumentSymbolClientCapabilitiesSymbolKind.fromJson(
             symbolKindJson as Map<String, Object?>)
         : null;
-    final hierarchicalDocumentSymbolSupportJson =
-        json['hierarchicalDocumentSymbolSupport'];
-    final hierarchicalDocumentSymbolSupport =
-        hierarchicalDocumentSymbolSupportJson as bool?;
     final tagSupportJson = json['tagSupport'];
     final tagSupport = tagSupportJson != null
         ? DocumentSymbolClientCapabilitiesTagSupport.fromJson(
             tagSupportJson as Map<String, Object?>)
         : null;
-    final labelSupportJson = json['labelSupport'];
-    final labelSupport = labelSupportJson as bool?;
     return DocumentSymbolClientCapabilities(
       dynamicRegistration: dynamicRegistration,
-      symbolKind: symbolKind,
       hierarchicalDocumentSymbolSupport: hierarchicalDocumentSymbolSupport,
-      tagSupport: tagSupport,
       labelSupport: labelSupport,
+      symbolKind: symbolKind,
+      tagSupport: tagSupport,
     );
   }
 
@@ -15984,19 +15316,19 @@
     if (dynamicRegistration != null) {
       __result['dynamicRegistration'] = dynamicRegistration;
     }
-    if (symbolKind != null) {
-      __result['symbolKind'] = symbolKind?.toJson();
-    }
     if (hierarchicalDocumentSymbolSupport != null) {
       __result['hierarchicalDocumentSymbolSupport'] =
           hierarchicalDocumentSymbolSupport;
     }
-    if (tagSupport != null) {
-      __result['tagSupport'] = tagSupport?.toJson();
-    }
     if (labelSupport != null) {
       __result['labelSupport'] = labelSupport;
     }
+    if (symbolKind != null) {
+      __result['symbolKind'] = symbolKind?.toJson();
+    }
+    if (tagSupport != null) {
+      __result['tagSupport'] = tagSupport?.toJson();
+    }
     return __result;
   }
 
@@ -16012,6 +15344,28 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('hierarchicalDocumentSymbolSupport');
+      try {
+        final hierarchicalDocumentSymbolSupport =
+            obj['hierarchicalDocumentSymbolSupport'];
+        if (hierarchicalDocumentSymbolSupport != null &&
+            !(hierarchicalDocumentSymbolSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('labelSupport');
+      try {
+        final labelSupport = obj['labelSupport'];
+        if (labelSupport != null && !(labelSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('symbolKind');
       try {
         final symbolKind = obj['symbolKind'];
@@ -16025,18 +15379,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('hierarchicalDocumentSymbolSupport');
-      try {
-        final hierarchicalDocumentSymbolSupport =
-            obj['hierarchicalDocumentSymbolSupport'];
-        if (hierarchicalDocumentSymbolSupport != null &&
-            !(hierarchicalDocumentSymbolSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('tagSupport');
       try {
         final tagSupport = obj['tagSupport'];
@@ -16050,16 +15392,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('labelSupport');
-      try {
-        final labelSupport = obj['labelSupport'];
-        if (labelSupport != null && !(labelSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DocumentSymbolClientCapabilities');
@@ -16072,11 +15404,11 @@
     if (other is DocumentSymbolClientCapabilities &&
         other.runtimeType == DocumentSymbolClientCapabilities) {
       return dynamicRegistration == other.dynamicRegistration &&
-          symbolKind == other.symbolKind &&
           hierarchicalDocumentSymbolSupport ==
               other.hierarchicalDocumentSymbolSupport &&
-          tagSupport == other.tagSupport &&
           labelSupport == other.labelSupport &&
+          symbolKind == other.symbolKind &&
+          tagSupport == other.tagSupport &&
           true;
     }
     return false;
@@ -16085,10 +15417,10 @@
   @override
   int get hashCode => Object.hash(
         dynamicRegistration,
-        symbolKind,
         hierarchicalDocumentSymbolSupport,
-        tagSupport,
         labelSupport,
+        symbolKind,
+        tagSupport,
       );
 
   @override
@@ -16347,11 +15679,19 @@
   );
 
   DocumentSymbolParams({
+    this.partialResultToken,
     required this.textDocument,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static DocumentSymbolParams fromJson(Map<String, Object?> json) {
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
@@ -16363,18 +15703,10 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DocumentSymbolParams(
+      partialResultToken: partialResultToken,
       textDocument: textDocument,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -16390,18 +15722,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -16431,17 +15774,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type DocumentSymbolParams');
@@ -16453,9 +15785,9 @@
   bool operator ==(Object other) {
     if (other is DocumentSymbolParams &&
         other.runtimeType == DocumentSymbolParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -16463,9 +15795,9 @@
 
   @override
   int get hashCode => Object.hash(
+        partialResultToken,
         textDocument,
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -16490,7 +15822,8 @@
   static DocumentSymbolRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final labelJson = json['label'];
     final label = labelJson as String?;
@@ -16505,7 +15838,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// A human-readable string that is shown when multiple outlines trees are
   /// shown for the same document.
@@ -16537,8 +15870,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -16576,7 +15909,7 @@
     if (other is DocumentSymbolRegistrationOptions &&
         other.runtimeType == DocumentSymbolRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           label == other.label &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -16841,16 +16174,16 @@
   );
 
   ExecuteCommandParams({
-    required this.command,
     this.arguments,
+    required this.command,
     this.workDoneToken,
   });
   static ExecuteCommandParams fromJson(Map<String, Object?> json) {
-    final commandJson = json['command'];
-    final command = commandJson as String;
     final argumentsJson = json['arguments'];
     final arguments =
         (argumentsJson as List<Object?>?)?.map((item) => item).toList();
+    final commandJson = json['command'];
+    final command = commandJson as String;
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -16860,8 +16193,8 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return ExecuteCommandParams(
-      command: command,
       arguments: arguments,
+      command: command,
       workDoneToken: workDoneToken,
     );
   }
@@ -16877,10 +16210,10 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['command'] = command;
     if (arguments != null) {
       __result['arguments'] = arguments;
     }
+    __result['command'] = command;
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -16889,6 +16222,18 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('arguments');
+      try {
+        final arguments = obj['arguments'];
+        if (arguments != null &&
+            !((arguments is List<Object?> &&
+                (arguments.every((item) => true))))) {
+          reporter.reportError('must be of type List<Object?>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('command');
       try {
         if (!obj.containsKey('command')) {
@@ -16907,18 +16252,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('arguments');
-      try {
-        final arguments = obj['arguments'];
-        if (arguments != null &&
-            !((arguments is List<Object?> &&
-                (arguments.every((item) => true))))) {
-          reporter.reportError('must be of type List<Object?>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -16941,9 +16274,9 @@
   bool operator ==(Object other) {
     if (other is ExecuteCommandParams &&
         other.runtimeType == ExecuteCommandParams) {
-      return command == other.command &&
-          listEqual(
+      return listEqual(
               arguments, other.arguments, (Object? a, Object? b) => a == b) &&
+          command == other.command &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -16952,8 +16285,8 @@
 
   @override
   int get hashCode => Object.hash(
-        command,
         lspHashCode(arguments),
+        command,
         workDoneToken,
       );
 
@@ -17378,17 +16711,17 @@
   );
 
   FileEvent({
-    required this.uri,
     required this.type,
+    required this.uri,
   });
   static FileEvent fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final typeJson = json['type'];
     final type = typeJson as int;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return FileEvent(
-      uri: uri,
       type: type,
+      uri: uri,
     );
   }
 
@@ -17400,31 +16733,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
     __result['type'] = type;
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final uri = obj['uri'];
-        if (uri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('type');
       try {
         if (!obj.containsKey('type')) {
@@ -17443,6 +16758,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type FileEvent');
@@ -17453,15 +16786,15 @@
   @override
   bool operator ==(Object other) {
     if (other is FileEvent && other.runtimeType == FileEvent) {
-      return uri == other.uri && type == other.type && true;
+      return type == other.type && uri == other.uri && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        uri,
         type,
+        uri,
       );
 
   @override
@@ -17478,18 +16811,18 @@
   );
 
   FileOperationFilter({
-    this.scheme,
     required this.pattern,
+    this.scheme,
   });
   static FileOperationFilter fromJson(Map<String, Object?> json) {
-    final schemeJson = json['scheme'];
-    final scheme = schemeJson as String?;
     final patternJson = json['pattern'];
     final pattern =
         FileOperationPattern.fromJson(patternJson as Map<String, Object?>);
+    final schemeJson = json['scheme'];
+    final scheme = schemeJson as String?;
     return FileOperationFilter(
-      scheme: scheme,
       pattern: pattern,
+      scheme: scheme,
     );
   }
 
@@ -17501,25 +16834,15 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['pattern'] = pattern.toJson();
     if (scheme != null) {
       __result['scheme'] = scheme;
     }
-    __result['pattern'] = pattern.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('scheme');
-      try {
-        final scheme = obj['scheme'];
-        if (scheme != null && !(scheme is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('pattern');
       try {
         if (!obj.containsKey('pattern')) {
@@ -17538,6 +16861,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('scheme');
+      try {
+        final scheme = obj['scheme'];
+        if (scheme != null && !(scheme is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type FileOperationFilter');
@@ -17549,15 +16882,15 @@
   bool operator ==(Object other) {
     if (other is FileOperationFilter &&
         other.runtimeType == FileOperationFilter) {
-      return scheme == other.scheme && pattern == other.pattern && true;
+      return pattern == other.pattern && scheme == other.scheme && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        scheme,
         pattern,
+        scheme,
       );
 
   @override
@@ -17884,17 +17217,17 @@
   );
 
   FileRename({
-    required this.oldUri,
     required this.newUri,
+    required this.oldUri,
   });
   static FileRename fromJson(Map<String, Object?> json) {
-    final oldUriJson = json['oldUri'];
-    final oldUri = oldUriJson as String;
     final newUriJson = json['newUri'];
     final newUri = newUriJson as String;
+    final oldUriJson = json['oldUri'];
+    final oldUri = oldUriJson as String;
     return FileRename(
-      oldUri: oldUri,
       newUri: newUri,
+      oldUri: oldUri,
     );
   }
 
@@ -17906,31 +17239,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['oldUri'] = oldUri;
     __result['newUri'] = newUri;
+    __result['oldUri'] = oldUri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('oldUri');
-      try {
-        if (!obj.containsKey('oldUri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final oldUri = obj['oldUri'];
-        if (oldUri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(oldUri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('newUri');
       try {
         if (!obj.containsKey('newUri')) {
@@ -17949,6 +17264,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('oldUri');
+      try {
+        if (!obj.containsKey('oldUri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final oldUri = obj['oldUri'];
+        if (oldUri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(oldUri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type FileRename');
@@ -17959,15 +17292,15 @@
   @override
   bool operator ==(Object other) {
     if (other is FileRename && other.runtimeType == FileRename) {
-      return oldUri == other.oldUri && newUri == other.newUri && true;
+      return newUri == other.newUri && oldUri == other.oldUri && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        oldUri,
         newUri,
+        oldUri,
       );
 
   @override
@@ -18085,34 +17418,34 @@
   );
 
   FoldingRange({
-    required this.startLine,
-    this.startCharacter,
-    required this.endLine,
-    this.endCharacter,
-    this.kind,
     this.collapsedText,
+    this.endCharacter,
+    required this.endLine,
+    this.kind,
+    this.startCharacter,
+    required this.startLine,
   });
   static FoldingRange fromJson(Map<String, Object?> json) {
-    final startLineJson = json['startLine'];
-    final startLine = startLineJson as int;
-    final startCharacterJson = json['startCharacter'];
-    final startCharacter = startCharacterJson as int?;
-    final endLineJson = json['endLine'];
-    final endLine = endLineJson as int;
+    final collapsedTextJson = json['collapsedText'];
+    final collapsedText = collapsedTextJson as String?;
     final endCharacterJson = json['endCharacter'];
     final endCharacter = endCharacterJson as int?;
+    final endLineJson = json['endLine'];
+    final endLine = endLineJson as int;
     final kindJson = json['kind'];
     final kind =
         kindJson != null ? FoldingRangeKind.fromJson(kindJson as String) : null;
-    final collapsedTextJson = json['collapsedText'];
-    final collapsedText = collapsedTextJson as String?;
+    final startCharacterJson = json['startCharacter'];
+    final startCharacter = startCharacterJson as int?;
+    final startLineJson = json['startLine'];
+    final startLine = startLineJson as int;
     return FoldingRange(
-      startLine: startLine,
-      startCharacter: startCharacter,
-      endLine: endLine,
-      endCharacter: endCharacter,
-      kind: kind,
       collapsedText: collapsedText,
+      endCharacter: endCharacter,
+      endLine: endLine,
+      kind: kind,
+      startCharacter: startCharacter,
+      startLine: startLine,
     );
   }
 
@@ -18148,47 +17481,39 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['startLine'] = startLine;
-    if (startCharacter != null) {
-      __result['startCharacter'] = startCharacter;
-    }
-    __result['endLine'] = endLine;
-    if (endCharacter != null) {
-      __result['endCharacter'] = endCharacter;
-    }
-    if (kind != null) {
-      __result['kind'] = kind?.toJson();
-    }
     if (collapsedText != null) {
       __result['collapsedText'] = collapsedText;
     }
+    if (endCharacter != null) {
+      __result['endCharacter'] = endCharacter;
+    }
+    __result['endLine'] = endLine;
+    if (kind != null) {
+      __result['kind'] = kind?.toJson();
+    }
+    if (startCharacter != null) {
+      __result['startCharacter'] = startCharacter;
+    }
+    __result['startLine'] = startLine;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('startLine');
+      reporter.push('collapsedText');
       try {
-        if (!obj.containsKey('startLine')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final startLine = obj['startLine'];
-        if (startLine == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(startLine is int)) {
-          reporter.reportError('must be of type int');
+        final collapsedText = obj['collapsedText'];
+        if (collapsedText != null && !(collapsedText is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('startCharacter');
+      reporter.push('endCharacter');
       try {
-        final startCharacter = obj['startCharacter'];
-        if (startCharacter != null && !(startCharacter is int)) {
+        final endCharacter = obj['endCharacter'];
+        if (endCharacter != null && !(endCharacter is int)) {
           reporter.reportError('must be of type int');
           return false;
         }
@@ -18213,16 +17538,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('endCharacter');
-      try {
-        final endCharacter = obj['endCharacter'];
-        if (endCharacter != null && !(endCharacter is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('kind');
       try {
         final kind = obj['kind'];
@@ -18233,11 +17548,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('collapsedText');
+      reporter.push('startCharacter');
       try {
-        final collapsedText = obj['collapsedText'];
-        if (collapsedText != null && !(collapsedText is String)) {
-          reporter.reportError('must be of type String');
+        final startCharacter = obj['startCharacter'];
+        if (startCharacter != null && !(startCharacter is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('startLine');
+      try {
+        if (!obj.containsKey('startLine')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final startLine = obj['startLine'];
+        if (startLine == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(startLine is int)) {
+          reporter.reportError('must be of type int');
           return false;
         }
       } finally {
@@ -18253,12 +17586,12 @@
   @override
   bool operator ==(Object other) {
     if (other is FoldingRange && other.runtimeType == FoldingRange) {
-      return startLine == other.startLine &&
-          startCharacter == other.startCharacter &&
-          endLine == other.endLine &&
+      return collapsedText == other.collapsedText &&
           endCharacter == other.endCharacter &&
+          endLine == other.endLine &&
           kind == other.kind &&
-          collapsedText == other.collapsedText &&
+          startCharacter == other.startCharacter &&
+          startLine == other.startLine &&
           true;
     }
     return false;
@@ -18266,12 +17599,12 @@
 
   @override
   int get hashCode => Object.hash(
-        startLine,
-        startCharacter,
-        endLine,
-        endCharacter,
-        kind,
         collapsedText,
+        endCharacter,
+        endLine,
+        kind,
+        startCharacter,
+        startLine,
       );
 
   @override
@@ -18286,34 +17619,34 @@
 
   FoldingRangeClientCapabilities({
     this.dynamicRegistration,
-    this.rangeLimit,
-    this.lineFoldingOnly,
-    this.foldingRangeKind,
     this.foldingRange,
+    this.foldingRangeKind,
+    this.lineFoldingOnly,
+    this.rangeLimit,
   });
   static FoldingRangeClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
-    final rangeLimitJson = json['rangeLimit'];
-    final rangeLimit = rangeLimitJson as int?;
-    final lineFoldingOnlyJson = json['lineFoldingOnly'];
-    final lineFoldingOnly = lineFoldingOnlyJson as bool?;
-    final foldingRangeKindJson = json['foldingRangeKind'];
-    final foldingRangeKind = foldingRangeKindJson != null
-        ? FoldingRangeClientCapabilitiesFoldingRangeKind.fromJson(
-            foldingRangeKindJson as Map<String, Object?>)
-        : null;
     final foldingRangeJson = json['foldingRange'];
     final foldingRange = foldingRangeJson != null
         ? FoldingRangeClientCapabilitiesFoldingRange.fromJson(
             foldingRangeJson as Map<String, Object?>)
         : null;
+    final foldingRangeKindJson = json['foldingRangeKind'];
+    final foldingRangeKind = foldingRangeKindJson != null
+        ? FoldingRangeClientCapabilitiesFoldingRangeKind.fromJson(
+            foldingRangeKindJson as Map<String, Object?>)
+        : null;
+    final lineFoldingOnlyJson = json['lineFoldingOnly'];
+    final lineFoldingOnly = lineFoldingOnlyJson as bool?;
+    final rangeLimitJson = json['rangeLimit'];
+    final rangeLimit = rangeLimitJson as int?;
     return FoldingRangeClientCapabilities(
       dynamicRegistration: dynamicRegistration,
-      rangeLimit: rangeLimit,
-      lineFoldingOnly: lineFoldingOnly,
-      foldingRangeKind: foldingRangeKind,
       foldingRange: foldingRange,
+      foldingRangeKind: foldingRangeKind,
+      lineFoldingOnly: lineFoldingOnly,
+      rangeLimit: rangeLimit,
     );
   }
 
@@ -18345,17 +17678,17 @@
     if (dynamicRegistration != null) {
       __result['dynamicRegistration'] = dynamicRegistration;
     }
-    if (rangeLimit != null) {
-      __result['rangeLimit'] = rangeLimit;
-    }
-    if (lineFoldingOnly != null) {
-      __result['lineFoldingOnly'] = lineFoldingOnly;
+    if (foldingRange != null) {
+      __result['foldingRange'] = foldingRange?.toJson();
     }
     if (foldingRangeKind != null) {
       __result['foldingRangeKind'] = foldingRangeKind?.toJson();
     }
-    if (foldingRange != null) {
-      __result['foldingRange'] = foldingRange?.toJson();
+    if (lineFoldingOnly != null) {
+      __result['lineFoldingOnly'] = lineFoldingOnly;
+    }
+    if (rangeLimit != null) {
+      __result['rangeLimit'] = rangeLimit;
     }
     return __result;
   }
@@ -18372,39 +17705,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('rangeLimit');
-      try {
-        final rangeLimit = obj['rangeLimit'];
-        if (rangeLimit != null && !(rangeLimit is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('lineFoldingOnly');
-      try {
-        final lineFoldingOnly = obj['lineFoldingOnly'];
-        if (lineFoldingOnly != null && !(lineFoldingOnly is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('foldingRangeKind');
-      try {
-        final foldingRangeKind = obj['foldingRangeKind'];
-        if (foldingRangeKind != null &&
-            !(FoldingRangeClientCapabilitiesFoldingRangeKind.canParse(
-                foldingRangeKind, reporter))) {
-          reporter.reportError(
-              'must be of type FoldingRangeClientCapabilitiesFoldingRangeKind');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('foldingRange');
       try {
         final foldingRange = obj['foldingRange'];
@@ -18418,6 +17718,39 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('foldingRangeKind');
+      try {
+        final foldingRangeKind = obj['foldingRangeKind'];
+        if (foldingRangeKind != null &&
+            !(FoldingRangeClientCapabilitiesFoldingRangeKind.canParse(
+                foldingRangeKind, reporter))) {
+          reporter.reportError(
+              'must be of type FoldingRangeClientCapabilitiesFoldingRangeKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('lineFoldingOnly');
+      try {
+        final lineFoldingOnly = obj['lineFoldingOnly'];
+        if (lineFoldingOnly != null && !(lineFoldingOnly is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('rangeLimit');
+      try {
+        final rangeLimit = obj['rangeLimit'];
+        if (rangeLimit != null && !(rangeLimit is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type FoldingRangeClientCapabilities');
@@ -18430,10 +17763,10 @@
     if (other is FoldingRangeClientCapabilities &&
         other.runtimeType == FoldingRangeClientCapabilities) {
       return dynamicRegistration == other.dynamicRegistration &&
-          rangeLimit == other.rangeLimit &&
-          lineFoldingOnly == other.lineFoldingOnly &&
-          foldingRangeKind == other.foldingRangeKind &&
           foldingRange == other.foldingRange &&
+          foldingRangeKind == other.foldingRangeKind &&
+          lineFoldingOnly == other.lineFoldingOnly &&
+          rangeLimit == other.rangeLimit &&
           true;
     }
     return false;
@@ -18442,10 +17775,10 @@
   @override
   int get hashCode => Object.hash(
         dynamicRegistration,
-        rangeLimit,
-        lineFoldingOnly,
-        foldingRangeKind,
         foldingRange,
+        foldingRangeKind,
+        lineFoldingOnly,
+        rangeLimit,
       );
 
   @override
@@ -18697,11 +18030,19 @@
   );
 
   FoldingRangeParams({
+    this.partialResultToken,
     required this.textDocument,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static FoldingRangeParams fromJson(Map<String, Object?> json) {
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
@@ -18713,18 +18054,10 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return FoldingRangeParams(
+      partialResultToken: partialResultToken,
       textDocument: textDocument,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -18740,18 +18073,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -18781,17 +18125,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type FoldingRangeParams');
@@ -18803,9 +18136,9 @@
   bool operator ==(Object other) {
     if (other is FoldingRangeParams &&
         other.runtimeType == FoldingRangeParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -18813,9 +18146,9 @@
 
   @override
   int get hashCode => Object.hash(
+        partialResultToken,
         textDocument,
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -18835,28 +18168,29 @@
 
   FoldingRangeRegistrationOptions({
     this.documentSelector,
-    this.workDoneProgress,
     this.id,
+    this.workDoneProgress,
   });
   static FoldingRangeRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return FoldingRangeRegistrationOptions(
       documentSelector: documentSelector,
-      workDoneProgress: workDoneProgress,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -18866,12 +18200,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
@@ -18887,18 +18221,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -18914,6 +18238,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type FoldingRangeRegistrationOptions');
@@ -18926,9 +18260,9 @@
     if (other is FoldingRangeRegistrationOptions &&
         other.runtimeType == FoldingRangeRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          workDoneProgress == other.workDoneProgress &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -18937,8 +18271,8 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
-        workDoneProgress,
         id,
+        workDoneProgress,
       );
 
   @override
@@ -18953,29 +18287,29 @@
   );
 
   FormattingOptions({
-    required this.tabSize,
-    required this.insertSpaces,
-    this.trimTrailingWhitespace,
     this.insertFinalNewline,
+    required this.insertSpaces,
+    required this.tabSize,
     this.trimFinalNewlines,
+    this.trimTrailingWhitespace,
   });
   static FormattingOptions fromJson(Map<String, Object?> json) {
-    final tabSizeJson = json['tabSize'];
-    final tabSize = tabSizeJson as int;
-    final insertSpacesJson = json['insertSpaces'];
-    final insertSpaces = insertSpacesJson as bool;
-    final trimTrailingWhitespaceJson = json['trimTrailingWhitespace'];
-    final trimTrailingWhitespace = trimTrailingWhitespaceJson as bool?;
     final insertFinalNewlineJson = json['insertFinalNewline'];
     final insertFinalNewline = insertFinalNewlineJson as bool?;
+    final insertSpacesJson = json['insertSpaces'];
+    final insertSpaces = insertSpacesJson as bool;
+    final tabSizeJson = json['tabSize'];
+    final tabSize = tabSizeJson as int;
     final trimFinalNewlinesJson = json['trimFinalNewlines'];
     final trimFinalNewlines = trimFinalNewlinesJson as bool?;
+    final trimTrailingWhitespaceJson = json['trimTrailingWhitespace'];
+    final trimTrailingWhitespace = trimTrailingWhitespaceJson as bool?;
     return FormattingOptions(
-      tabSize: tabSize,
-      insertSpaces: insertSpaces,
-      trimTrailingWhitespace: trimTrailingWhitespace,
       insertFinalNewline: insertFinalNewline,
+      insertSpaces: insertSpaces,
+      tabSize: tabSize,
       trimFinalNewlines: trimFinalNewlines,
+      trimTrailingWhitespace: trimTrailingWhitespace,
     );
   }
 
@@ -18999,35 +18333,27 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['tabSize'] = tabSize;
-    __result['insertSpaces'] = insertSpaces;
-    if (trimTrailingWhitespace != null) {
-      __result['trimTrailingWhitespace'] = trimTrailingWhitespace;
-    }
     if (insertFinalNewline != null) {
       __result['insertFinalNewline'] = insertFinalNewline;
     }
+    __result['insertSpaces'] = insertSpaces;
+    __result['tabSize'] = tabSize;
     if (trimFinalNewlines != null) {
       __result['trimFinalNewlines'] = trimFinalNewlines;
     }
+    if (trimTrailingWhitespace != null) {
+      __result['trimTrailingWhitespace'] = trimTrailingWhitespace;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('tabSize');
+      reporter.push('insertFinalNewline');
       try {
-        if (!obj.containsKey('tabSize')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final tabSize = obj['tabSize'];
-        if (tabSize == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(tabSize is int)) {
-          reporter.reportError('must be of type int');
+        final insertFinalNewline = obj['insertFinalNewline'];
+        if (insertFinalNewline != null && !(insertFinalNewline is bool)) {
+          reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
@@ -19051,22 +18377,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('trimTrailingWhitespace');
+      reporter.push('tabSize');
       try {
-        final trimTrailingWhitespace = obj['trimTrailingWhitespace'];
-        if (trimTrailingWhitespace != null &&
-            !(trimTrailingWhitespace is bool)) {
-          reporter.reportError('must be of type bool');
+        if (!obj.containsKey('tabSize')) {
+          reporter.reportError('must not be undefined');
           return false;
         }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('insertFinalNewline');
-      try {
-        final insertFinalNewline = obj['insertFinalNewline'];
-        if (insertFinalNewline != null && !(insertFinalNewline is bool)) {
-          reporter.reportError('must be of type bool');
+        final tabSize = obj['tabSize'];
+        if (tabSize == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(tabSize is int)) {
+          reporter.reportError('must be of type int');
           return false;
         }
       } finally {
@@ -19082,6 +18405,17 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('trimTrailingWhitespace');
+      try {
+        final trimTrailingWhitespace = obj['trimTrailingWhitespace'];
+        if (trimTrailingWhitespace != null &&
+            !(trimTrailingWhitespace is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type FormattingOptions');
@@ -19092,11 +18426,11 @@
   @override
   bool operator ==(Object other) {
     if (other is FormattingOptions && other.runtimeType == FormattingOptions) {
-      return tabSize == other.tabSize &&
+      return insertFinalNewline == other.insertFinalNewline &&
           insertSpaces == other.insertSpaces &&
-          trimTrailingWhitespace == other.trimTrailingWhitespace &&
-          insertFinalNewline == other.insertFinalNewline &&
+          tabSize == other.tabSize &&
           trimFinalNewlines == other.trimFinalNewlines &&
+          trimTrailingWhitespace == other.trimTrailingWhitespace &&
           true;
     }
     return false;
@@ -19104,11 +18438,11 @@
 
   @override
   int get hashCode => Object.hash(
-        tabSize,
-        insertSpaces,
-        trimTrailingWhitespace,
         insertFinalNewline,
+        insertSpaces,
+        tabSize,
         trimFinalNewlines,
+        trimTrailingWhitespace,
       );
 
   @override
@@ -19124,9 +18458,9 @@
   );
 
   FullDocumentDiagnosticReport({
+    required this.items,
     this.kind = 'full',
     this.resultId,
-    required this.items,
   }) {
     if (kind != 'full') {
       throw 'kind may only be the literal \'full\'';
@@ -19141,18 +18475,18 @@
         json, nullLspJsonReporter)) {
       return WorkspaceFullDocumentDiagnosticReport.fromJson(json);
     }
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
-    final resultIdJson = json['resultId'];
-    final resultId = resultIdJson as String?;
     final itemsJson = json['items'];
     final items = (itemsJson as List<Object?>)
         .map((item) => Diagnostic.fromJson(item as Map<String, Object?>))
         .toList();
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
+    final resultIdJson = json['resultId'];
+    final resultId = resultIdJson as String?;
     return FullDocumentDiagnosticReport(
+      items: items,
       kind: kind,
       resultId: resultId,
-      items: items,
     );
   }
 
@@ -19168,16 +18502,35 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['items'] = items.map((item) => item.toJson()).toList();
     __result['kind'] = kind;
     if (resultId != null) {
       __result['resultId'] = resultId;
     }
-    __result['items'] = items.map((item) => item.toJson()).toList();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('items');
+      try {
+        if (!obj.containsKey('items')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final items = obj['items'];
+        if (items == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!((items is List<Object?> &&
+            (items.every((item) => Diagnostic.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<Diagnostic>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -19206,25 +18559,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('items');
-      try {
-        if (!obj.containsKey('items')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final items = obj['items'];
-        if (items == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!((items is List<Object?> &&
-            (items.every((item) => Diagnostic.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<Diagnostic>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type FullDocumentDiagnosticReport');
@@ -19236,10 +18570,10 @@
   bool operator ==(Object other) {
     if (other is FullDocumentDiagnosticReport &&
         other.runtimeType == FullDocumentDiagnosticReport) {
-      return kind == other.kind &&
-          resultId == other.resultId &&
-          listEqual(
+      return listEqual(
               items, other.items, (Diagnostic a, Diagnostic b) => a == b) &&
+          kind == other.kind &&
+          resultId == other.resultId &&
           true;
     }
     return false;
@@ -19247,9 +18581,9 @@
 
   @override
   int get hashCode => Object.hash(
+        lspHashCode(items),
         kind,
         resultId,
-        lspHashCode(items),
       );
 
   @override
@@ -19269,12 +18603,12 @@
   });
   static Hover fromJson(Map<String, Object?> json) {
     final contentsJson = json['contents'];
-    final contents = contentsJson is String
-        ? Either2<String, MarkupContent>.t1(contentsJson)
-        : (MarkupContent.canParse(contentsJson, nullLspJsonReporter)
-            ? Either2<String, MarkupContent>.t2(
-                MarkupContent.fromJson(contentsJson as Map<String, Object?>))
-            : (throw '''$contentsJson was not one of (String, MarkupContent)'''));
+    final contents = MarkupContent.canParse(contentsJson, nullLspJsonReporter)
+        ? Either2<MarkupContent, String>.t1(
+            MarkupContent.fromJson(contentsJson as Map<String, Object?>))
+        : (contentsJson is String
+            ? Either2<MarkupContent, String>.t2(contentsJson)
+            : (throw '''$contentsJson was not one of (MarkupContent, String)'''));
     final rangeJson = json['range'];
     final range = rangeJson != null
         ? Range.fromJson(rangeJson as Map<String, Object?>)
@@ -19286,7 +18620,7 @@
   }
 
   /// The hover's content
-  final Either2<String, MarkupContent> contents;
+  final Either2<MarkupContent, String> contents;
 
   /// An optional range is a range inside a text document that is used to
   /// visualize a hover, e.g. by changing the background color.
@@ -19314,10 +18648,10 @@
           reporter.reportError('must not be null');
           return false;
         }
-        if (!((contents is String ||
-            MarkupContent.canParse(contents, reporter)))) {
+        if (!((MarkupContent.canParse(contents, reporter) ||
+            contents is String))) {
           reporter
-              .reportError('must be of type Either2<String, MarkupContent>');
+              .reportError('must be of type Either2<MarkupContent, String>');
           return false;
         }
       } finally {
@@ -19365,19 +18699,19 @@
   );
 
   HoverClientCapabilities({
-    this.dynamicRegistration,
     this.contentFormat,
+    this.dynamicRegistration,
   });
   static HoverClientCapabilities fromJson(Map<String, Object?> json) {
-    final dynamicRegistrationJson = json['dynamicRegistration'];
-    final dynamicRegistration = dynamicRegistrationJson as bool?;
     final contentFormatJson = json['contentFormat'];
     final contentFormat = (contentFormatJson as List<Object?>?)
         ?.map((item) => MarkupKind.fromJson(item as String))
         .toList();
+    final dynamicRegistrationJson = json['dynamicRegistration'];
+    final dynamicRegistration = dynamicRegistrationJson as bool?;
     return HoverClientCapabilities(
-      dynamicRegistration: dynamicRegistration,
       contentFormat: contentFormat,
+      dynamicRegistration: dynamicRegistration,
     );
   }
 
@@ -19391,28 +18725,18 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (dynamicRegistration != null) {
-      __result['dynamicRegistration'] = dynamicRegistration;
-    }
     if (contentFormat != null) {
       __result['contentFormat'] =
           contentFormat?.map((item) => item.toJson()).toList();
     }
+    if (dynamicRegistration != null) {
+      __result['dynamicRegistration'] = dynamicRegistration;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('dynamicRegistration');
-      try {
-        final dynamicRegistration = obj['dynamicRegistration'];
-        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('contentFormat');
       try {
         final contentFormat = obj['contentFormat'];
@@ -19426,6 +18750,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('dynamicRegistration');
+      try {
+        final dynamicRegistration = obj['dynamicRegistration'];
+        if (dynamicRegistration != null && !(dynamicRegistration is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type HoverClientCapabilities');
@@ -19437,9 +18771,9 @@
   bool operator ==(Object other) {
     if (other is HoverClientCapabilities &&
         other.runtimeType == HoverClientCapabilities) {
-      return dynamicRegistration == other.dynamicRegistration &&
-          listEqual(contentFormat, other.contentFormat,
+      return listEqual(contentFormat, other.contentFormat,
               (MarkupKind a, MarkupKind b) => a == b) &&
+          dynamicRegistration == other.dynamicRegistration &&
           true;
     }
     return false;
@@ -19447,8 +18781,8 @@
 
   @override
   int get hashCode => Object.hash(
-        dynamicRegistration,
         lspHashCode(contentFormat),
+        dynamicRegistration,
       );
 
   @override
@@ -19527,16 +18861,16 @@
   );
 
   HoverParams({
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
     this.workDoneToken,
   });
   static HoverParams fromJson(Map<String, Object?> json) {
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -19546,8 +18880,8 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return HoverParams(
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -19563,8 +18897,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -19573,24 +18907,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -19609,6 +18925,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -19630,8 +18964,8 @@
   @override
   bool operator ==(Object other) {
     if (other is HoverParams && other.runtimeType == HoverParams) {
-      return textDocument == other.textDocument &&
-          position == other.position &&
+      return position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -19640,8 +18974,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         position,
+        textDocument,
         workDoneToken,
       );
 
@@ -19656,17 +18990,17 @@
   );
 
   HoverParamsPosition({
-    required this.line,
     required this.character,
+    required this.line,
   });
   static HoverParamsPosition fromJson(Map<String, Object?> json) {
-    final lineJson = json['line'];
-    final line = lineJson as int;
     final characterJson = json['character'];
     final character = characterJson as int;
+    final lineJson = json['line'];
+    final line = lineJson as int;
     return HoverParamsPosition(
-      line: line,
       character: character,
+      line: line,
     );
   }
 
@@ -19675,31 +19009,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['line'] = line;
     __result['character'] = character;
+    __result['line'] = line;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('line');
-      try {
-        if (!obj.containsKey('line')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final line = obj['line'];
-        if (line == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(line is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('character');
       try {
         if (!obj.containsKey('character')) {
@@ -19718,6 +19034,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('line');
+      try {
+        if (!obj.containsKey('line')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final line = obj['line'];
+        if (line == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(line is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type HoverParamsPosition');
@@ -19729,15 +19063,15 @@
   bool operator ==(Object other) {
     if (other is HoverParamsPosition &&
         other.runtimeType == HoverParamsPosition) {
-      return line == other.line && character == other.character && true;
+      return character == other.character && line == other.line && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        line,
         character,
+        line,
       );
 
   @override
@@ -19758,7 +19092,8 @@
   static HoverRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -19770,7 +19105,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -19794,8 +19129,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -19823,7 +19158,7 @@
     if (other is HoverRegistrationOptions &&
         other.runtimeType == HoverRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -20075,25 +19410,12 @@
   );
 
   ImplementationParams({
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static ImplementationParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -20102,11 +19424,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return ImplementationParams(
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -20125,32 +19460,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -20174,22 +19502,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -20207,10 +19542,10 @@
   bool operator ==(Object other) {
     if (other is ImplementationParams &&
         other.runtimeType == ImplementationParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -20218,10 +19553,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -20241,28 +19576,29 @@
 
   ImplementationRegistrationOptions({
     this.documentSelector,
-    this.workDoneProgress,
     this.id,
+    this.workDoneProgress,
   });
   static ImplementationRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return ImplementationRegistrationOptions(
       documentSelector: documentSelector,
-      workDoneProgress: workDoneProgress,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -20272,12 +19608,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
@@ -20293,18 +19629,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -20320,6 +19646,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ImplementationRegistrationOptions');
@@ -20332,9 +19668,9 @@
     if (other is ImplementationRegistrationOptions &&
         other.runtimeType == ImplementationRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          workDoneProgress == other.workDoneProgress &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -20343,8 +19679,8 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
-        workDoneProgress,
         id,
+        workDoneProgress,
       );
 
   @override
@@ -20380,44 +19716,40 @@
   );
 
   InitializeParams({
-    this.processId,
+    required this.capabilities,
     this.clientInfo,
+    this.initializationOptions,
     this.locale,
+    this.processId,
     this.rootPath,
     this.rootUri,
-    this.initializationOptions,
-    required this.capabilities,
     this.trace,
-    this.workspaceFolders,
     this.workDoneToken,
+    this.workspaceFolders,
   });
   static InitializeParams fromJson(Map<String, Object?> json) {
-    final processIdJson = json['processId'];
-    final processId = processIdJson as int?;
+    final capabilitiesJson = json['capabilities'];
+    final capabilities =
+        ClientCapabilities.fromJson(capabilitiesJson as Map<String, Object?>);
     final clientInfoJson = json['clientInfo'];
     final clientInfo = clientInfoJson != null
         ? InitializeParamsClientInfo.fromJson(
             clientInfoJson as Map<String, Object?>)
         : null;
+    final initializationOptionsJson = json['initializationOptions'];
+    final initializationOptions = initializationOptionsJson;
     final localeJson = json['locale'];
     final locale = localeJson as String?;
+    final processIdJson = json['processId'];
+    final processId = processIdJson as int?;
     final rootPathJson = json['rootPath'];
     final rootPath = rootPathJson as String?;
     final rootUriJson = json['rootUri'];
     final rootUri = rootUriJson as String?;
-    final initializationOptionsJson = json['initializationOptions'];
-    final initializationOptions = initializationOptionsJson;
-    final capabilitiesJson = json['capabilities'];
-    final capabilities =
-        ClientCapabilities.fromJson(capabilitiesJson as Map<String, Object?>);
     final traceJson = json['trace'];
     final trace = const {null, 'off', 'messages', 'verbose'}.contains(traceJson)
         ? traceJson as String?
         : throw '''$traceJson was not one of (null, 'off', 'messages', 'verbose')''';
-    final workspaceFoldersJson = json['workspaceFolders'];
-    final workspaceFolders = (workspaceFoldersJson as List<Object?>?)
-        ?.map((item) => WorkspaceFolder.fromJson(item as Map<String, Object?>))
-        .toList();
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -20426,17 +19758,21 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
+    final workspaceFoldersJson = json['workspaceFolders'];
+    final workspaceFolders = (workspaceFoldersJson as List<Object?>?)
+        ?.map((item) => WorkspaceFolder.fromJson(item as Map<String, Object?>))
+        .toList();
     return InitializeParams(
-      processId: processId,
+      capabilities: capabilities,
       clientInfo: clientInfo,
+      initializationOptions: initializationOptions,
       locale: locale,
+      processId: processId,
       rootPath: rootPath,
       rootUri: rootUri,
-      initializationOptions: initializationOptions,
-      capabilities: capabilities,
       trace: trace,
-      workspaceFolders: workspaceFolders,
       workDoneToken: workDoneToken,
+      workspaceFolders: workspaceFolders,
     );
   }
 
@@ -20488,45 +19824,49 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['processId'] = processId;
+    __result['capabilities'] = capabilities.toJson();
     if (clientInfo != null) {
       __result['clientInfo'] = clientInfo?.toJson();
     }
+    if (initializationOptions != null) {
+      __result['initializationOptions'] = initializationOptions;
+    }
     if (locale != null) {
       __result['locale'] = locale;
     }
+    __result['processId'] = processId;
     if (rootPath != null) {
       __result['rootPath'] = rootPath;
     }
     __result['rootUri'] = rootUri;
-    if (initializationOptions != null) {
-      __result['initializationOptions'] = initializationOptions;
-    }
-    __result['capabilities'] = capabilities.toJson();
     if (trace != null) {
       __result['trace'] = trace;
     }
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     if (workspaceFolders != null) {
       __result['workspaceFolders'] =
           workspaceFolders?.map((item) => item.toJson()).toList();
     }
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('processId');
+      reporter.push('capabilities');
       try {
-        if (!obj.containsKey('processId')) {
+        if (!obj.containsKey('capabilities')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final processId = obj['processId'];
-        if (processId != null && !(processId is int)) {
-          reporter.reportError('must be of type int');
+        final capabilities = obj['capabilities'];
+        if (capabilities == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(ClientCapabilities.canParse(capabilities, reporter))) {
+          reporter.reportError('must be of type ClientCapabilities');
           return false;
         }
       } finally {
@@ -20553,6 +19893,20 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('processId');
+      try {
+        if (!obj.containsKey('processId')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final processId = obj['processId'];
+        if (processId != null && !(processId is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('rootPath');
       try {
         final rootPath = obj['rootPath'];
@@ -20577,24 +19931,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('capabilities');
-      try {
-        if (!obj.containsKey('capabilities')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final capabilities = obj['capabilities'];
-        if (capabilities == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(ClientCapabilities.canParse(capabilities, reporter))) {
-          reporter.reportError('must be of type ClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('trace');
       try {
         final trace = obj['trace'];
@@ -20607,6 +19943,17 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneToken');
+      try {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workspaceFolders');
       try {
         final workspaceFolders = obj['workspaceFolders'];
@@ -20620,17 +19967,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
-      try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type InitializeParams');
@@ -20641,17 +19977,17 @@
   @override
   bool operator ==(Object other) {
     if (other is InitializeParams && other.runtimeType == InitializeParams) {
-      return processId == other.processId &&
+      return capabilities == other.capabilities &&
           clientInfo == other.clientInfo &&
+          initializationOptions == other.initializationOptions &&
           locale == other.locale &&
+          processId == other.processId &&
           rootPath == other.rootPath &&
           rootUri == other.rootUri &&
-          initializationOptions == other.initializationOptions &&
-          capabilities == other.capabilities &&
           trace == other.trace &&
+          workDoneToken == other.workDoneToken &&
           listEqual(workspaceFolders, other.workspaceFolders,
               (WorkspaceFolder a, WorkspaceFolder b) => a == b) &&
-          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -20659,16 +19995,16 @@
 
   @override
   int get hashCode => Object.hash(
-        processId,
+        capabilities,
         clientInfo,
+        initializationOptions,
         locale,
+        processId,
         rootPath,
         rootUri,
-        initializationOptions,
-        capabilities,
         trace,
-        lspHashCode(workspaceFolders),
         workDoneToken,
+        lspHashCode(workspaceFolders),
       );
 
   @override
@@ -21006,32 +20342,38 @@
   );
 
   InlayHint({
-    required this.position,
-    required this.label,
+    this.data,
     this.kind,
-    this.textEdits,
-    this.tooltip,
+    required this.label,
     this.paddingLeft,
     this.paddingRight,
-    this.data,
+    required this.position,
+    this.textEdits,
+    this.tooltip,
   });
   static InlayHint fromJson(Map<String, Object?> json) {
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final labelJson = json['label'];
-    final label = labelJson is String
-        ? Either2<String, List<InlayHintLabelPart>>.t1(labelJson)
-        : ((labelJson is List<Object?> &&
-                (labelJson.every((item) =>
-                    InlayHintLabelPart.canParse(item, nullLspJsonReporter))))
-            ? Either2<String, List<InlayHintLabelPart>>.t2((labelJson)
-                .map((item) =>
-                    InlayHintLabelPart.fromJson(item as Map<String, Object?>))
-                .toList())
-            : (throw '''$labelJson was not one of (String, List<InlayHintLabelPart>)'''));
+    final dataJson = json['data'];
+    final data = dataJson;
     final kindJson = json['kind'];
     final kind =
         kindJson != null ? InlayHintKind.fromJson(kindJson as int) : null;
+    final labelJson = json['label'];
+    final label = (labelJson is List<Object?> &&
+            (labelJson.every((item) =>
+                InlayHintLabelPart.canParse(item, nullLspJsonReporter))))
+        ? Either2<List<InlayHintLabelPart>, String>.t1((labelJson)
+            .map((item) =>
+                InlayHintLabelPart.fromJson(item as Map<String, Object?>))
+            .toList())
+        : (labelJson is String
+            ? Either2<List<InlayHintLabelPart>, String>.t2(labelJson)
+            : (throw '''$labelJson was not one of (List<InlayHintLabelPart>, String)'''));
+    final paddingLeftJson = json['paddingLeft'];
+    final paddingLeft = paddingLeftJson as bool?;
+    final paddingRightJson = json['paddingRight'];
+    final paddingRight = paddingRightJson as bool?;
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textEditsJson = json['textEdits'];
     final textEdits = (textEditsJson as List<Object?>?)
         ?.map((item) => TextEdit.fromJson(item as Map<String, Object?>))
@@ -21039,27 +20381,21 @@
     final tooltipJson = json['tooltip'];
     final tooltip = tooltipJson == null
         ? null
-        : (tooltipJson is String
-            ? Either2<String, MarkupContent>.t1(tooltipJson)
-            : (MarkupContent.canParse(tooltipJson, nullLspJsonReporter)
-                ? Either2<String, MarkupContent>.t2(
-                    MarkupContent.fromJson(tooltipJson as Map<String, Object?>))
-                : (throw '''$tooltipJson was not one of (String, MarkupContent)''')));
-    final paddingLeftJson = json['paddingLeft'];
-    final paddingLeft = paddingLeftJson as bool?;
-    final paddingRightJson = json['paddingRight'];
-    final paddingRight = paddingRightJson as bool?;
-    final dataJson = json['data'];
-    final data = dataJson;
+        : (MarkupContent.canParse(tooltipJson, nullLspJsonReporter)
+            ? Either2<MarkupContent, String>.t1(
+                MarkupContent.fromJson(tooltipJson as Map<String, Object?>))
+            : (tooltipJson is String
+                ? Either2<MarkupContent, String>.t2(tooltipJson)
+                : (throw '''$tooltipJson was not one of (MarkupContent, String)''')));
     return InlayHint(
-      position: position,
-      label: label,
+      data: data,
       kind: kind,
-      textEdits: textEdits,
-      tooltip: tooltip,
+      label: label,
       paddingLeft: paddingLeft,
       paddingRight: paddingRight,
-      data: data,
+      position: position,
+      textEdits: textEdits,
+      tooltip: tooltip,
     );
   }
 
@@ -21075,7 +20411,7 @@
   /// InlayHintLabelPart label parts.
   ///
   /// *Note* that neither the string nor the label part can be empty.
-  final Either2<String, List<InlayHintLabelPart>> label;
+  final Either2<List<InlayHintLabelPart>, String> label;
 
   /// Render padding before the hint.
   ///
@@ -21108,48 +20444,40 @@
   ///
   /// Depending on the client capability `inlayHint.resolveSupport` clients
   /// might resolve this property late using the resolve request.
-  final Either2<String, MarkupContent>? tooltip;
+  final Either2<MarkupContent, String>? tooltip;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['position'] = position.toJson();
-    __result['label'] = label;
+    if (data != null) {
+      __result['data'] = data;
+    }
     if (kind != null) {
       __result['kind'] = kind?.toJson();
     }
-    if (textEdits != null) {
-      __result['textEdits'] = textEdits?.map((item) => item.toJson()).toList();
-    }
-    if (tooltip != null) {
-      __result['tooltip'] = tooltip;
-    }
+    __result['label'] = label;
     if (paddingLeft != null) {
       __result['paddingLeft'] = paddingLeft;
     }
     if (paddingRight != null) {
       __result['paddingRight'] = paddingRight;
     }
-    if (data != null) {
-      __result['data'] = data;
+    __result['position'] = position.toJson();
+    if (textEdits != null) {
+      __result['textEdits'] = textEdits?.map((item) => item.toJson()).toList();
+    }
+    if (tooltip != null) {
+      __result['tooltip'] = tooltip;
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('position');
+      reporter.push('kind');
       try {
-        if (!obj.containsKey('position')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final position = obj['position'];
-        if (position == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Position.canParse(position, reporter))) {
-          reporter.reportError('must be of type Position');
+        final kind = obj['kind'];
+        if (kind != null && !(InlayHintKind.canParse(kind, reporter))) {
+          reporter.reportError('must be of type InlayHintKind');
           return false;
         }
       } finally {
@@ -21166,48 +20494,12 @@
           reporter.reportError('must not be null');
           return false;
         }
-        if (!((label is String ||
-            (label is List<Object?> &&
-                (label.every((item) =>
-                    InlayHintLabelPart.canParse(item, reporter))))))) {
+        if (!(((label is List<Object?> &&
+                (label.every(
+                    (item) => InlayHintLabelPart.canParse(item, reporter)))) ||
+            label is String))) {
           reporter.reportError(
-              'must be of type Either2<String, List<InlayHintLabelPart>>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('kind');
-      try {
-        final kind = obj['kind'];
-        if (kind != null && !(InlayHintKind.canParse(kind, reporter))) {
-          reporter.reportError('must be of type InlayHintKind');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('textEdits');
-      try {
-        final textEdits = obj['textEdits'];
-        if (textEdits != null &&
-            !((textEdits is List<Object?> &&
-                (textEdits
-                    .every((item) => TextEdit.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<TextEdit>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('tooltip');
-      try {
-        final tooltip = obj['tooltip'];
-        if (tooltip != null &&
-            !((tooltip is String ||
-                MarkupContent.canParse(tooltip, reporter)))) {
-          reporter
-              .reportError('must be of type Either2<String, MarkupContent>');
+              'must be of type Either2<List<InlayHintLabelPart>, String>');
           return false;
         }
       } finally {
@@ -21233,6 +20525,50 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('position');
+      try {
+        if (!obj.containsKey('position')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final position = obj['position'];
+        if (position == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Position.canParse(position, reporter))) {
+          reporter.reportError('must be of type Position');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('textEdits');
+      try {
+        final textEdits = obj['textEdits'];
+        if (textEdits != null &&
+            !((textEdits is List<Object?> &&
+                (textEdits
+                    .every((item) => TextEdit.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextEdit>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('tooltip');
+      try {
+        final tooltip = obj['tooltip'];
+        if (tooltip != null &&
+            !((MarkupContent.canParse(tooltip, reporter) ||
+                tooltip is String))) {
+          reporter
+              .reportError('must be of type Either2<MarkupContent, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type InlayHint');
@@ -21243,15 +20579,15 @@
   @override
   bool operator ==(Object other) {
     if (other is InlayHint && other.runtimeType == InlayHint) {
-      return position == other.position &&
-          label == other.label &&
+      return data == other.data &&
           kind == other.kind &&
+          label == other.label &&
+          paddingLeft == other.paddingLeft &&
+          paddingRight == other.paddingRight &&
+          position == other.position &&
           listEqual(
               textEdits, other.textEdits, (TextEdit a, TextEdit b) => a == b) &&
           tooltip == other.tooltip &&
-          paddingLeft == other.paddingLeft &&
-          paddingRight == other.paddingRight &&
-          data == other.data &&
           true;
     }
     return false;
@@ -21259,14 +20595,14 @@
 
   @override
   int get hashCode => Object.hash(
-        position,
-        label,
+        data,
         kind,
-        lspHashCode(textEdits),
-        tooltip,
+        label,
         paddingLeft,
         paddingRight,
-        data,
+        position,
+        lspHashCode(textEdits),
+        tooltip,
       );
 
   @override
@@ -21484,36 +20820,36 @@
   );
 
   InlayHintLabelPart({
-    required this.value,
-    this.tooltip,
-    this.location,
     this.command,
+    this.location,
+    this.tooltip,
+    required this.value,
   });
   static InlayHintLabelPart fromJson(Map<String, Object?> json) {
-    final valueJson = json['value'];
-    final value = valueJson as String;
-    final tooltipJson = json['tooltip'];
-    final tooltip = tooltipJson == null
-        ? null
-        : (tooltipJson is String
-            ? Either2<String, MarkupContent>.t1(tooltipJson)
-            : (MarkupContent.canParse(tooltipJson, nullLspJsonReporter)
-                ? Either2<String, MarkupContent>.t2(
-                    MarkupContent.fromJson(tooltipJson as Map<String, Object?>))
-                : (throw '''$tooltipJson was not one of (String, MarkupContent)''')));
-    final locationJson = json['location'];
-    final location = locationJson != null
-        ? Location.fromJson(locationJson as Map<String, Object?>)
-        : null;
     final commandJson = json['command'];
     final command = commandJson != null
         ? Command.fromJson(commandJson as Map<String, Object?>)
         : null;
+    final locationJson = json['location'];
+    final location = locationJson != null
+        ? Location.fromJson(locationJson as Map<String, Object?>)
+        : null;
+    final tooltipJson = json['tooltip'];
+    final tooltip = tooltipJson == null
+        ? null
+        : (MarkupContent.canParse(tooltipJson, nullLspJsonReporter)
+            ? Either2<MarkupContent, String>.t1(
+                MarkupContent.fromJson(tooltipJson as Map<String, Object?>))
+            : (tooltipJson is String
+                ? Either2<MarkupContent, String>.t2(tooltipJson)
+                : (throw '''$tooltipJson was not one of (MarkupContent, String)''')));
+    final valueJson = json['value'];
+    final value = valueJson as String;
     return InlayHintLabelPart(
-      value: value,
-      tooltip: tooltip,
-      location: location,
       command: command,
+      location: location,
+      tooltip: tooltip,
+      value: value,
     );
   }
 
@@ -21538,28 +20874,61 @@
   /// The tooltip text when you hover over this label part. Depending on the
   /// client capability `inlayHint.resolveSupport` clients might resolve this
   /// property late using the resolve request.
-  final Either2<String, MarkupContent>? tooltip;
+  final Either2<MarkupContent, String>? tooltip;
 
   /// The value of this label part.
   final String value;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['value'] = value;
-    if (tooltip != null) {
-      __result['tooltip'] = tooltip;
+    if (command != null) {
+      __result['command'] = command?.toJson();
     }
     if (location != null) {
       __result['location'] = location?.toJson();
     }
-    if (command != null) {
-      __result['command'] = command?.toJson();
+    if (tooltip != null) {
+      __result['tooltip'] = tooltip;
     }
+    __result['value'] = value;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('command');
+      try {
+        final command = obj['command'];
+        if (command != null && !(Command.canParse(command, reporter))) {
+          reporter.reportError('must be of type Command');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('location');
+      try {
+        final location = obj['location'];
+        if (location != null && !(Location.canParse(location, reporter))) {
+          reporter.reportError('must be of type Location');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('tooltip');
+      try {
+        final tooltip = obj['tooltip'];
+        if (tooltip != null &&
+            !((MarkupContent.canParse(tooltip, reporter) ||
+                tooltip is String))) {
+          reporter
+              .reportError('must be of type Either2<MarkupContent, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('value');
       try {
         if (!obj.containsKey('value')) {
@@ -21578,39 +20947,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tooltip');
-      try {
-        final tooltip = obj['tooltip'];
-        if (tooltip != null &&
-            !((tooltip is String ||
-                MarkupContent.canParse(tooltip, reporter)))) {
-          reporter
-              .reportError('must be of type Either2<String, MarkupContent>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('location');
-      try {
-        final location = obj['location'];
-        if (location != null && !(Location.canParse(location, reporter))) {
-          reporter.reportError('must be of type Location');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('command');
-      try {
-        final command = obj['command'];
-        if (command != null && !(Command.canParse(command, reporter))) {
-          reporter.reportError('must be of type Command');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type InlayHintLabelPart');
@@ -21622,10 +20958,10 @@
   bool operator ==(Object other) {
     if (other is InlayHintLabelPart &&
         other.runtimeType == InlayHintLabelPart) {
-      return value == other.value &&
-          tooltip == other.tooltip &&
+      return command == other.command &&
           location == other.location &&
-          command == other.command &&
+          tooltip == other.tooltip &&
+          value == other.value &&
           true;
     }
     return false;
@@ -21633,10 +20969,10 @@
 
   @override
   int get hashCode => Object.hash(
-        value,
-        tooltip,
-        location,
         command,
+        location,
+        tooltip,
+        value,
       );
 
   @override
@@ -21743,16 +21079,16 @@
   );
 
   InlayHintParams({
-    required this.textDocument,
     required this.range,
+    required this.textDocument,
     this.workDoneToken,
   });
   static InlayHintParams fromJson(Map<String, Object?> json) {
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -21762,8 +21098,8 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return InlayHintParams(
-      textDocument: textDocument,
       range: range,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -21779,8 +21115,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['range'] = range.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -21789,24 +21125,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -21825,6 +21143,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -21846,8 +21182,8 @@
   @override
   bool operator ==(Object other) {
     if (other is InlayHintParams && other.runtimeType == InlayHintParams) {
-      return textDocument == other.textDocument &&
-          range == other.range &&
+      return range == other.range &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -21856,8 +21192,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         range,
+        textDocument,
         workDoneToken,
       );
 
@@ -21879,33 +21215,34 @@
   );
 
   InlayHintRegistrationOptions({
-    this.resolveProvider,
-    this.workDoneProgress,
     this.documentSelector,
     this.id,
+    this.resolveProvider,
+    this.workDoneProgress,
   });
   static InlayHintRegistrationOptions fromJson(Map<String, Object?> json) {
+    final documentSelectorJson = json['documentSelector'];
+    final documentSelector = (documentSelectorJson as List<Object?>?)
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        .toList();
+    final idJson = json['id'];
+    final id = idJson as String?;
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    final documentSelectorJson = json['documentSelector'];
-    final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
-        .toList();
-    final idJson = json['id'];
-    final id = idJson as String?;
     return InlayHintRegistrationOptions(
-      resolveProvider: resolveProvider,
-      workDoneProgress: workDoneProgress,
       documentSelector: documentSelector,
       id: id,
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -21918,21 +21255,48 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['documentSelector'] = documentSelector;
+    if (id != null) {
+      __result['id'] = id;
+    }
     if (resolveProvider != null) {
       __result['resolveProvider'] = resolveProvider;
     }
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
     }
-    __result['documentSelector'] = documentSelector;
-    if (id != null) {
-      __result['id'] = id;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('documentSelector');
+      try {
+        if (!obj.containsKey('documentSelector')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final documentSelector = obj['documentSelector'];
+        if (documentSelector != null &&
+            !((documentSelector is List<Object?> &&
+                (documentSelector.every(
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('id');
+      try {
+        final id = obj['id'];
+        if (id != null && !(id is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('resolveProvider');
       try {
         final resolveProvider = obj['resolveProvider'];
@@ -21953,33 +21317,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('documentSelector');
-      try {
-        if (!obj.containsKey('documentSelector')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final documentSelector = obj['documentSelector'];
-        if (documentSelector != null &&
-            !((documentSelector is List<Object?> &&
-                (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('id');
-      try {
-        final id = obj['id'];
-        if (id != null && !(id is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type InlayHintRegistrationOptions');
@@ -21991,11 +21328,11 @@
   bool operator ==(Object other) {
     if (other is InlayHintRegistrationOptions &&
         other.runtimeType == InlayHintRegistrationOptions) {
-      return resolveProvider == other.resolveProvider &&
-          workDoneProgress == other.workDoneProgress &&
-          listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+      return listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          resolveProvider == other.resolveProvider &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -22003,10 +21340,10 @@
 
   @override
   int get hashCode => Object.hash(
-        resolveProvider,
-        workDoneProgress,
         lspHashCode(documentSelector),
         id,
+        resolveProvider,
+        workDoneProgress,
       );
 
   @override
@@ -22238,17 +21575,17 @@
   );
 
   InlineValueEvaluatableExpression({
-    required this.range,
     this.expression,
+    required this.range,
   });
   static InlineValueEvaluatableExpression fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final expressionJson = json['expression'];
     final expression = expressionJson as String?;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return InlineValueEvaluatableExpression(
-      range: range,
       expression: expression,
+      range: range,
     );
   }
 
@@ -22261,15 +21598,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     if (expression != null) {
       __result['expression'] = expression;
     }
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('expression');
+      try {
+        final expression = obj['expression'];
+        if (expression != null && !(expression is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -22288,16 +21635,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('expression');
-      try {
-        final expression = obj['expression'];
-        if (expression != null && !(expression is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type InlineValueEvaluatableExpression');
@@ -22309,15 +21646,15 @@
   bool operator ==(Object other) {
     if (other is InlineValueEvaluatableExpression &&
         other.runtimeType == InlineValueEvaluatableExpression) {
-      return range == other.range && expression == other.expression && true;
+      return expression == other.expression && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         expression,
+        range,
       );
 
   @override
@@ -22400,20 +21737,20 @@
   );
 
   InlineValueParams({
-    required this.textDocument,
-    required this.range,
     required this.context,
+    required this.range,
+    required this.textDocument,
     this.workDoneToken,
   });
   static InlineValueParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final contextJson = json['context'];
     final context =
         InlineValueContext.fromJson(contextJson as Map<String, Object?>);
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -22423,9 +21760,9 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return InlineValueParams(
-      textDocument: textDocument,
-      range: range,
       context: context,
+      range: range,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -22445,9 +21782,9 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['range'] = range.toJson();
     __result['context'] = context.toJson();
+    __result['range'] = range.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -22456,19 +21793,19 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('context');
       try {
-        if (!obj.containsKey('textDocument')) {
+        if (!obj.containsKey('context')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
+        final context = obj['context'];
+        if (context == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        if (!(InlineValueContext.canParse(context, reporter))) {
+          reporter.reportError('must be of type InlineValueContext');
           return false;
         }
       } finally {
@@ -22492,19 +21829,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('context');
+      reporter.push('textDocument');
       try {
-        if (!obj.containsKey('context')) {
+        if (!obj.containsKey('textDocument')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final context = obj['context'];
-        if (context == null) {
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(InlineValueContext.canParse(context, reporter))) {
-          reporter.reportError('must be of type InlineValueContext');
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
@@ -22531,9 +21868,9 @@
   @override
   bool operator ==(Object other) {
     if (other is InlineValueParams && other.runtimeType == InlineValueParams) {
-      return textDocument == other.textDocument &&
+      return context == other.context &&
           range == other.range &&
-          context == other.context &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -22542,9 +21879,9 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        range,
         context,
+        range,
+        textDocument,
         workDoneToken,
       );
 
@@ -22566,29 +21903,30 @@
   );
 
   InlineValueRegistrationOptions({
-    this.workDoneProgress,
     this.documentSelector,
     this.id,
+    this.workDoneProgress,
   });
   static InlineValueRegistrationOptions fromJson(Map<String, Object?> json) {
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return InlineValueRegistrationOptions(
-      workDoneProgress: workDoneProgress,
       documentSelector: documentSelector,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -22597,28 +21935,18 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     __result['documentSelector'] = documentSelector;
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('documentSelector');
       try {
         if (!obj.containsKey('documentSelector')) {
@@ -22629,8 +21957,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -22646,6 +21974,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type InlineValueRegistrationOptions');
@@ -22657,10 +21995,10 @@
   bool operator ==(Object other) {
     if (other is InlineValueRegistrationOptions &&
         other.runtimeType == InlineValueRegistrationOptions) {
-      return workDoneProgress == other.workDoneProgress &&
-          listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+      return listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -22668,9 +22006,9 @@
 
   @override
   int get hashCode => Object.hash(
-        workDoneProgress,
         lspHashCode(documentSelector),
         id,
+        workDoneProgress,
       );
 
   @override
@@ -22790,21 +22128,21 @@
   );
 
   InlineValueVariableLookup({
+    required this.caseSensitiveLookup,
     required this.range,
     this.variableName,
-    required this.caseSensitiveLookup,
   });
   static InlineValueVariableLookup fromJson(Map<String, Object?> json) {
+    final caseSensitiveLookupJson = json['caseSensitiveLookup'];
+    final caseSensitiveLookup = caseSensitiveLookupJson as bool;
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final variableNameJson = json['variableName'];
     final variableName = variableNameJson as String?;
-    final caseSensitiveLookupJson = json['caseSensitiveLookup'];
-    final caseSensitiveLookup = caseSensitiveLookupJson as bool;
     return InlineValueVariableLookup(
+      caseSensitiveLookup: caseSensitiveLookup,
       range: range,
       variableName: variableName,
-      caseSensitiveLookup: caseSensitiveLookup,
     );
   }
 
@@ -22820,16 +22158,34 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['caseSensitiveLookup'] = caseSensitiveLookup;
     __result['range'] = range.toJson();
     if (variableName != null) {
       __result['variableName'] = variableName;
     }
-    __result['caseSensitiveLookup'] = caseSensitiveLookup;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('caseSensitiveLookup');
+      try {
+        if (!obj.containsKey('caseSensitiveLookup')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final caseSensitiveLookup = obj['caseSensitiveLookup'];
+        if (caseSensitiveLookup == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(caseSensitiveLookup is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -22858,24 +22214,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('caseSensitiveLookup');
-      try {
-        if (!obj.containsKey('caseSensitiveLookup')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final caseSensitiveLookup = obj['caseSensitiveLookup'];
-        if (caseSensitiveLookup == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(caseSensitiveLookup is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type InlineValueVariableLookup');
@@ -22887,9 +22225,9 @@
   bool operator ==(Object other) {
     if (other is InlineValueVariableLookup &&
         other.runtimeType == InlineValueVariableLookup) {
-      return range == other.range &&
+      return caseSensitiveLookup == other.caseSensitiveLookup &&
+          range == other.range &&
           variableName == other.variableName &&
-          caseSensitiveLookup == other.caseSensitiveLookup &&
           true;
     }
     return false;
@@ -22897,9 +22235,9 @@
 
   @override
   int get hashCode => Object.hash(
+        caseSensitiveLookup,
         range,
         variableName,
-        caseSensitiveLookup,
       );
 
   @override
@@ -22988,20 +22326,20 @@
   );
 
   InsertReplaceEdit({
-    required this.newText,
     required this.insert,
+    required this.newText,
     required this.replace,
   });
   static InsertReplaceEdit fromJson(Map<String, Object?> json) {
-    final newTextJson = json['newText'];
-    final newText = newTextJson as String;
     final insertJson = json['insert'];
     final insert = Range.fromJson(insertJson as Map<String, Object?>);
+    final newTextJson = json['newText'];
+    final newText = newTextJson as String;
     final replaceJson = json['replace'];
     final replace = Range.fromJson(replaceJson as Map<String, Object?>);
     return InsertReplaceEdit(
-      newText: newText,
       insert: insert,
+      newText: newText,
       replace: replace,
     );
   }
@@ -23017,32 +22355,14 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['newText'] = newText;
     __result['insert'] = insert.toJson();
+    __result['newText'] = newText;
     __result['replace'] = replace.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('newText');
-      try {
-        if (!obj.containsKey('newText')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final newText = obj['newText'];
-        if (newText == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(newText is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('insert');
       try {
         if (!obj.containsKey('insert')) {
@@ -23061,6 +22381,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('newText');
+      try {
+        if (!obj.containsKey('newText')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final newText = obj['newText'];
+        if (newText == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(newText is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('replace');
       try {
         if (!obj.containsKey('replace')) {
@@ -23089,8 +22427,8 @@
   @override
   bool operator ==(Object other) {
     if (other is InsertReplaceEdit && other.runtimeType == InsertReplaceEdit) {
-      return newText == other.newText &&
-          insert == other.insert &&
+      return insert == other.insert &&
+          newText == other.newText &&
           replace == other.replace &&
           true;
     }
@@ -23099,8 +22437,8 @@
 
   @override
   int get hashCode => Object.hash(
-        newText,
         insert,
+        newText,
         replace,
       );
 
@@ -23326,16 +22664,16 @@
   );
 
   LinkedEditingRangeParams({
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
     this.workDoneToken,
   });
   static LinkedEditingRangeParams fromJson(Map<String, Object?> json) {
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -23345,8 +22683,8 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return LinkedEditingRangeParams(
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -23362,8 +22700,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -23372,24 +22710,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -23408,6 +22728,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -23430,8 +22768,8 @@
   bool operator ==(Object other) {
     if (other is LinkedEditingRangeParams &&
         other.runtimeType == LinkedEditingRangeParams) {
-      return textDocument == other.textDocument &&
-          position == other.position &&
+      return position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -23440,8 +22778,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         position,
+        textDocument,
         workDoneToken,
       );
 
@@ -23462,29 +22800,30 @@
 
   LinkedEditingRangeRegistrationOptions({
     this.documentSelector,
-    this.workDoneProgress,
     this.id,
+    this.workDoneProgress,
   });
   static LinkedEditingRangeRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return LinkedEditingRangeRegistrationOptions(
       documentSelector: documentSelector,
-      workDoneProgress: workDoneProgress,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -23494,12 +22833,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
@@ -23515,18 +22854,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -23542,6 +22871,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter
@@ -23555,9 +22894,9 @@
     if (other is LinkedEditingRangeRegistrationOptions &&
         other.runtimeType == LinkedEditingRangeRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          workDoneProgress == other.workDoneProgress &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -23566,8 +22905,8 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
-        workDoneProgress,
         id,
+        workDoneProgress,
       );
 
   @override
@@ -23682,17 +23021,17 @@
   );
 
   Location({
-    required this.uri,
     required this.range,
+    required this.uri,
   });
   static Location fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return Location(
-      uri: uri,
       range: range,
+      uri: uri,
     );
   }
 
@@ -23701,31 +23040,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
     __result['range'] = range.toJson();
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final uri = obj['uri'];
-        if (uri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -23744,6 +23065,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type Location');
@@ -23754,15 +23093,15 @@
   @override
   bool operator ==(Object other) {
     if (other is Location && other.runtimeType == Location) {
-      return uri == other.uri && range == other.range && true;
+      return range == other.range && uri == other.uri && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        uri,
         range,
+        uri,
       );
 
   @override
@@ -23777,27 +23116,27 @@
 
   LocationLink({
     this.originSelectionRange,
-    required this.targetUri,
     required this.targetRange,
     required this.targetSelectionRange,
+    required this.targetUri,
   });
   static LocationLink fromJson(Map<String, Object?> json) {
     final originSelectionRangeJson = json['originSelectionRange'];
     final originSelectionRange = originSelectionRangeJson != null
         ? Range.fromJson(originSelectionRangeJson as Map<String, Object?>)
         : null;
-    final targetUriJson = json['targetUri'];
-    final targetUri = targetUriJson as String;
     final targetRangeJson = json['targetRange'];
     final targetRange = Range.fromJson(targetRangeJson as Map<String, Object?>);
     final targetSelectionRangeJson = json['targetSelectionRange'];
     final targetSelectionRange =
         Range.fromJson(targetSelectionRangeJson as Map<String, Object?>);
+    final targetUriJson = json['targetUri'];
+    final targetUri = targetUriJson as String;
     return LocationLink(
       originSelectionRange: originSelectionRange,
-      targetUri: targetUri,
       targetRange: targetRange,
       targetSelectionRange: targetSelectionRange,
+      targetUri: targetUri,
     );
   }
 
@@ -23826,9 +23165,9 @@
     if (originSelectionRange != null) {
       __result['originSelectionRange'] = originSelectionRange?.toJson();
     }
-    __result['targetUri'] = targetUri;
     __result['targetRange'] = targetRange.toJson();
     __result['targetSelectionRange'] = targetSelectionRange.toJson();
+    __result['targetUri'] = targetUri;
     return __result;
   }
 
@@ -23845,24 +23184,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('targetUri');
-      try {
-        if (!obj.containsKey('targetUri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final targetUri = obj['targetUri'];
-        if (targetUri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(targetUri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('targetRange');
       try {
         if (!obj.containsKey('targetRange')) {
@@ -23899,6 +23220,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('targetUri');
+      try {
+        if (!obj.containsKey('targetUri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final targetUri = obj['targetUri'];
+        if (targetUri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(targetUri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type LocationLink');
@@ -23910,9 +23249,9 @@
   bool operator ==(Object other) {
     if (other is LocationLink && other.runtimeType == LocationLink) {
       return originSelectionRange == other.originSelectionRange &&
-          targetUri == other.targetUri &&
           targetRange == other.targetRange &&
           targetSelectionRange == other.targetSelectionRange &&
+          targetUri == other.targetUri &&
           true;
     }
     return false;
@@ -23921,9 +23260,9 @@
   @override
   int get hashCode => Object.hash(
         originSelectionRange,
-        targetUri,
         targetRange,
         targetSelectionRange,
+        targetUri,
       );
 
   @override
@@ -23937,17 +23276,17 @@
   );
 
   LogMessageParams({
-    required this.type,
     required this.message,
+    required this.type,
   });
   static LogMessageParams fromJson(Map<String, Object?> json) {
-    final typeJson = json['type'];
-    final type = MessageType.fromJson(typeJson as int);
     final messageJson = json['message'];
     final message = messageJson as String;
+    final typeJson = json['type'];
+    final type = MessageType.fromJson(typeJson as int);
     return LogMessageParams(
-      type: type,
       message: message,
+      type: type,
     );
   }
 
@@ -23959,31 +23298,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['type'] = type.toJson();
     __result['message'] = message;
+    __result['type'] = type.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('type');
-      try {
-        if (!obj.containsKey('type')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final type = obj['type'];
-        if (type == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(MessageType.canParse(type, reporter))) {
-          reporter.reportError('must be of type MessageType');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('message');
       try {
         if (!obj.containsKey('message')) {
@@ -24002,6 +23323,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('type');
+      try {
+        if (!obj.containsKey('type')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final type = obj['type'];
+        if (type == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(MessageType.canParse(type, reporter))) {
+          reporter.reportError('must be of type MessageType');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type LogMessageParams');
@@ -24012,15 +23351,15 @@
   @override
   bool operator ==(Object other) {
     if (other is LogMessageParams && other.runtimeType == LogMessageParams) {
-      return type == other.type && message == other.message && true;
+      return message == other.message && type == other.type && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        type,
         message,
+        type,
       );
 
   @override
@@ -24128,23 +23467,23 @@
   );
 
   MarkdownClientCapabilities({
+    this.allowedTags,
     required this.parser,
     this.version,
-    this.allowedTags,
   });
   static MarkdownClientCapabilities fromJson(Map<String, Object?> json) {
-    final parserJson = json['parser'];
-    final parser = parserJson as String;
-    final versionJson = json['version'];
-    final version = versionJson as String?;
     final allowedTagsJson = json['allowedTags'];
     final allowedTags = (allowedTagsJson as List<Object?>?)
         ?.map((item) => item as String)
         .toList();
+    final parserJson = json['parser'];
+    final parser = parserJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as String?;
     return MarkdownClientCapabilities(
+      allowedTags: allowedTags,
       parser: parser,
       version: version,
-      allowedTags: allowedTags,
     );
   }
 
@@ -24160,18 +23499,30 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (allowedTags != null) {
+      __result['allowedTags'] = allowedTags;
+    }
     __result['parser'] = parser;
     if (version != null) {
       __result['version'] = version;
     }
-    if (allowedTags != null) {
-      __result['allowedTags'] = allowedTags;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('allowedTags');
+      try {
+        final allowedTags = obj['allowedTags'];
+        if (allowedTags != null &&
+            !((allowedTags is List<Object?> &&
+                (allowedTags.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('parser');
       try {
         if (!obj.containsKey('parser')) {
@@ -24200,18 +23551,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('allowedTags');
-      try {
-        final allowedTags = obj['allowedTags'];
-        if (allowedTags != null &&
-            !((allowedTags is List<Object?> &&
-                (allowedTags.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type MarkdownClientCapabilities');
@@ -24223,10 +23562,10 @@
   bool operator ==(Object other) {
     if (other is MarkdownClientCapabilities &&
         other.runtimeType == MarkdownClientCapabilities) {
-      return parser == other.parser &&
-          version == other.version &&
-          listEqual(
+      return listEqual(
               allowedTags, other.allowedTags, (String a, String b) => a == b) &&
+          parser == other.parser &&
+          version == other.version &&
           true;
     }
     return false;
@@ -24234,9 +23573,9 @@
 
   @override
   int get hashCode => Object.hash(
+        lspHashCode(allowedTags),
         parser,
         version,
-        lspHashCode(allowedTags),
       );
 
   @override
@@ -24404,8 +23743,8 @@
   );
 
   Message({
-    required this.jsonrpc,
     this.clientRequestTime,
+    required this.jsonrpc,
   });
   static Message fromJson(Map<String, Object?> json) {
     if (RequestMessage.canParse(json, nullLspJsonReporter)) {
@@ -24417,13 +23756,13 @@
     if (NotificationMessage.canParse(json, nullLspJsonReporter)) {
       return NotificationMessage.fromJson(json);
     }
-    final jsonrpcJson = json['jsonrpc'];
-    final jsonrpc = jsonrpcJson as String;
     final clientRequestTimeJson = json['clientRequestTime'];
     final clientRequestTime = clientRequestTimeJson as int?;
+    final jsonrpcJson = json['jsonrpc'];
+    final jsonrpc = jsonrpcJson as String;
     return Message(
-      jsonrpc: jsonrpc,
       clientRequestTime: clientRequestTime,
+      jsonrpc: jsonrpc,
     );
   }
 
@@ -24432,15 +23771,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['jsonrpc'] = jsonrpc;
     if (clientRequestTime != null) {
       __result['clientRequestTime'] = clientRequestTime;
     }
+    __result['jsonrpc'] = jsonrpc;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('clientRequestTime');
+      try {
+        final clientRequestTime = obj['clientRequestTime'];
+        if (clientRequestTime != null && !(clientRequestTime is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('jsonrpc');
       try {
         if (!obj.containsKey('jsonrpc')) {
@@ -24459,16 +23808,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('clientRequestTime');
-      try {
-        final clientRequestTime = obj['clientRequestTime'];
-        if (clientRequestTime != null && !(clientRequestTime is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type Message');
@@ -24479,8 +23818,8 @@
   @override
   bool operator ==(Object other) {
     if (other is Message && other.runtimeType == Message) {
-      return jsonrpc == other.jsonrpc &&
-          clientRequestTime == other.clientRequestTime &&
+      return clientRequestTime == other.clientRequestTime &&
+          jsonrpc == other.jsonrpc &&
           true;
     }
     return false;
@@ -24488,8 +23827,8 @@
 
   @override
   int get hashCode => Object.hash(
-        jsonrpc,
         clientRequestTime,
+        jsonrpc,
       );
 
   @override
@@ -24925,26 +24264,26 @@
   );
 
   Moniker({
-    required this.scheme,
     required this.identifier,
-    required this.unique,
     this.kind,
+    required this.scheme,
+    required this.unique,
   });
   static Moniker fromJson(Map<String, Object?> json) {
-    final schemeJson = json['scheme'];
-    final scheme = schemeJson as String;
     final identifierJson = json['identifier'];
     final identifier = identifierJson as String;
-    final uniqueJson = json['unique'];
-    final unique = UniquenessLevel.fromJson(uniqueJson as String);
     final kindJson = json['kind'];
     final kind =
         kindJson != null ? MonikerKind.fromJson(kindJson as String) : null;
+    final schemeJson = json['scheme'];
+    final scheme = schemeJson as String;
+    final uniqueJson = json['unique'];
+    final unique = UniquenessLevel.fromJson(uniqueJson as String);
     return Moniker(
-      scheme: scheme,
       identifier: identifier,
-      unique: unique,
       kind: kind,
+      scheme: scheme,
+      unique: unique,
     );
   }
 
@@ -24963,35 +24302,17 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['scheme'] = scheme;
     __result['identifier'] = identifier;
-    __result['unique'] = unique.toJson();
     if (kind != null) {
       __result['kind'] = kind?.toJson();
     }
+    __result['scheme'] = scheme;
+    __result['unique'] = unique.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('scheme');
-      try {
-        if (!obj.containsKey('scheme')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final scheme = obj['scheme'];
-        if (scheme == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(scheme is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('identifier');
       try {
         if (!obj.containsKey('identifier')) {
@@ -25010,6 +24331,34 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('kind');
+      try {
+        final kind = obj['kind'];
+        if (kind != null && !(MonikerKind.canParse(kind, reporter))) {
+          reporter.reportError('must be of type MonikerKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('scheme');
+      try {
+        if (!obj.containsKey('scheme')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final scheme = obj['scheme'];
+        if (scheme == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(scheme is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('unique');
       try {
         if (!obj.containsKey('unique')) {
@@ -25028,16 +24377,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('kind');
-      try {
-        final kind = obj['kind'];
-        if (kind != null && !(MonikerKind.canParse(kind, reporter))) {
-          reporter.reportError('must be of type MonikerKind');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type Moniker');
@@ -25048,10 +24387,10 @@
   @override
   bool operator ==(Object other) {
     if (other is Moniker && other.runtimeType == Moniker) {
-      return scheme == other.scheme &&
-          identifier == other.identifier &&
-          unique == other.unique &&
+      return identifier == other.identifier &&
           kind == other.kind &&
+          scheme == other.scheme &&
+          unique == other.unique &&
           true;
     }
     return false;
@@ -25059,10 +24398,10 @@
 
   @override
   int get hashCode => Object.hash(
-        scheme,
         identifier,
-        unique,
         kind,
+        scheme,
+        unique,
       );
 
   @override
@@ -25243,25 +24582,12 @@
   );
 
   MonikerParams({
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static MonikerParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -25270,11 +24596,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return MonikerParams(
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -25293,32 +24632,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -25342,22 +24674,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -25374,10 +24713,10 @@
   @override
   bool operator ==(Object other) {
     if (other is MonikerParams && other.runtimeType == MonikerParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -25385,10 +24724,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -25409,7 +24748,8 @@
   static MonikerRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -25421,7 +24761,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -25445,8 +24785,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -25474,7 +24814,7 @@
     if (other is MonikerRegistrationOptions &&
         other.runtimeType == MonikerRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -25504,28 +24844,28 @@
   );
 
   NotebookCell({
-    required this.kind,
     required this.document,
-    this.metadata,
     this.executionSummary,
+    required this.kind,
+    this.metadata,
   });
   static NotebookCell fromJson(Map<String, Object?> json) {
-    final kindJson = json['kind'];
-    final kind = NotebookCellKind.fromJson(kindJson as int);
     final documentJson = json['document'];
     final document = documentJson as String;
-    final metadataJson = json['metadata'];
-    final metadata = metadataJson;
     final executionSummaryJson = json['executionSummary'];
     final executionSummary = executionSummaryJson != null
         ? ExecutionSummary.fromJson(
             executionSummaryJson as Map<String, Object?>)
         : null;
+    final kindJson = json['kind'];
+    final kind = NotebookCellKind.fromJson(kindJson as int);
+    final metadataJson = json['metadata'];
+    final metadata = metadataJson;
     return NotebookCell(
-      kind: kind,
       document: document,
-      metadata: metadata,
       executionSummary: executionSummary,
+      kind: kind,
+      metadata: metadata,
     );
   }
 
@@ -25543,37 +24883,19 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['kind'] = kind.toJson();
     __result['document'] = document;
-    if (metadata != null) {
-      __result['metadata'] = metadata;
-    }
     if (executionSummary != null) {
       __result['executionSummary'] = executionSummary?.toJson();
     }
+    __result['kind'] = kind.toJson();
+    if (metadata != null) {
+      __result['metadata'] = metadata;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('kind');
-      try {
-        if (!obj.containsKey('kind')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final kind = obj['kind'];
-        if (kind == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(NotebookCellKind.canParse(kind, reporter))) {
-          reporter.reportError('must be of type NotebookCellKind');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('document');
       try {
         if (!obj.containsKey('document')) {
@@ -25603,6 +24925,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('kind');
+      try {
+        if (!obj.containsKey('kind')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final kind = obj['kind'];
+        if (kind == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(NotebookCellKind.canParse(kind, reporter))) {
+          reporter.reportError('must be of type NotebookCellKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type NotebookCell');
@@ -25613,10 +24953,10 @@
   @override
   bool operator ==(Object other) {
     if (other is NotebookCell && other.runtimeType == NotebookCell) {
-      return kind == other.kind &&
-          document == other.document &&
-          metadata == other.metadata &&
+      return document == other.document &&
           executionSummary == other.executionSummary &&
+          kind == other.kind &&
+          metadata == other.metadata &&
           true;
     }
     return false;
@@ -25624,10 +24964,10 @@
 
   @override
   int get hashCode => Object.hash(
-        kind,
         document,
-        metadata,
         executionSummary,
+        kind,
+        metadata,
       );
 
   @override
@@ -25643,23 +24983,23 @@
   );
 
   NotebookCellArrayChange({
-    required this.start,
-    required this.deleteCount,
     this.cells,
+    required this.deleteCount,
+    required this.start,
   });
   static NotebookCellArrayChange fromJson(Map<String, Object?> json) {
-    final startJson = json['start'];
-    final start = startJson as int;
-    final deleteCountJson = json['deleteCount'];
-    final deleteCount = deleteCountJson as int;
     final cellsJson = json['cells'];
     final cells = (cellsJson as List<Object?>?)
         ?.map((item) => NotebookCell.fromJson(item as Map<String, Object?>))
         .toList();
+    final deleteCountJson = json['deleteCount'];
+    final deleteCount = deleteCountJson as int;
+    final startJson = json['start'];
+    final start = startJson as int;
     return NotebookCellArrayChange(
-      start: start,
-      deleteCount: deleteCount,
       cells: cells,
+      deleteCount: deleteCount,
+      start: start,
     );
   }
 
@@ -25674,29 +25014,24 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['start'] = start;
-    __result['deleteCount'] = deleteCount;
     if (cells != null) {
       __result['cells'] = cells?.map((item) => item.toJson()).toList();
     }
+    __result['deleteCount'] = deleteCount;
+    __result['start'] = start;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('start');
+      reporter.push('cells');
       try {
-        if (!obj.containsKey('start')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final start = obj['start'];
-        if (start == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(start is int)) {
-          reporter.reportError('must be of type int');
+        final cells = obj['cells'];
+        if (cells != null &&
+            !((cells is List<Object?> &&
+                (cells.every(
+                    (item) => NotebookCell.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<NotebookCell>');
           return false;
         }
       } finally {
@@ -25720,14 +25055,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('cells');
+      reporter.push('start');
       try {
-        final cells = obj['cells'];
-        if (cells != null &&
-            !((cells is List<Object?> &&
-                (cells.every(
-                    (item) => NotebookCell.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<NotebookCell>');
+        if (!obj.containsKey('start')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final start = obj['start'];
+        if (start == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(start is int)) {
+          reporter.reportError('must be of type int');
           return false;
         }
       } finally {
@@ -25744,10 +25084,10 @@
   bool operator ==(Object other) {
     if (other is NotebookCellArrayChange &&
         other.runtimeType == NotebookCellArrayChange) {
-      return start == other.start &&
-          deleteCount == other.deleteCount &&
-          listEqual(
+      return listEqual(
               cells, other.cells, (NotebookCell a, NotebookCell b) => a == b) &&
+          deleteCount == other.deleteCount &&
+          start == other.start &&
           true;
     }
     return false;
@@ -25755,9 +25095,9 @@
 
   @override
   int get hashCode => Object.hash(
-        start,
-        deleteCount,
         lspHashCode(cells),
+        deleteCount,
+        start,
       );
 
   @override
@@ -25803,34 +25143,31 @@
   );
 
   NotebookCellTextDocumentFilter({
-    required this.notebook,
     this.language,
+    required this.notebook,
   });
   static NotebookCellTextDocumentFilter fromJson(Map<String, Object?> json) {
-    final notebookJson = json['notebook'];
-    final notebook = notebookJson is String
-        ? Either2<String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>>.t1(
-            notebookJson)
-        : ((NotebookDocumentFilter1.canParse(notebookJson, nullLspJsonReporter) ||
-                NotebookDocumentFilter2.canParse(
-                    notebookJson, nullLspJsonReporter) ||
-                NotebookDocumentFilter3.canParse(
-                    notebookJson, nullLspJsonReporter))
-            ? Either2<String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>>.t2(
-                NotebookDocumentFilter1.canParse(notebookJson, nullLspJsonReporter)
-                    ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t1(
-                        NotebookDocumentFilter1.fromJson(
-                            notebookJson as Map<String, Object?>))
-                    : (NotebookDocumentFilter2.canParse(notebookJson, nullLspJsonReporter)
-                        ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t2(
-                            NotebookDocumentFilter2.fromJson(notebookJson as Map<String, Object?>))
-                        : (NotebookDocumentFilter3.canParse(notebookJson, nullLspJsonReporter) ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t3(NotebookDocumentFilter3.fromJson(notebookJson as Map<String, Object?>)) : (throw '''$notebookJson was not one of (NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3)'''))))
-            : (throw '''$notebookJson was not one of (String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>)'''));
     final languageJson = json['language'];
     final language = languageJson as String?;
+    final notebookJson = json['notebook'];
+    final notebook = (NotebookDocumentFilter1.canParse(notebookJson, nullLspJsonReporter) ||
+            NotebookDocumentFilter2.canParse(
+                notebookJson, nullLspJsonReporter) ||
+            NotebookDocumentFilter3.canParse(notebookJson, nullLspJsonReporter))
+        ? Either2<Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String>.t1(
+            NotebookDocumentFilter1.canParse(notebookJson, nullLspJsonReporter)
+                ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t1(NotebookDocumentFilter1.fromJson(
+                    notebookJson as Map<String, Object?>))
+                : (NotebookDocumentFilter2.canParse(notebookJson, nullLspJsonReporter)
+                    ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t2(NotebookDocumentFilter2.fromJson(
+                        notebookJson as Map<String, Object?>))
+                    : (NotebookDocumentFilter3.canParse(notebookJson, nullLspJsonReporter)
+                        ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t3(NotebookDocumentFilter3.fromJson(notebookJson as Map<String, Object?>))
+                        : (throw '''$notebookJson was not one of (NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3)'''))))
+        : (notebookJson is String ? Either2<Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String>.t2(notebookJson) : (throw '''$notebookJson was not one of (Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String)'''));
     return NotebookCellTextDocumentFilter(
-      notebook: notebook,
       language: language,
+      notebook: notebook,
     );
   }
 
@@ -25844,21 +25181,31 @@
   /// If a string value is provided it matches against the notebook type. '*'
   /// matches every notebook.
   final Either2<
-      String,
       Either3<NotebookDocumentFilter1, NotebookDocumentFilter2,
-          NotebookDocumentFilter3>> notebook;
+          NotebookDocumentFilter3>,
+      String> notebook;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['notebook'] = notebook;
     if (language != null) {
       __result['language'] = language;
     }
+    __result['notebook'] = notebook;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('language');
+      try {
+        final language = obj['language'];
+        if (language != null && !(language is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('notebook');
       try {
         if (!obj.containsKey('notebook')) {
@@ -25870,22 +25217,12 @@
           reporter.reportError('must not be null');
           return false;
         }
-        if (!((notebook is String ||
-            (NotebookDocumentFilter1.canParse(notebook, reporter) ||
+        if (!(((NotebookDocumentFilter1.canParse(notebook, reporter) ||
                 NotebookDocumentFilter2.canParse(notebook, reporter) ||
-                NotebookDocumentFilter3.canParse(notebook, reporter))))) {
+                NotebookDocumentFilter3.canParse(notebook, reporter)) ||
+            notebook is String))) {
           reporter.reportError(
-              'must be of type Either2<String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('language');
-      try {
-        final language = obj['language'];
-        if (language != null && !(language is String)) {
-          reporter.reportError('must be of type String');
+              'must be of type Either2<Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String>');
           return false;
         }
       } finally {
@@ -25902,15 +25239,15 @@
   bool operator ==(Object other) {
     if (other is NotebookCellTextDocumentFilter &&
         other.runtimeType == NotebookCellTextDocumentFilter) {
-      return notebook == other.notebook && language == other.language && true;
+      return language == other.language && notebook == other.notebook && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        notebook,
         language,
+        notebook,
       );
 
   @override
@@ -25926,31 +25263,31 @@
   );
 
   NotebookDocument({
-    required this.uri,
-    required this.notebookType,
-    required this.version,
-    this.metadata,
     required this.cells,
+    this.metadata,
+    required this.notebookType,
+    required this.uri,
+    required this.version,
   });
   static NotebookDocument fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
-    final notebookTypeJson = json['notebookType'];
-    final notebookType = notebookTypeJson as String;
-    final versionJson = json['version'];
-    final version = versionJson as int;
-    final metadataJson = json['metadata'];
-    final metadata = metadataJson;
     final cellsJson = json['cells'];
     final cells = (cellsJson as List<Object?>)
         .map((item) => NotebookCell.fromJson(item as Map<String, Object?>))
         .toList();
+    final metadataJson = json['metadata'];
+    final metadata = metadataJson;
+    final notebookTypeJson = json['notebookType'];
+    final notebookType = notebookTypeJson as String;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int;
     return NotebookDocument(
-      uri: uri,
-      notebookType: notebookType,
-      version: version,
-      metadata: metadata,
       cells: cells,
+      metadata: metadata,
+      notebookType: notebookType,
+      uri: uri,
+      version: version,
     );
   }
 
@@ -25972,31 +25309,32 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
-    __result['notebookType'] = notebookType;
-    __result['version'] = version;
+    __result['cells'] = cells.map((item) => item.toJson()).toList();
     if (metadata != null) {
       __result['metadata'] = metadata;
     }
-    __result['cells'] = cells.map((item) => item.toJson()).toList();
+    __result['notebookType'] = notebookType;
+    __result['uri'] = uri;
+    __result['version'] = version;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
+      reporter.push('cells');
       try {
-        if (!obj.containsKey('uri')) {
+        if (!obj.containsKey('cells')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final uri = obj['uri'];
-        if (uri == null) {
+        final cells = obj['cells'];
+        if (cells == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
+        if (!((cells is List<Object?> &&
+            (cells.every((item) => NotebookCell.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<NotebookCell>');
           return false;
         }
       } finally {
@@ -26020,6 +25358,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('version');
       try {
         if (!obj.containsKey('version')) {
@@ -26038,25 +25394,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('cells');
-      try {
-        if (!obj.containsKey('cells')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final cells = obj['cells'];
-        if (cells == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!((cells is List<Object?> &&
-            (cells.every((item) => NotebookCell.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<NotebookCell>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type NotebookDocument');
@@ -26067,12 +25404,12 @@
   @override
   bool operator ==(Object other) {
     if (other is NotebookDocument && other.runtimeType == NotebookDocument) {
-      return uri == other.uri &&
-          notebookType == other.notebookType &&
-          version == other.version &&
-          metadata == other.metadata &&
-          listEqual(
+      return listEqual(
               cells, other.cells, (NotebookCell a, NotebookCell b) => a == b) &&
+          metadata == other.metadata &&
+          notebookType == other.notebookType &&
+          uri == other.uri &&
+          version == other.version &&
           true;
     }
     return false;
@@ -26080,11 +25417,11 @@
 
   @override
   int get hashCode => Object.hash(
-        uri,
-        notebookType,
-        version,
-        metadata,
         lspHashCode(cells),
+        metadata,
+        notebookType,
+        uri,
+        version,
       );
 
   @override
@@ -26100,20 +25437,20 @@
   );
 
   NotebookDocumentChangeEvent({
-    this.metadata,
     this.cells,
+    this.metadata,
   });
   static NotebookDocumentChangeEvent fromJson(Map<String, Object?> json) {
-    final metadataJson = json['metadata'];
-    final metadata = metadataJson;
     final cellsJson = json['cells'];
     final cells = cellsJson != null
         ? NotebookDocumentChangeEventCells.fromJson(
             cellsJson as Map<String, Object?>)
         : null;
+    final metadataJson = json['metadata'];
+    final metadata = metadataJson;
     return NotebookDocumentChangeEvent(
-      metadata: metadata,
       cells: cells,
+      metadata: metadata,
     );
   }
 
@@ -26125,12 +25462,12 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (metadata != null) {
-      __result['metadata'] = metadata;
-    }
     if (cells != null) {
       __result['cells'] = cells?.toJson();
     }
+    if (metadata != null) {
+      __result['metadata'] = metadata;
+    }
     return __result;
   }
 
@@ -26159,15 +25496,15 @@
   bool operator ==(Object other) {
     if (other is NotebookDocumentChangeEvent &&
         other.runtimeType == NotebookDocumentChangeEvent) {
-      return metadata == other.metadata && cells == other.cells && true;
+      return cells == other.cells && metadata == other.metadata && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        metadata,
         cells,
+        metadata,
       );
 
   @override
@@ -26181,28 +25518,28 @@
   );
 
   NotebookDocumentChangeEventCells({
-    this.structure,
     this.data,
+    this.structure,
     this.textContent,
   });
   static NotebookDocumentChangeEventCells fromJson(Map<String, Object?> json) {
+    final dataJson = json['data'];
+    final data = (dataJson as List<Object?>?)
+        ?.map((item) => NotebookCell.fromJson(item as Map<String, Object?>))
+        .toList();
     final structureJson = json['structure'];
     final structure = structureJson != null
         ? NotebookDocumentChangeEventStructure.fromJson(
             structureJson as Map<String, Object?>)
         : null;
-    final dataJson = json['data'];
-    final data = (dataJson as List<Object?>?)
-        ?.map((item) => NotebookCell.fromJson(item as Map<String, Object?>))
-        .toList();
     final textContentJson = json['textContent'];
     final textContent = (textContentJson as List<Object?>?)
         ?.map((item) => NotebookDocumentChangeEventTextContent.fromJson(
             item as Map<String, Object?>))
         .toList();
     return NotebookDocumentChangeEventCells(
-      structure: structure,
       data: data,
+      structure: structure,
       textContent: textContent,
     );
   }
@@ -26219,12 +25556,12 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (structure != null) {
-      __result['structure'] = structure?.toJson();
-    }
     if (data != null) {
       __result['data'] = data?.map((item) => item.toJson()).toList();
     }
+    if (structure != null) {
+      __result['structure'] = structure?.toJson();
+    }
     if (textContent != null) {
       __result['textContent'] =
           textContent?.map((item) => item.toJson()).toList();
@@ -26234,19 +25571,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('structure');
-      try {
-        final structure = obj['structure'];
-        if (structure != null &&
-            !(NotebookDocumentChangeEventStructure.canParse(
-                structure, reporter))) {
-          reporter.reportError(
-              'must be of type NotebookDocumentChangeEventStructure');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('data');
       try {
         final data = obj['data'];
@@ -26260,6 +25584,19 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('structure');
+      try {
+        final structure = obj['structure'];
+        if (structure != null &&
+            !(NotebookDocumentChangeEventStructure.canParse(
+                structure, reporter))) {
+          reporter.reportError(
+              'must be of type NotebookDocumentChangeEventStructure');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textContent');
       try {
         final textContent = obj['textContent'];
@@ -26286,9 +25623,9 @@
   bool operator ==(Object other) {
     if (other is NotebookDocumentChangeEventCells &&
         other.runtimeType == NotebookDocumentChangeEventCells) {
-      return structure == other.structure &&
-          listEqual(
+      return listEqual(
               data, other.data, (NotebookCell a, NotebookCell b) => a == b) &&
+          structure == other.structure &&
           listEqual(
               textContent,
               other.textContent,
@@ -26302,8 +25639,8 @@
 
   @override
   int get hashCode => Object.hash(
-        structure,
         lspHashCode(data),
+        structure,
         lspHashCode(textContent),
       );
 
@@ -26319,27 +25656,27 @@
 
   NotebookDocumentChangeEventStructure({
     required this.array,
-    this.didOpen,
     this.didClose,
+    this.didOpen,
   });
   static NotebookDocumentChangeEventStructure fromJson(
       Map<String, Object?> json) {
     final arrayJson = json['array'];
     final array =
         NotebookCellArrayChange.fromJson(arrayJson as Map<String, Object?>);
-    final didOpenJson = json['didOpen'];
-    final didOpen = (didOpenJson as List<Object?>?)
-        ?.map((item) => TextDocumentItem.fromJson(item as Map<String, Object?>))
-        .toList();
     final didCloseJson = json['didClose'];
     final didClose = (didCloseJson as List<Object?>?)
         ?.map((item) =>
             TextDocumentIdentifier.fromJson(item as Map<String, Object?>))
         .toList();
+    final didOpenJson = json['didOpen'];
+    final didOpen = (didOpenJson as List<Object?>?)
+        ?.map((item) => TextDocumentItem.fromJson(item as Map<String, Object?>))
+        .toList();
     return NotebookDocumentChangeEventStructure(
       array: array,
-      didOpen: didOpen,
       didClose: didClose,
+      didOpen: didOpen,
     );
   }
 
@@ -26355,12 +25692,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['array'] = array.toJson();
-    if (didOpen != null) {
-      __result['didOpen'] = didOpen?.map((item) => item.toJson()).toList();
-    }
     if (didClose != null) {
       __result['didClose'] = didClose?.map((item) => item.toJson()).toList();
     }
+    if (didOpen != null) {
+      __result['didOpen'] = didOpen?.map((item) => item.toJson()).toList();
+    }
     return __result;
   }
 
@@ -26384,19 +25721,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('didOpen');
-      try {
-        final didOpen = obj['didOpen'];
-        if (didOpen != null &&
-            !((didOpen is List<Object?> &&
-                (didOpen.every(
-                    (item) => TextDocumentItem.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<TextDocumentItem>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('didClose');
       try {
         final didClose = obj['didClose'];
@@ -26410,6 +25734,19 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('didOpen');
+      try {
+        final didOpen = obj['didOpen'];
+        if (didOpen != null &&
+            !((didOpen is List<Object?> &&
+                (didOpen.every(
+                    (item) => TextDocumentItem.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentItem>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter
@@ -26423,10 +25760,10 @@
     if (other is NotebookDocumentChangeEventStructure &&
         other.runtimeType == NotebookDocumentChangeEventStructure) {
       return array == other.array &&
-          listEqual(didOpen, other.didOpen,
-              (TextDocumentItem a, TextDocumentItem b) => a == b) &&
           listEqual(didClose, other.didClose,
               (TextDocumentIdentifier a, TextDocumentIdentifier b) => a == b) &&
+          listEqual(didOpen, other.didOpen,
+              (TextDocumentItem a, TextDocumentItem b) => a == b) &&
           true;
     }
     return false;
@@ -26435,8 +25772,8 @@
   @override
   int get hashCode => Object.hash(
         array,
-        lspHashCode(didOpen),
         lspHashCode(didClose),
+        lspHashCode(didOpen),
       );
 
   @override
@@ -26450,14 +25787,11 @@
   );
 
   NotebookDocumentChangeEventTextContent({
-    required this.document,
     required this.changes,
+    required this.document,
   });
   static NotebookDocumentChangeEventTextContent fromJson(
       Map<String, Object?> json) {
-    final documentJson = json['document'];
-    final document = VersionedTextDocumentIdentifier.fromJson(
-        documentJson as Map<String, Object?>);
     final changesJson = json['changes'];
     final changes = (changesJson as List<Object?>)
         .map((item) => TextDocumentContentChangeEvent1.canParse(
@@ -26471,9 +25805,12 @@
                     TextDocumentContentChangeEvent2.fromJson(item as Map<String, Object?>))
                 : (throw '''$item was not one of (TextDocumentContentChangeEvent1, TextDocumentContentChangeEvent2)''')))
         .toList();
+    final documentJson = json['document'];
+    final document = VersionedTextDocumentIdentifier.fromJson(
+        documentJson as Map<String, Object?>);
     return NotebookDocumentChangeEventTextContent(
-      document: document,
       changes: changes,
+      document: document,
     );
   }
 
@@ -26484,32 +25821,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['document'] = document.toJson();
     __result['changes'] = changes;
+    __result['document'] = document.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('document');
-      try {
-        if (!obj.containsKey('document')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final document = obj['document'];
-        if (document == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(VersionedTextDocumentIdentifier.canParse(document, reporter))) {
-          reporter
-              .reportError('must be of type VersionedTextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('changes');
       try {
         if (!obj.containsKey('changes')) {
@@ -26532,6 +25850,25 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('document');
+      try {
+        if (!obj.containsKey('document')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final document = obj['document'];
+        if (document == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(VersionedTextDocumentIdentifier.canParse(document, reporter))) {
+          reporter
+              .reportError('must be of type VersionedTextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError(
@@ -26544,8 +25881,7 @@
   bool operator ==(Object other) {
     if (other is NotebookDocumentChangeEventTextContent &&
         other.runtimeType == NotebookDocumentChangeEventTextContent) {
-      return document == other.document &&
-          listEqual(
+      return listEqual(
               changes,
               other.changes,
               (Either2<TextDocumentContentChangeEvent1,
@@ -26555,6 +25891,7 @@
                               TextDocumentContentChangeEvent2>
                           b) =>
                   a == b) &&
+          document == other.document &&
           true;
     }
     return false;
@@ -26562,8 +25899,8 @@
 
   @override
   int get hashCode => Object.hash(
-        document,
         lspHashCode(changes),
+        document,
       );
 
   @override
@@ -26655,20 +25992,20 @@
 
   NotebookDocumentFilter1({
     required this.notebookType,
-    this.scheme,
     this.pattern,
+    this.scheme,
   });
   static NotebookDocumentFilter1 fromJson(Map<String, Object?> json) {
     final notebookTypeJson = json['notebookType'];
     final notebookType = notebookTypeJson as String;
-    final schemeJson = json['scheme'];
-    final scheme = schemeJson as String?;
     final patternJson = json['pattern'];
     final pattern = patternJson as String?;
+    final schemeJson = json['scheme'];
+    final scheme = schemeJson as String?;
     return NotebookDocumentFilter1(
       notebookType: notebookType,
-      scheme: scheme,
       pattern: pattern,
+      scheme: scheme,
     );
   }
 
@@ -26684,12 +26021,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['notebookType'] = notebookType;
-    if (scheme != null) {
-      __result['scheme'] = scheme;
-    }
     if (pattern != null) {
       __result['pattern'] = pattern;
     }
+    if (scheme != null) {
+      __result['scheme'] = scheme;
+    }
     return __result;
   }
 
@@ -26713,20 +26050,20 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('scheme');
+      reporter.push('pattern');
       try {
-        final scheme = obj['scheme'];
-        if (scheme != null && !(scheme is String)) {
+        final pattern = obj['pattern'];
+        if (pattern != null && !(pattern is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('pattern');
+      reporter.push('scheme');
       try {
-        final pattern = obj['pattern'];
-        if (pattern != null && !(pattern is String)) {
+        final scheme = obj['scheme'];
+        if (scheme != null && !(scheme is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -26745,8 +26082,8 @@
     if (other is NotebookDocumentFilter1 &&
         other.runtimeType == NotebookDocumentFilter1) {
       return notebookType == other.notebookType &&
-          scheme == other.scheme &&
           pattern == other.pattern &&
+          scheme == other.scheme &&
           true;
     }
     return false;
@@ -26755,8 +26092,8 @@
   @override
   int get hashCode => Object.hash(
         notebookType,
-        scheme,
         pattern,
+        scheme,
       );
 
   @override
@@ -26771,20 +26108,20 @@
 
   NotebookDocumentFilter2({
     this.notebookType,
-    required this.scheme,
     this.pattern,
+    required this.scheme,
   });
   static NotebookDocumentFilter2 fromJson(Map<String, Object?> json) {
     final notebookTypeJson = json['notebookType'];
     final notebookType = notebookTypeJson as String?;
-    final schemeJson = json['scheme'];
-    final scheme = schemeJson as String;
     final patternJson = json['pattern'];
     final pattern = patternJson as String?;
+    final schemeJson = json['scheme'];
+    final scheme = schemeJson as String;
     return NotebookDocumentFilter2(
       notebookType: notebookType,
-      scheme: scheme,
       pattern: pattern,
+      scheme: scheme,
     );
   }
 
@@ -26802,10 +26139,10 @@
     if (notebookType != null) {
       __result['notebookType'] = notebookType;
     }
-    __result['scheme'] = scheme;
     if (pattern != null) {
       __result['pattern'] = pattern;
     }
+    __result['scheme'] = scheme;
     return __result;
   }
 
@@ -26821,6 +26158,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('pattern');
+      try {
+        final pattern = obj['pattern'];
+        if (pattern != null && !(pattern is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('scheme');
       try {
         if (!obj.containsKey('scheme')) {
@@ -26839,16 +26186,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('pattern');
-      try {
-        final pattern = obj['pattern'];
-        if (pattern != null && !(pattern is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type NotebookDocumentFilter2');
@@ -26861,8 +26198,8 @@
     if (other is NotebookDocumentFilter2 &&
         other.runtimeType == NotebookDocumentFilter2) {
       return notebookType == other.notebookType &&
-          scheme == other.scheme &&
           pattern == other.pattern &&
+          scheme == other.scheme &&
           true;
     }
     return false;
@@ -26871,8 +26208,8 @@
   @override
   int get hashCode => Object.hash(
         notebookType,
-        scheme,
         pattern,
+        scheme,
       );
 
   @override
@@ -26887,20 +26224,20 @@
 
   NotebookDocumentFilter3({
     this.notebookType,
-    this.scheme,
     required this.pattern,
+    this.scheme,
   });
   static NotebookDocumentFilter3 fromJson(Map<String, Object?> json) {
     final notebookTypeJson = json['notebookType'];
     final notebookType = notebookTypeJson as String?;
-    final schemeJson = json['scheme'];
-    final scheme = schemeJson as String?;
     final patternJson = json['pattern'];
     final pattern = patternJson as String;
+    final schemeJson = json['scheme'];
+    final scheme = schemeJson as String?;
     return NotebookDocumentFilter3(
       notebookType: notebookType,
-      scheme: scheme,
       pattern: pattern,
+      scheme: scheme,
     );
   }
 
@@ -26918,10 +26255,10 @@
     if (notebookType != null) {
       __result['notebookType'] = notebookType;
     }
+    __result['pattern'] = pattern;
     if (scheme != null) {
       __result['scheme'] = scheme;
     }
-    __result['pattern'] = pattern;
     return __result;
   }
 
@@ -26937,16 +26274,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('scheme');
-      try {
-        final scheme = obj['scheme'];
-        if (scheme != null && !(scheme is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('pattern');
       try {
         if (!obj.containsKey('pattern')) {
@@ -26965,6 +26292,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('scheme');
+      try {
+        final scheme = obj['scheme'];
+        if (scheme != null && !(scheme is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type NotebookDocumentFilter3');
@@ -26977,8 +26314,8 @@
     if (other is NotebookDocumentFilter3 &&
         other.runtimeType == NotebookDocumentFilter3) {
       return notebookType == other.notebookType &&
-          scheme == other.scheme &&
           pattern == other.pattern &&
+          scheme == other.scheme &&
           true;
     }
     return false;
@@ -26987,8 +26324,8 @@
   @override
   int get hashCode => Object.hash(
         notebookType,
-        scheme,
         pattern,
+        scheme,
       );
 
   @override
@@ -27332,40 +26669,37 @@
   );
 
   NotebookDocumentSyncOptionsNotebookSelector({
-    this.notebookDocument,
     required this.cells,
+    this.notebookDocument,
   });
   static NotebookDocumentSyncOptionsNotebookSelector fromJson(
       Map<String, Object?> json) {
-    final notebookDocumentJson = json['notebookDocument'];
-    final notebookDocument = notebookDocumentJson == null
-        ? null
-        : (notebookDocumentJson is String
-            ? Either2<String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>>.t1(
-                notebookDocumentJson)
-            : ((NotebookDocumentFilter1.canParse(notebookDocumentJson, nullLspJsonReporter) ||
-                    NotebookDocumentFilter2.canParse(
-                        notebookDocumentJson, nullLspJsonReporter) ||
-                    NotebookDocumentFilter3.canParse(
-                        notebookDocumentJson, nullLspJsonReporter))
-                ? Either2<String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>>.t2(
-                    NotebookDocumentFilter1.canParse(notebookDocumentJson, nullLspJsonReporter)
-                        ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t1(
-                            NotebookDocumentFilter1.fromJson(
-                                notebookDocumentJson as Map<String, Object?>))
-                        : (NotebookDocumentFilter2.canParse(
-                                notebookDocumentJson, nullLspJsonReporter)
-                            ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t2(NotebookDocumentFilter2.fromJson(notebookDocumentJson as Map<String, Object?>))
-                            : (NotebookDocumentFilter3.canParse(notebookDocumentJson, nullLspJsonReporter) ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t3(NotebookDocumentFilter3.fromJson(notebookDocumentJson as Map<String, Object?>)) : (throw '''$notebookDocumentJson was not one of (NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3)'''))))
-                : (throw '''$notebookDocumentJson was not one of (String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>)''')));
     final cellsJson = json['cells'];
     final cells = (cellsJson as List<Object?>)
         .map((item) => NotebookDocumentSyncOptionsCells.fromJson(
             item as Map<String, Object?>))
         .toList();
+    final notebookDocumentJson = json['notebookDocument'];
+    final notebookDocument = notebookDocumentJson == null
+        ? null
+        : ((NotebookDocumentFilter1.canParse(notebookDocumentJson, nullLspJsonReporter) ||
+                NotebookDocumentFilter2.canParse(
+                    notebookDocumentJson, nullLspJsonReporter) ||
+                NotebookDocumentFilter3.canParse(
+                    notebookDocumentJson, nullLspJsonReporter))
+            ? Either2<Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String>.t1(
+                NotebookDocumentFilter1.canParse(notebookDocumentJson, nullLspJsonReporter)
+                    ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t1(
+                        NotebookDocumentFilter1.fromJson(
+                            notebookDocumentJson as Map<String, Object?>))
+                    : (NotebookDocumentFilter2.canParse(notebookDocumentJson, nullLspJsonReporter)
+                        ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t2(
+                            NotebookDocumentFilter2.fromJson(notebookDocumentJson as Map<String, Object?>))
+                        : (NotebookDocumentFilter3.canParse(notebookDocumentJson, nullLspJsonReporter) ? Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>.t3(NotebookDocumentFilter3.fromJson(notebookDocumentJson as Map<String, Object?>)) : (throw '''$notebookDocumentJson was not one of (NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3)'''))))
+            : (notebookDocumentJson is String ? Either2<Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String>.t2(notebookDocumentJson) : (throw '''$notebookDocumentJson was not one of (Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String)''')));
     return NotebookDocumentSyncOptionsNotebookSelector(
-      notebookDocument: notebookDocument,
       cells: cells,
+      notebookDocument: notebookDocument,
     );
   }
 
@@ -27375,38 +26709,21 @@
   /// The notebook to be synced If a string value is provided it matches against
   /// the notebook type. '*' matches every notebook.
   final Either2<
-      String,
       Either3<NotebookDocumentFilter1, NotebookDocumentFilter2,
-          NotebookDocumentFilter3>>? notebookDocument;
+          NotebookDocumentFilter3>,
+      String>? notebookDocument;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['cells'] = cells.map((item) => item.toJson()).toList();
     if (notebookDocument != null) {
       __result['notebookDocument'] = notebookDocument;
     }
-    __result['cells'] = cells.map((item) => item.toJson()).toList();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('notebookDocument');
-      try {
-        final notebookDocument = obj['notebookDocument'];
-        if (notebookDocument != null &&
-            !((notebookDocument is String ||
-                (NotebookDocumentFilter1.canParse(notebookDocument, reporter) ||
-                    NotebookDocumentFilter2.canParse(
-                        notebookDocument, reporter) ||
-                    NotebookDocumentFilter3.canParse(
-                        notebookDocument, reporter))))) {
-          reporter.reportError(
-              'must be of type Either2<String, Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('cells');
       try {
         if (!obj.containsKey('cells')) {
@@ -27428,6 +26745,23 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('notebookDocument');
+      try {
+        final notebookDocument = obj['notebookDocument'];
+        if (notebookDocument != null &&
+            !(((NotebookDocumentFilter1.canParse(notebookDocument, reporter) ||
+                    NotebookDocumentFilter2.canParse(
+                        notebookDocument, reporter) ||
+                    NotebookDocumentFilter3.canParse(
+                        notebookDocument, reporter)) ||
+                notebookDocument is String))) {
+          reporter.reportError(
+              'must be of type Either2<Either3<NotebookDocumentFilter1, NotebookDocumentFilter2, NotebookDocumentFilter3>, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError(
@@ -27440,13 +26774,13 @@
   bool operator ==(Object other) {
     if (other is NotebookDocumentSyncOptionsNotebookSelector &&
         other.runtimeType == NotebookDocumentSyncOptionsNotebookSelector) {
-      return notebookDocument == other.notebookDocument &&
-          listEqual(
+      return listEqual(
               cells,
               other.cells,
               (NotebookDocumentSyncOptionsCells a,
                       NotebookDocumentSyncOptionsCells b) =>
                   a == b) &&
+          notebookDocument == other.notebookDocument &&
           true;
     }
     return false;
@@ -27454,8 +26788,8 @@
 
   @override
   int get hashCode => Object.hash(
-        notebookDocument,
         lspHashCode(cells),
+        notebookDocument,
       );
 
   @override
@@ -27475,12 +26809,14 @@
   );
 
   NotebookDocumentSyncRegistrationOptions({
+    this.id,
     required this.notebookSelector,
     this.save,
-    this.id,
   });
   static NotebookDocumentSyncRegistrationOptions fromJson(
       Map<String, Object?> json) {
+    final idJson = json['id'];
+    final id = idJson as String?;
     final notebookSelectorJson = json['notebookSelector'];
     final notebookSelector = (notebookSelectorJson as List<Object?>)
         .map((item) => NotebookDocumentSyncOptionsNotebookSelector.fromJson(
@@ -27488,12 +26824,10 @@
         .toList();
     final saveJson = json['save'];
     final save = saveJson as bool?;
-    final idJson = json['id'];
-    final id = idJson as String?;
     return NotebookDocumentSyncRegistrationOptions(
+      id: id,
       notebookSelector: notebookSelector,
       save: save,
-      id: id,
     );
   }
 
@@ -27510,19 +26844,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (id != null) {
+      __result['id'] = id;
+    }
     __result['notebookSelector'] =
         notebookSelector.map((item) => item.toJson()).toList();
     if (save != null) {
       __result['save'] = save;
     }
-    if (id != null) {
-      __result['id'] = id;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('id');
+      try {
+        final id = obj['id'];
+        if (id != null && !(id is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('notebookSelector');
       try {
         if (!obj.containsKey('notebookSelector')) {
@@ -27555,16 +26899,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('id');
-      try {
-        final id = obj['id'];
-        if (id != null && !(id is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError(
@@ -27577,14 +26911,14 @@
   bool operator ==(Object other) {
     if (other is NotebookDocumentSyncRegistrationOptions &&
         other.runtimeType == NotebookDocumentSyncRegistrationOptions) {
-      return listEqual(
+      return id == other.id &&
+          listEqual(
               notebookSelector,
               other.notebookSelector,
               (NotebookDocumentSyncOptionsNotebookSelector a,
                       NotebookDocumentSyncOptionsNotebookSelector b) =>
                   a == b) &&
           save == other.save &&
-          id == other.id &&
           true;
     }
     return false;
@@ -27592,9 +26926,9 @@
 
   @override
   int get hashCode => Object.hash(
+        id,
         lspHashCode(notebookSelector),
         save,
-        id,
       );
 
   @override
@@ -27608,25 +26942,25 @@
   );
 
   NotificationMessage({
+    this.clientRequestTime,
+    required this.jsonrpc,
     required this.method,
     this.params,
-    required this.jsonrpc,
-    this.clientRequestTime,
   });
   static NotificationMessage fromJson(Map<String, Object?> json) {
+    final clientRequestTimeJson = json['clientRequestTime'];
+    final clientRequestTime = clientRequestTimeJson as int?;
+    final jsonrpcJson = json['jsonrpc'];
+    final jsonrpc = jsonrpcJson as String;
     final methodJson = json['method'];
     final method = Method.fromJson(methodJson as String);
     final paramsJson = json['params'];
     final params = paramsJson;
-    final jsonrpcJson = json['jsonrpc'];
-    final jsonrpc = jsonrpcJson as String;
-    final clientRequestTimeJson = json['clientRequestTime'];
-    final clientRequestTime = clientRequestTimeJson as int?;
     return NotificationMessage(
+      clientRequestTime: clientRequestTime,
+      jsonrpc: jsonrpc,
       method: method,
       params: params,
-      jsonrpc: jsonrpc,
-      clientRequestTime: clientRequestTime,
     );
   }
 
@@ -27641,32 +26975,24 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (clientRequestTime != null) {
+      __result['clientRequestTime'] = clientRequestTime;
+    }
+    __result['jsonrpc'] = jsonrpc;
     __result['method'] = method.toJson();
     if (params != null) {
       __result['params'] = params;
     }
-    __result['jsonrpc'] = jsonrpc;
-    if (clientRequestTime != null) {
-      __result['clientRequestTime'] = clientRequestTime;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('method');
+      reporter.push('clientRequestTime');
       try {
-        if (!obj.containsKey('method')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final method = obj['method'];
-        if (method == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Method.canParse(method, reporter))) {
-          reporter.reportError('must be of type Method');
+        final clientRequestTime = obj['clientRequestTime'];
+        if (clientRequestTime != null && !(clientRequestTime is int)) {
+          reporter.reportError('must be of type int');
           return false;
         }
       } finally {
@@ -27690,11 +27016,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('clientRequestTime');
+      reporter.push('method');
       try {
-        final clientRequestTime = obj['clientRequestTime'];
-        if (clientRequestTime != null && !(clientRequestTime is int)) {
-          reporter.reportError('must be of type int');
+        if (!obj.containsKey('method')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final method = obj['method'];
+        if (method == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Method.canParse(method, reporter))) {
+          reporter.reportError('must be of type Method');
           return false;
         }
       } finally {
@@ -27711,10 +27045,10 @@
   bool operator ==(Object other) {
     if (other is NotificationMessage &&
         other.runtimeType == NotificationMessage) {
-      return method == other.method &&
-          params == other.params &&
+      return clientRequestTime == other.clientRequestTime &&
           jsonrpc == other.jsonrpc &&
-          clientRequestTime == other.clientRequestTime &&
+          method == other.method &&
+          params == other.params &&
           true;
     }
     return false;
@@ -27722,10 +27056,10 @@
 
   @override
   int get hashCode => Object.hash(
+        clientRequestTime,
+        jsonrpc,
         method,
         params,
-        jsonrpc,
-        clientRequestTime,
       );
 
   @override
@@ -27740,18 +27074,18 @@
   );
 
   OptionalVersionedTextDocumentIdentifier({
-    this.version,
     required this.uri,
+    this.version,
   });
   static OptionalVersionedTextDocumentIdentifier fromJson(
       Map<String, Object?> json) {
-    final versionJson = json['version'];
-    final version = versionJson as int?;
     final uriJson = json['uri'];
     final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int?;
     return OptionalVersionedTextDocumentIdentifier(
-      version: version,
       uri: uri,
+      version: version,
     );
   }
 
@@ -27771,27 +27105,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['version'] = version;
     __result['uri'] = uri;
+    __result['version'] = version;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('version');
-      try {
-        if (!obj.containsKey('version')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final version = obj['version'];
-        if (version != null && !(version is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -27810,6 +27130,20 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('version');
+      try {
+        if (!obj.containsKey('version')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final version = obj['version'];
+        if (version != null && !(version is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError(
@@ -27822,15 +27156,15 @@
   bool operator ==(Object other) {
     if (other is OptionalVersionedTextDocumentIdentifier &&
         other.runtimeType == OptionalVersionedTextDocumentIdentifier) {
-      return version == other.version && uri == other.uri && true;
+      return uri == other.uri && version == other.version && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        version,
         uri,
+        version,
       );
 
   @override
@@ -27846,30 +27180,30 @@
   );
 
   ParameterInformation({
-    required this.label,
     this.documentation,
+    required this.label,
   });
   static ParameterInformation fromJson(Map<String, Object?> json) {
-    final labelJson = json['label'];
-    final label = labelJson as String;
     final documentationJson = json['documentation'];
     final documentation = documentationJson == null
         ? null
-        : (documentationJson is String
-            ? Either2<String, MarkupContent>.t1(documentationJson)
-            : (MarkupContent.canParse(documentationJson, nullLspJsonReporter)
-                ? Either2<String, MarkupContent>.t2(MarkupContent.fromJson(
-                    documentationJson as Map<String, Object?>))
-                : (throw '''$documentationJson was not one of (String, MarkupContent)''')));
+        : (MarkupContent.canParse(documentationJson, nullLspJsonReporter)
+            ? Either2<MarkupContent, String>.t1(MarkupContent.fromJson(
+                documentationJson as Map<String, Object?>))
+            : (documentationJson is String
+                ? Either2<MarkupContent, String>.t2(documentationJson)
+                : (throw '''$documentationJson was not one of (MarkupContent, String)''')));
+    final labelJson = json['label'];
+    final label = labelJson as String;
     return ParameterInformation(
-      label: label,
       documentation: documentation,
+      label: label,
     );
   }
 
   /// The human-readable doc-comment of this parameter. Will be shown in the UI
   /// but can be omitted.
-  final Either2<String, MarkupContent>? documentation;
+  final Either2<MarkupContent, String>? documentation;
 
   /// The label of this parameter information.
   ///
@@ -27885,15 +27219,28 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['label'] = label;
     if (documentation != null) {
       __result['documentation'] = documentation;
     }
+    __result['label'] = label;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('documentation');
+      try {
+        final documentation = obj['documentation'];
+        if (documentation != null &&
+            !((MarkupContent.canParse(documentation, reporter) ||
+                documentation is String))) {
+          reporter
+              .reportError('must be of type Either2<MarkupContent, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('label');
       try {
         if (!obj.containsKey('label')) {
@@ -27912,19 +27259,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('documentation');
-      try {
-        final documentation = obj['documentation'];
-        if (documentation != null &&
-            !((documentation is String ||
-                MarkupContent.canParse(documentation, reporter)))) {
-          reporter
-              .reportError('must be of type Either2<String, MarkupContent>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ParameterInformation');
@@ -27936,8 +27270,8 @@
   bool operator ==(Object other) {
     if (other is ParameterInformation &&
         other.runtimeType == ParameterInformation) {
-      return label == other.label &&
-          documentation == other.documentation &&
+      return documentation == other.documentation &&
+          label == other.label &&
           true;
     }
     return false;
@@ -27945,8 +27279,8 @@
 
   @override
   int get hashCode => Object.hash(
-        label,
         documentation,
+        label,
       );
 
   @override
@@ -28109,17 +27443,17 @@
   );
 
   Position({
-    required this.line,
     required this.character,
+    required this.line,
   });
   static Position fromJson(Map<String, Object?> json) {
-    final lineJson = json['line'];
-    final line = lineJson as int;
     final characterJson = json['character'];
     final character = characterJson as int;
+    final lineJson = json['line'];
+    final line = lineJson as int;
     return Position(
-      line: line,
       character: character,
+      line: line,
     );
   }
 
@@ -28135,31 +27469,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['line'] = line;
     __result['character'] = character;
+    __result['line'] = line;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('line');
-      try {
-        if (!obj.containsKey('line')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final line = obj['line'];
-        if (line == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(line is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('character');
       try {
         if (!obj.containsKey('character')) {
@@ -28178,6 +27494,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('line');
+      try {
+        if (!obj.containsKey('line')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final line = obj['line'];
+        if (line == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(line is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type Position');
@@ -28188,15 +27522,15 @@
   @override
   bool operator ==(Object other) {
     if (other is Position && other.runtimeType == Position) {
-      return line == other.line && character == other.character && true;
+      return character == other.character && line == other.line && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        line,
         character,
+        line,
       );
 
   @override
@@ -28248,18 +27582,18 @@
   );
 
   PrepareRenameParams({
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
   });
   static PrepareRenameParams fromJson(Map<String, Object?> json) {
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     return PrepareRenameParams(
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
     );
   }
 
@@ -28271,31 +27605,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -28314,6 +27630,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type PrepareRenameParams');
@@ -28325,8 +27659,8 @@
   bool operator ==(Object other) {
     if (other is PrepareRenameParams &&
         other.runtimeType == PrepareRenameParams) {
-      return textDocument == other.textDocument &&
-          position == other.position &&
+      return position == other.position &&
+          textDocument == other.textDocument &&
           true;
     }
     return false;
@@ -28334,8 +27668,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         position,
+        textDocument,
       );
 
   @override
@@ -28557,14 +27891,18 @@
   );
 
   PublishDiagnosticsClientCapabilities({
+    this.codeDescriptionSupport,
+    this.dataSupport,
     this.relatedInformation,
     this.tagSupport,
     this.versionSupport,
-    this.codeDescriptionSupport,
-    this.dataSupport,
   });
   static PublishDiagnosticsClientCapabilities fromJson(
       Map<String, Object?> json) {
+    final codeDescriptionSupportJson = json['codeDescriptionSupport'];
+    final codeDescriptionSupport = codeDescriptionSupportJson as bool?;
+    final dataSupportJson = json['dataSupport'];
+    final dataSupport = dataSupportJson as bool?;
     final relatedInformationJson = json['relatedInformation'];
     final relatedInformation = relatedInformationJson as bool?;
     final tagSupportJson = json['tagSupport'];
@@ -28574,16 +27912,12 @@
         : null;
     final versionSupportJson = json['versionSupport'];
     final versionSupport = versionSupportJson as bool?;
-    final codeDescriptionSupportJson = json['codeDescriptionSupport'];
-    final codeDescriptionSupport = codeDescriptionSupportJson as bool?;
-    final dataSupportJson = json['dataSupport'];
-    final dataSupport = dataSupportJson as bool?;
     return PublishDiagnosticsClientCapabilities(
+      codeDescriptionSupport: codeDescriptionSupport,
+      dataSupport: dataSupport,
       relatedInformation: relatedInformation,
       tagSupport: tagSupport,
       versionSupport: versionSupport,
-      codeDescriptionSupport: codeDescriptionSupport,
-      dataSupport: dataSupport,
     );
   }
 
@@ -28612,6 +27946,12 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (codeDescriptionSupport != null) {
+      __result['codeDescriptionSupport'] = codeDescriptionSupport;
+    }
+    if (dataSupport != null) {
+      __result['dataSupport'] = dataSupport;
+    }
     if (relatedInformation != null) {
       __result['relatedInformation'] = relatedInformation;
     }
@@ -28621,17 +27961,32 @@
     if (versionSupport != null) {
       __result['versionSupport'] = versionSupport;
     }
-    if (codeDescriptionSupport != null) {
-      __result['codeDescriptionSupport'] = codeDescriptionSupport;
-    }
-    if (dataSupport != null) {
-      __result['dataSupport'] = dataSupport;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('codeDescriptionSupport');
+      try {
+        final codeDescriptionSupport = obj['codeDescriptionSupport'];
+        if (codeDescriptionSupport != null &&
+            !(codeDescriptionSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('dataSupport');
+      try {
+        final dataSupport = obj['dataSupport'];
+        if (dataSupport != null && !(dataSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('relatedInformation');
       try {
         final relatedInformation = obj['relatedInformation'];
@@ -28665,27 +28020,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('codeDescriptionSupport');
-      try {
-        final codeDescriptionSupport = obj['codeDescriptionSupport'];
-        if (codeDescriptionSupport != null &&
-            !(codeDescriptionSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('dataSupport');
-      try {
-        final dataSupport = obj['dataSupport'];
-        if (dataSupport != null && !(dataSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter
@@ -28698,11 +28032,11 @@
   bool operator ==(Object other) {
     if (other is PublishDiagnosticsClientCapabilities &&
         other.runtimeType == PublishDiagnosticsClientCapabilities) {
-      return relatedInformation == other.relatedInformation &&
+      return codeDescriptionSupport == other.codeDescriptionSupport &&
+          dataSupport == other.dataSupport &&
+          relatedInformation == other.relatedInformation &&
           tagSupport == other.tagSupport &&
           versionSupport == other.versionSupport &&
-          codeDescriptionSupport == other.codeDescriptionSupport &&
-          dataSupport == other.dataSupport &&
           true;
     }
     return false;
@@ -28710,11 +28044,11 @@
 
   @override
   int get hashCode => Object.hash(
+        codeDescriptionSupport,
+        dataSupport,
         relatedInformation,
         tagSupport,
         versionSupport,
-        codeDescriptionSupport,
-        dataSupport,
       );
 
   @override
@@ -28805,23 +28139,23 @@
   );
 
   PublishDiagnosticsParams({
+    required this.diagnostics,
     required this.uri,
     this.version,
-    required this.diagnostics,
   });
   static PublishDiagnosticsParams fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
-    final versionJson = json['version'];
-    final version = versionJson as int?;
     final diagnosticsJson = json['diagnostics'];
     final diagnostics = (diagnosticsJson as List<Object?>)
         .map((item) => Diagnostic.fromJson(item as Map<String, Object?>))
         .toList();
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int?;
     return PublishDiagnosticsParams(
+      diagnostics: diagnostics,
       uri: uri,
       version: version,
-      diagnostics: diagnostics,
     );
   }
 
@@ -28838,16 +28172,36 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['diagnostics'] = diagnostics.map((item) => item.toJson()).toList();
     __result['uri'] = uri;
     if (version != null) {
       __result['version'] = version;
     }
-    __result['diagnostics'] = diagnostics.map((item) => item.toJson()).toList();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('diagnostics');
+      try {
+        if (!obj.containsKey('diagnostics')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final diagnostics = obj['diagnostics'];
+        if (diagnostics == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!((diagnostics is List<Object?> &&
+            (diagnostics
+                .every((item) => Diagnostic.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<Diagnostic>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -28876,26 +28230,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('diagnostics');
-      try {
-        if (!obj.containsKey('diagnostics')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final diagnostics = obj['diagnostics'];
-        if (diagnostics == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!((diagnostics is List<Object?> &&
-            (diagnostics
-                .every((item) => Diagnostic.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<Diagnostic>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type PublishDiagnosticsParams');
@@ -28907,10 +28241,10 @@
   bool operator ==(Object other) {
     if (other is PublishDiagnosticsParams &&
         other.runtimeType == PublishDiagnosticsParams) {
-      return uri == other.uri &&
-          version == other.version &&
-          listEqual(diagnostics, other.diagnostics,
+      return listEqual(diagnostics, other.diagnostics,
               (Diagnostic a, Diagnostic b) => a == b) &&
+          uri == other.uri &&
+          version == other.version &&
           true;
     }
     return false;
@@ -28918,9 +28252,9 @@
 
   @override
   int get hashCode => Object.hash(
+        lspHashCode(diagnostics),
         uri,
         version,
-        lspHashCode(diagnostics),
       );
 
   @override
@@ -28934,17 +28268,17 @@
   );
 
   Range({
-    required this.start,
     required this.end,
+    required this.start,
   });
   static Range fromJson(Map<String, Object?> json) {
-    final startJson = json['start'];
-    final start = Position.fromJson(startJson as Map<String, Object?>);
     final endJson = json['end'];
     final end = Position.fromJson(endJson as Map<String, Object?>);
+    final startJson = json['start'];
+    final start = Position.fromJson(startJson as Map<String, Object?>);
     return Range(
-      start: start,
       end: end,
+      start: start,
     );
   }
 
@@ -28956,31 +28290,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['start'] = start.toJson();
     __result['end'] = end.toJson();
+    __result['start'] = start.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('start');
-      try {
-        if (!obj.containsKey('start')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final start = obj['start'];
-        if (start == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Position.canParse(start, reporter))) {
-          reporter.reportError('must be of type Position');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('end');
       try {
         if (!obj.containsKey('end')) {
@@ -28999,6 +28315,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('start');
+      try {
+        if (!obj.containsKey('start')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final start = obj['start'];
+        if (start == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Position.canParse(start, reporter))) {
+          reporter.reportError('must be of type Position');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type Range');
@@ -29009,15 +28343,15 @@
   @override
   bool operator ==(Object other) {
     if (other is Range && other.runtimeType == Range) {
-      return start == other.start && end == other.end && true;
+      return end == other.end && start == other.start && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        start,
         end,
+        start,
       );
 
   @override
@@ -29031,17 +28365,17 @@
   );
 
   RangeAndPlaceholder({
-    required this.range,
     required this.placeholder,
+    required this.range,
   });
   static RangeAndPlaceholder fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final placeholderJson = json['placeholder'];
     final placeholder = placeholderJson as String;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return RangeAndPlaceholder(
-      range: range,
       placeholder: placeholder,
+      range: range,
     );
   }
 
@@ -29050,31 +28384,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     __result['placeholder'] = placeholder;
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('range');
-      try {
-        if (!obj.containsKey('range')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final range = obj['range'];
-        if (range == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(range, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('placeholder');
       try {
         if (!obj.containsKey('placeholder')) {
@@ -29093,6 +28409,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('range');
+      try {
+        if (!obj.containsKey('range')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final range = obj['range'];
+        if (range == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(range, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type RangeAndPlaceholder');
@@ -29104,15 +28438,15 @@
   bool operator ==(Object other) {
     if (other is RangeAndPlaceholder &&
         other.runtimeType == RangeAndPlaceholder) {
-      return range == other.range && placeholder == other.placeholder && true;
+      return placeholder == other.placeholder && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         placeholder,
+        range,
       );
 
   @override
@@ -29327,28 +28661,15 @@
 
   ReferenceParams({
     required this.context,
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static ReferenceParams fromJson(Map<String, Object?> json) {
     final contextJson = json['context'];
     final context =
         ReferenceContext.fromJson(contextJson as Map<String, Object?>);
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -29357,12 +28678,25 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return ReferenceParams(
       context: context,
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -29384,14 +28718,14 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['context'] = context.toJson();
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
@@ -29415,19 +28749,12 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -29451,22 +28778,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -29484,10 +28818,10 @@
   bool operator ==(Object other) {
     if (other is ReferenceParams && other.runtimeType == ReferenceParams) {
       return context == other.context &&
-          textDocument == other.textDocument &&
-          position == other.position &&
-          workDoneToken == other.workDoneToken &&
           partialResultToken == other.partialResultToken &&
+          position == other.position &&
+          textDocument == other.textDocument &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -29496,10 +28830,10 @@
   @override
   int get hashCode => Object.hash(
         context,
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -29520,7 +28854,8 @@
   static ReferenceRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -29532,7 +28867,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -29556,8 +28891,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -29585,7 +28920,7 @@
     if (other is ReferenceRegistrationOptions &&
         other.runtimeType == ReferenceRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -29895,10 +29230,10 @@
   );
 
   RelatedFullDocumentDiagnosticReport({
-    this.relatedDocuments,
-    this.kind = 'full',
-    this.resultId,
     required this.items,
+    this.kind = 'full',
+    this.relatedDocuments,
+    this.resultId,
   }) {
     if (kind != 'full') {
       throw 'kind may only be the literal \'full\'';
@@ -29906,6 +29241,12 @@
   }
   static RelatedFullDocumentDiagnosticReport fromJson(
       Map<String, Object?> json) {
+    final itemsJson = json['items'];
+    final items = (itemsJson as List<Object?>)
+        .map((item) => Diagnostic.fromJson(item as Map<String, Object?>))
+        .toList();
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
     final relatedDocumentsJson = json['relatedDocuments'];
     final relatedDocuments = (relatedDocumentsJson as Map<Object, Object?>?)
         ?.map((key, value) => MapEntry(
@@ -29920,19 +29261,13 @@
                         UnchangedDocumentDiagnosticReport.fromJson(
                             value as Map<String, Object?>))
                     : (throw '''$value was not one of (FullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport)'''))));
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
     final resultIdJson = json['resultId'];
     final resultId = resultIdJson as String?;
-    final itemsJson = json['items'];
-    final items = (itemsJson as List<Object?>)
-        .map((item) => Diagnostic.fromJson(item as Map<String, Object?>))
-        .toList();
     return RelatedFullDocumentDiagnosticReport(
-      relatedDocuments: relatedDocuments,
-      kind: kind,
-      resultId: resultId,
       items: items,
+      kind: kind,
+      relatedDocuments: relatedDocuments,
+      resultId: resultId,
     );
   }
 
@@ -29959,33 +29294,33 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['items'] = items.map((item) => item.toJson()).toList();
+    __result['kind'] = kind;
     if (relatedDocuments != null) {
       __result['relatedDocuments'] = relatedDocuments;
     }
-    __result['kind'] = kind;
     if (resultId != null) {
       __result['resultId'] = resultId;
     }
-    __result['items'] = items.map((item) => item.toJson()).toList();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('relatedDocuments');
+      reporter.push('items');
       try {
-        final relatedDocuments = obj['relatedDocuments'];
-        if (relatedDocuments != null &&
-            !((relatedDocuments is Map &&
-                (relatedDocuments.keys.every((item) =>
-                    item is String &&
-                    relatedDocuments.values.every((item) =>
-                        (FullDocumentDiagnosticReport.canParse(
-                                item, reporter) ||
-                            UnchangedDocumentDiagnosticReport.canParse(
-                                item, reporter)))))))) {
-          reporter.reportError(
-              'must be of type Map<String, Either2<FullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport>>');
+        if (!obj.containsKey('items')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final items = obj['items'];
+        if (items == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!((items is List<Object?> &&
+            (items.every((item) => Diagnostic.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<Diagnostic>');
           return false;
         }
       } finally {
@@ -30009,30 +29344,30 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('resultId');
+      reporter.push('relatedDocuments');
       try {
-        final resultId = obj['resultId'];
-        if (resultId != null && !(resultId is String)) {
-          reporter.reportError('must be of type String');
+        final relatedDocuments = obj['relatedDocuments'];
+        if (relatedDocuments != null &&
+            !((relatedDocuments is Map &&
+                (relatedDocuments.keys.every((item) =>
+                    item is String &&
+                    relatedDocuments.values.every((item) =>
+                        (FullDocumentDiagnosticReport.canParse(
+                                item, reporter) ||
+                            UnchangedDocumentDiagnosticReport.canParse(
+                                item, reporter)))))))) {
+          reporter.reportError(
+              'must be of type Map<String, Either2<FullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport>>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('items');
+      reporter.push('resultId');
       try {
-        if (!obj.containsKey('items')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final items = obj['items'];
-        if (items == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!((items is List<Object?> &&
-            (items.every((item) => Diagnostic.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<Diagnostic>');
+        final resultId = obj['resultId'];
+        if (resultId != null && !(resultId is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -30050,7 +29385,10 @@
   bool operator ==(Object other) {
     if (other is RelatedFullDocumentDiagnosticReport &&
         other.runtimeType == RelatedFullDocumentDiagnosticReport) {
-      return mapEqual(
+      return listEqual(
+              items, other.items, (Diagnostic a, Diagnostic b) => a == b) &&
+          kind == other.kind &&
+          mapEqual(
               relatedDocuments,
               other.relatedDocuments,
               (Either2<FullDocumentDiagnosticReport,
@@ -30060,10 +29398,7 @@
                               UnchangedDocumentDiagnosticReport>
                           b) =>
                   a == b) &&
-          kind == other.kind &&
           resultId == other.resultId &&
-          listEqual(
-              items, other.items, (Diagnostic a, Diagnostic b) => a == b) &&
           true;
     }
     return false;
@@ -30071,10 +29406,10 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(relatedDocuments),
-        kind,
-        resultId,
         lspHashCode(items),
+        kind,
+        lspHashCode(relatedDocuments),
+        resultId,
       );
 
   @override
@@ -30091,8 +29426,8 @@
   );
 
   RelatedUnchangedDocumentDiagnosticReport({
-    this.relatedDocuments,
     this.kind = 'unchanged',
+    this.relatedDocuments,
     required this.resultId,
   }) {
     if (kind != 'unchanged') {
@@ -30101,6 +29436,8 @@
   }
   static RelatedUnchangedDocumentDiagnosticReport fromJson(
       Map<String, Object?> json) {
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
     final relatedDocumentsJson = json['relatedDocuments'];
     final relatedDocuments = (relatedDocumentsJson as Map<Object, Object?>?)
         ?.map((key, value) => MapEntry(
@@ -30115,13 +29452,11 @@
                         UnchangedDocumentDiagnosticReport.fromJson(
                             value as Map<String, Object?>))
                     : (throw '''$value was not one of (FullDocumentDiagnosticReport, UnchangedDocumentDiagnosticReport)'''))));
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
     final resultIdJson = json['resultId'];
     final resultId = resultIdJson as String;
     return RelatedUnchangedDocumentDiagnosticReport(
-      relatedDocuments: relatedDocuments,
       kind: kind,
+      relatedDocuments: relatedDocuments,
       resultId: resultId,
     );
   }
@@ -30147,16 +29482,34 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['kind'] = kind;
     if (relatedDocuments != null) {
       __result['relatedDocuments'] = relatedDocuments;
     }
-    __result['kind'] = kind;
     __result['resultId'] = resultId;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('kind');
+      try {
+        if (!obj.containsKey('kind')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final kind = obj['kind'];
+        if (kind == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(kind == 'unchanged')) {
+          reporter.reportError('must be the literal \'unchanged\'');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('relatedDocuments');
       try {
         final relatedDocuments = obj['relatedDocuments'];
@@ -30176,24 +29529,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('kind');
-      try {
-        if (!obj.containsKey('kind')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final kind = obj['kind'];
-        if (kind == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(kind == 'unchanged')) {
-          reporter.reportError('must be the literal \'unchanged\'');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('resultId');
       try {
         if (!obj.containsKey('resultId')) {
@@ -30224,7 +29559,8 @@
   bool operator ==(Object other) {
     if (other is RelatedUnchangedDocumentDiagnosticReport &&
         other.runtimeType == RelatedUnchangedDocumentDiagnosticReport) {
-      return mapEqual(
+      return kind == other.kind &&
+          mapEqual(
               relatedDocuments,
               other.relatedDocuments,
               (Either2<FullDocumentDiagnosticReport,
@@ -30234,7 +29570,6 @@
                               UnchangedDocumentDiagnosticReport>
                           b) =>
                   a == b) &&
-          kind == other.kind &&
           resultId == other.resultId &&
           true;
     }
@@ -30243,8 +29578,8 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(relatedDocuments),
         kind,
+        lspHashCode(relatedDocuments),
         resultId,
       );
 
@@ -30268,12 +29603,12 @@
   });
   static RelativePattern fromJson(Map<String, Object?> json) {
     final baseUriJson = json['baseUri'];
-    final baseUri = WorkspaceFolder.canParse(baseUriJson, nullLspJsonReporter)
-        ? Either2<WorkspaceFolder, String>.t1(
-            WorkspaceFolder.fromJson(baseUriJson as Map<String, Object?>))
-        : (baseUriJson is String
-            ? Either2<WorkspaceFolder, String>.t2(baseUriJson)
-            : (throw '''$baseUriJson was not one of (WorkspaceFolder, String)'''));
+    final baseUri = baseUriJson is String
+        ? Either2<String, WorkspaceFolder>.t1(baseUriJson)
+        : (WorkspaceFolder.canParse(baseUriJson, nullLspJsonReporter)
+            ? Either2<String, WorkspaceFolder>.t2(
+                WorkspaceFolder.fromJson(baseUriJson as Map<String, Object?>))
+            : (throw '''$baseUriJson was not one of (String, WorkspaceFolder)'''));
     final patternJson = json['pattern'];
     final pattern = patternJson as String;
     return RelativePattern(
@@ -30284,7 +29619,7 @@
 
   /// A workspace folder or a base URI to which this pattern will be matched
   /// against relatively.
-  final Either2<WorkspaceFolder, String> baseUri;
+  final Either2<String, WorkspaceFolder> baseUri;
 
   /// The actual glob pattern;
   final String pattern;
@@ -30309,10 +29644,10 @@
           reporter.reportError('must not be null');
           return false;
         }
-        if (!((WorkspaceFolder.canParse(baseUri, reporter) ||
-            baseUri is String))) {
+        if (!((baseUri is String ||
+            WorkspaceFolder.canParse(baseUri, reporter)))) {
           reporter
-              .reportError('must be of type Either2<WorkspaceFolder, String>');
+              .reportError('must be of type Either2<String, WorkspaceFolder>');
           return false;
         }
       } finally {
@@ -30369,13 +29704,15 @@
 
   RenameClientCapabilities({
     this.dynamicRegistration,
+    this.honorsChangeAnnotations,
     this.prepareSupport,
     this.prepareSupportDefaultBehavior,
-    this.honorsChangeAnnotations,
   });
   static RenameClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
+    final honorsChangeAnnotationsJson = json['honorsChangeAnnotations'];
+    final honorsChangeAnnotations = honorsChangeAnnotationsJson as bool?;
     final prepareSupportJson = json['prepareSupport'];
     final prepareSupport = prepareSupportJson as bool?;
     final prepareSupportDefaultBehaviorJson =
@@ -30385,13 +29722,11 @@
             ? PrepareSupportDefaultBehavior.fromJson(
                 prepareSupportDefaultBehaviorJson as int)
             : null;
-    final honorsChangeAnnotationsJson = json['honorsChangeAnnotations'];
-    final honorsChangeAnnotations = honorsChangeAnnotationsJson as bool?;
     return RenameClientCapabilities(
       dynamicRegistration: dynamicRegistration,
+      honorsChangeAnnotations: honorsChangeAnnotations,
       prepareSupport: prepareSupport,
       prepareSupportDefaultBehavior: prepareSupportDefaultBehavior,
-      honorsChangeAnnotations: honorsChangeAnnotations,
     );
   }
 
@@ -30422,6 +29757,9 @@
     if (dynamicRegistration != null) {
       __result['dynamicRegistration'] = dynamicRegistration;
     }
+    if (honorsChangeAnnotations != null) {
+      __result['honorsChangeAnnotations'] = honorsChangeAnnotations;
+    }
     if (prepareSupport != null) {
       __result['prepareSupport'] = prepareSupport;
     }
@@ -30429,9 +29767,6 @@
       __result['prepareSupportDefaultBehavior'] =
           prepareSupportDefaultBehavior?.toJson();
     }
-    if (honorsChangeAnnotations != null) {
-      __result['honorsChangeAnnotations'] = honorsChangeAnnotations;
-    }
     return __result;
   }
 
@@ -30447,6 +29782,17 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('honorsChangeAnnotations');
+      try {
+        final honorsChangeAnnotations = obj['honorsChangeAnnotations'];
+        if (honorsChangeAnnotations != null &&
+            !(honorsChangeAnnotations is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('prepareSupport');
       try {
         final prepareSupport = obj['prepareSupport'];
@@ -30470,17 +29816,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('honorsChangeAnnotations');
-      try {
-        final honorsChangeAnnotations = obj['honorsChangeAnnotations'];
-        if (honorsChangeAnnotations != null &&
-            !(honorsChangeAnnotations is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type RenameClientCapabilities');
@@ -30493,10 +29828,10 @@
     if (other is RenameClientCapabilities &&
         other.runtimeType == RenameClientCapabilities) {
       return dynamicRegistration == other.dynamicRegistration &&
+          honorsChangeAnnotations == other.honorsChangeAnnotations &&
           prepareSupport == other.prepareSupport &&
           prepareSupportDefaultBehavior ==
               other.prepareSupportDefaultBehavior &&
-          honorsChangeAnnotations == other.honorsChangeAnnotations &&
           true;
     }
     return false;
@@ -30505,9 +29840,9 @@
   @override
   int get hashCode => Object.hash(
         dynamicRegistration,
+        honorsChangeAnnotations,
         prepareSupport,
         prepareSupportDefaultBehavior,
-        honorsChangeAnnotations,
       );
 
   @override
@@ -30522,35 +29857,35 @@
   );
 
   RenameFile({
-    this.kind = 'rename',
-    required this.oldUri,
-    required this.newUri,
-    this.options,
     this.annotationId,
+    this.kind = 'rename',
+    required this.newUri,
+    required this.oldUri,
+    this.options,
   }) {
     if (kind != 'rename') {
       throw 'kind may only be the literal \'rename\'';
     }
   }
   static RenameFile fromJson(Map<String, Object?> json) {
+    final annotationIdJson = json['annotationId'];
+    final annotationId = annotationIdJson as String?;
     final kindJson = json['kind'];
     final kind = kindJson as String;
-    final oldUriJson = json['oldUri'];
-    final oldUri = oldUriJson as String;
     final newUriJson = json['newUri'];
     final newUri = newUriJson as String;
+    final oldUriJson = json['oldUri'];
+    final oldUri = oldUriJson as String;
     final optionsJson = json['options'];
     final options = optionsJson != null
         ? RenameFileOptions.fromJson(optionsJson as Map<String, Object?>)
         : null;
-    final annotationIdJson = json['annotationId'];
-    final annotationId = annotationIdJson as String?;
     return RenameFile(
-      kind: kind,
-      oldUri: oldUri,
-      newUri: newUri,
-      options: options,
       annotationId: annotationId,
+      kind: kind,
+      newUri: newUri,
+      oldUri: oldUri,
+      options: options,
     );
   }
 
@@ -30572,20 +29907,30 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['kind'] = kind;
-    __result['oldUri'] = oldUri;
-    __result['newUri'] = newUri;
-    if (options != null) {
-      __result['options'] = options?.toJson();
-    }
     if (annotationId != null) {
       __result['annotationId'] = annotationId;
     }
+    __result['kind'] = kind;
+    __result['newUri'] = newUri;
+    __result['oldUri'] = oldUri;
+    if (options != null) {
+      __result['options'] = options?.toJson();
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('annotationId');
+      try {
+        final annotationId = obj['annotationId'];
+        if (annotationId != null && !(annotationId is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -30604,24 +29949,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('oldUri');
-      try {
-        if (!obj.containsKey('oldUri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final oldUri = obj['oldUri'];
-        if (oldUri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(oldUri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('newUri');
       try {
         if (!obj.containsKey('newUri')) {
@@ -30640,6 +29967,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('oldUri');
+      try {
+        if (!obj.containsKey('oldUri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final oldUri = obj['oldUri'];
+        if (oldUri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(oldUri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('options');
       try {
         final options = obj['options'];
@@ -30651,16 +29996,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('annotationId');
-      try {
-        final annotationId = obj['annotationId'];
-        if (annotationId != null && !(annotationId is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type RenameFile');
@@ -30671,11 +30006,11 @@
   @override
   bool operator ==(Object other) {
     if (other is RenameFile && other.runtimeType == RenameFile) {
-      return kind == other.kind &&
-          oldUri == other.oldUri &&
+      return annotationId == other.annotationId &&
+          kind == other.kind &&
           newUri == other.newUri &&
+          oldUri == other.oldUri &&
           options == other.options &&
-          annotationId == other.annotationId &&
           true;
     }
     return false;
@@ -30683,11 +30018,11 @@
 
   @override
   int get hashCode => Object.hash(
-        kind,
-        oldUri,
-        newUri,
-        options,
         annotationId,
+        kind,
+        newUri,
+        oldUri,
+        options,
       );
 
   @override
@@ -30702,17 +30037,17 @@
   );
 
   RenameFileOptions({
-    this.overwrite,
     this.ignoreIfExists,
+    this.overwrite,
   });
   static RenameFileOptions fromJson(Map<String, Object?> json) {
-    final overwriteJson = json['overwrite'];
-    final overwrite = overwriteJson as bool?;
     final ignoreIfExistsJson = json['ignoreIfExists'];
     final ignoreIfExists = ignoreIfExistsJson as bool?;
+    final overwriteJson = json['overwrite'];
+    final overwrite = overwriteJson as bool?;
     return RenameFileOptions(
-      overwrite: overwrite,
       ignoreIfExists: ignoreIfExists,
+      overwrite: overwrite,
     );
   }
 
@@ -30724,31 +30059,31 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (overwrite != null) {
-      __result['overwrite'] = overwrite;
-    }
     if (ignoreIfExists != null) {
       __result['ignoreIfExists'] = ignoreIfExists;
     }
+    if (overwrite != null) {
+      __result['overwrite'] = overwrite;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('overwrite');
+      reporter.push('ignoreIfExists');
       try {
-        final overwrite = obj['overwrite'];
-        if (overwrite != null && !(overwrite is bool)) {
+        final ignoreIfExists = obj['ignoreIfExists'];
+        if (ignoreIfExists != null && !(ignoreIfExists is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('ignoreIfExists');
+      reporter.push('overwrite');
       try {
-        final ignoreIfExists = obj['ignoreIfExists'];
-        if (ignoreIfExists != null && !(ignoreIfExists is bool)) {
+        final overwrite = obj['overwrite'];
+        if (overwrite != null && !(overwrite is bool)) {
           reporter.reportError('must be of type bool');
           return false;
         }
@@ -30765,8 +30100,8 @@
   @override
   bool operator ==(Object other) {
     if (other is RenameFileOptions && other.runtimeType == RenameFileOptions) {
-      return overwrite == other.overwrite &&
-          ignoreIfExists == other.ignoreIfExists &&
+      return ignoreIfExists == other.ignoreIfExists &&
+          overwrite == other.overwrite &&
           true;
     }
     return false;
@@ -30774,8 +30109,8 @@
 
   @override
   int get hashCode => Object.hash(
-        overwrite,
         ignoreIfExists,
+        overwrite,
       );
 
   @override
@@ -30956,18 +30291,18 @@
 
   RenameParams({
     required this.newName,
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
     this.workDoneToken,
   });
   static RenameParams fromJson(Map<String, Object?> json) {
     final newNameJson = json['newName'];
     final newName = newNameJson as String;
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -30978,8 +30313,8 @@
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return RenameParams(
       newName: newName,
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -31000,8 +30335,8 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['newName'] = newName;
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -31028,24 +30363,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -31064,6 +30381,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -31086,8 +30421,8 @@
   bool operator ==(Object other) {
     if (other is RenameParams && other.runtimeType == RenameParams) {
       return newName == other.newName &&
-          textDocument == other.textDocument &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -31097,8 +30432,8 @@
   @override
   int get hashCode => Object.hash(
         newName,
-        textDocument,
         position,
+        textDocument,
         workDoneToken,
       );
 
@@ -31121,7 +30456,8 @@
   static RenameRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final prepareProviderJson = json['prepareProvider'];
     final prepareProvider = prepareProviderJson as bool?;
@@ -31136,7 +30472,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// Renames should be checked and tested before being executed.
   final bool? prepareProvider;
@@ -31166,8 +30502,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -31205,7 +30541,7 @@
     if (other is RenameRegistrationOptions &&
         other.runtimeType == RenameRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           prepareProvider == other.prepareProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -31231,33 +30567,33 @@
   );
 
   RequestMessage({
+    this.clientRequestTime,
     required this.id,
+    required this.jsonrpc,
     required this.method,
     this.params,
-    required this.jsonrpc,
-    this.clientRequestTime,
   });
   static RequestMessage fromJson(Map<String, Object?> json) {
+    final clientRequestTimeJson = json['clientRequestTime'];
+    final clientRequestTime = clientRequestTimeJson as int?;
     final idJson = json['id'];
     final id = idJson is int
         ? Either2<int, String>.t1(idJson)
         : (idJson is String
             ? Either2<int, String>.t2(idJson)
             : (throw '''$idJson was not one of (int, String)'''));
+    final jsonrpcJson = json['jsonrpc'];
+    final jsonrpc = jsonrpcJson as String;
     final methodJson = json['method'];
     final method = Method.fromJson(methodJson as String);
     final paramsJson = json['params'];
     final params = paramsJson;
-    final jsonrpcJson = json['jsonrpc'];
-    final jsonrpc = jsonrpcJson as String;
-    final clientRequestTimeJson = json['clientRequestTime'];
-    final clientRequestTime = clientRequestTimeJson as int?;
     return RequestMessage(
+      clientRequestTime: clientRequestTime,
       id: id,
+      jsonrpc: jsonrpc,
       method: method,
       params: params,
-      jsonrpc: jsonrpc,
-      clientRequestTime: clientRequestTime,
     );
   }
 
@@ -31275,20 +30611,30 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (clientRequestTime != null) {
+      __result['clientRequestTime'] = clientRequestTime;
+    }
     __result['id'] = id;
+    __result['jsonrpc'] = jsonrpc;
     __result['method'] = method.toJson();
     if (params != null) {
       __result['params'] = params;
     }
-    __result['jsonrpc'] = jsonrpc;
-    if (clientRequestTime != null) {
-      __result['clientRequestTime'] = clientRequestTime;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('clientRequestTime');
+      try {
+        final clientRequestTime = obj['clientRequestTime'];
+        if (clientRequestTime != null && !(clientRequestTime is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('id');
       try {
         if (!obj.containsKey('id')) {
@@ -31307,24 +30653,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('method');
-      try {
-        if (!obj.containsKey('method')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final method = obj['method'];
-        if (method == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Method.canParse(method, reporter))) {
-          reporter.reportError('must be of type Method');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('jsonrpc');
       try {
         if (!obj.containsKey('jsonrpc')) {
@@ -31343,11 +30671,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('clientRequestTime');
+      reporter.push('method');
       try {
-        final clientRequestTime = obj['clientRequestTime'];
-        if (clientRequestTime != null && !(clientRequestTime is int)) {
-          reporter.reportError('must be of type int');
+        if (!obj.containsKey('method')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final method = obj['method'];
+        if (method == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Method.canParse(method, reporter))) {
+          reporter.reportError('must be of type Method');
           return false;
         }
       } finally {
@@ -31363,11 +30699,11 @@
   @override
   bool operator ==(Object other) {
     if (other is RequestMessage && other.runtimeType == RequestMessage) {
-      return id == other.id &&
+      return clientRequestTime == other.clientRequestTime &&
+          id == other.id &&
+          jsonrpc == other.jsonrpc &&
           method == other.method &&
           params == other.params &&
-          jsonrpc == other.jsonrpc &&
-          clientRequestTime == other.clientRequestTime &&
           true;
     }
     return false;
@@ -31375,11 +30711,11 @@
 
   @override
   int get hashCode => Object.hash(
+        clientRequestTime,
         id,
+        jsonrpc,
         method,
         params,
-        jsonrpc,
-        clientRequestTime,
       );
 
   @override
@@ -31431,20 +30767,20 @@
 
   ResponseError({
     required this.code,
-    required this.message,
     this.data,
+    required this.message,
   });
   static ResponseError fromJson(Map<String, Object?> json) {
     final codeJson = json['code'];
     final code = ErrorCodes.fromJson(codeJson as int);
-    final messageJson = json['message'];
-    final message = messageJson as String;
     final dataJson = json['data'];
     final data = dataJson as String?;
+    final messageJson = json['message'];
+    final message = messageJson as String;
     return ResponseError(
       code: code,
-      message: message,
       data: data,
+      message: message,
     );
   }
 
@@ -31461,10 +30797,10 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['code'] = code.toJson();
-    __result['message'] = message;
     if (data != null) {
       __result['data'] = data;
     }
+    __result['message'] = message;
     return __result;
   }
 
@@ -31488,6 +30824,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('data');
+      try {
+        final data = obj['data'];
+        if (data != null && !(data is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('message');
       try {
         if (!obj.containsKey('message')) {
@@ -31506,16 +30852,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('data');
-      try {
-        final data = obj['data'];
-        if (data != null && !(data is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ResponseError');
@@ -31527,8 +30863,8 @@
   bool operator ==(Object other) {
     if (other is ResponseError && other.runtimeType == ResponseError) {
       return code == other.code &&
-          message == other.message &&
           data == other.data &&
+          message == other.message &&
           true;
     }
     return false;
@@ -31537,8 +30873,8 @@
   @override
   int get hashCode => Object.hash(
         code,
-        message,
         data,
+        message,
       );
 
   @override
@@ -31552,13 +30888,19 @@
   );
 
   ResponseMessage({
-    this.id,
-    this.result,
-    this.error,
-    required this.jsonrpc,
     this.clientRequestTime,
+    this.error,
+    this.id,
+    required this.jsonrpc,
+    this.result,
   });
   static ResponseMessage fromJson(Map<String, Object?> json) {
+    final clientRequestTimeJson = json['clientRequestTime'];
+    final clientRequestTime = clientRequestTimeJson as int?;
+    final errorJson = json['error'];
+    final error = errorJson != null
+        ? ResponseError.fromJson(errorJson as Map<String, Object?>)
+        : null;
     final idJson = json['id'];
     final id = idJson == null
         ? null
@@ -31567,22 +30909,16 @@
             : (idJson is String
                 ? Either2<int, String>.t2(idJson)
                 : (throw '''$idJson was not one of (int, String)''')));
-    final resultJson = json['result'];
-    final result = resultJson;
-    final errorJson = json['error'];
-    final error = errorJson != null
-        ? ResponseError.fromJson(errorJson as Map<String, Object?>)
-        : null;
     final jsonrpcJson = json['jsonrpc'];
     final jsonrpc = jsonrpcJson as String;
-    final clientRequestTimeJson = json['clientRequestTime'];
-    final clientRequestTime = clientRequestTimeJson as int?;
+    final resultJson = json['result'];
+    final result = resultJson;
     return ResponseMessage(
-      id: id,
-      result: result,
-      error: error,
-      jsonrpc: jsonrpc,
       clientRequestTime: clientRequestTime,
+      error: error,
+      id: id,
+      jsonrpc: jsonrpc,
+      result: result,
     );
   }
 
@@ -31601,11 +30937,11 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['id'] = id;
-    __result['jsonrpc'] = jsonrpc;
     if (clientRequestTime != null) {
       __result['clientRequestTime'] = clientRequestTime;
     }
+    __result['id'] = id;
+    __result['jsonrpc'] = jsonrpc;
     if (error != null && result != null) {
       throw 'result and error cannot both be set';
     } else if (error != null) {
@@ -31618,15 +30954,11 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('id');
+      reporter.push('clientRequestTime');
       try {
-        if (!obj.containsKey('id')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final id = obj['id'];
-        if (id != null && !((id is int || id is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        final clientRequestTime = obj['clientRequestTime'];
+        if (clientRequestTime != null && !(clientRequestTime is int)) {
+          reporter.reportError('must be of type int');
           return false;
         }
       } finally {
@@ -31642,6 +30974,20 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('id');
+      try {
+        if (!obj.containsKey('id')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final id = obj['id'];
+        if (id != null && !((id is int || id is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('jsonrpc');
       try {
         if (!obj.containsKey('jsonrpc')) {
@@ -31660,16 +31006,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('clientRequestTime');
-      try {
-        final clientRequestTime = obj['clientRequestTime'];
-        if (clientRequestTime != null && !(clientRequestTime is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ResponseMessage');
@@ -31680,11 +31016,11 @@
   @override
   bool operator ==(Object other) {
     if (other is ResponseMessage && other.runtimeType == ResponseMessage) {
-      return id == other.id &&
-          result == other.result &&
+      return clientRequestTime == other.clientRequestTime &&
           error == other.error &&
+          id == other.id &&
           jsonrpc == other.jsonrpc &&
-          clientRequestTime == other.clientRequestTime &&
+          result == other.result &&
           true;
     }
     return false;
@@ -31692,11 +31028,11 @@
 
   @override
   int get hashCode => Object.hash(
-        id,
-        result,
-        error,
-        jsonrpc,
         clientRequestTime,
+        error,
+        id,
+        jsonrpc,
+        result,
       );
 
   @override
@@ -31772,19 +31108,19 @@
   );
 
   SelectionRange({
-    required this.range,
     this.parent,
+    required this.range,
   });
   static SelectionRange fromJson(Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final parentJson = json['parent'];
     final parent = parentJson != null
         ? SelectionRange.fromJson(parentJson as Map<String, Object?>)
         : null;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return SelectionRange(
-      range: range,
       parent: parent,
+      range: range,
     );
   }
 
@@ -31797,15 +31133,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     if (parent != null) {
       __result['parent'] = parent?.toJson();
     }
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('parent');
+      try {
+        final parent = obj['parent'];
+        if (parent != null && !(SelectionRange.canParse(parent, reporter))) {
+          reporter.reportError('must be of type SelectionRange');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('range');
       try {
         if (!obj.containsKey('range')) {
@@ -31824,16 +31170,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('parent');
-      try {
-        final parent = obj['parent'];
-        if (parent != null && !(SelectionRange.canParse(parent, reporter))) {
-          reporter.reportError('must be of type SelectionRange');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type SelectionRange');
@@ -31844,15 +31180,15 @@
   @override
   bool operator ==(Object other) {
     if (other is SelectionRange && other.runtimeType == SelectionRange) {
-      return range == other.range && parent == other.parent && true;
+      return parent == other.parent && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         parent,
+        range,
       );
 
   @override
@@ -31998,27 +31334,12 @@
   );
 
   SelectionRangeParams({
-    required this.textDocument,
-    required this.positions,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.positions,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static SelectionRangeParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionsJson = json['positions'];
-    final positions = (positionsJson as List<Object?>)
-        .map((item) => Position.fromJson(item as Map<String, Object?>))
-        .toList();
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -32027,11 +31348,26 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionsJson = json['positions'];
+    final positions = (positionsJson as List<Object?>)
+        .map((item) => Position.fromJson(item as Map<String, Object?>))
+        .toList();
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return SelectionRangeParams(
-      textDocument: textDocument,
-      positions: positions,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      positions: positions,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -32050,32 +31386,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['positions'] = positions.map((item) => item.toJson()).toList();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['positions'] = positions.map((item) => item.toJson()).toList();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -32100,22 +31429,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -32133,11 +31469,11 @@
   bool operator ==(Object other) {
     if (other is SelectionRangeParams &&
         other.runtimeType == SelectionRangeParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           listEqual(
               positions, other.positions, (Position a, Position b) => a == b) &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -32145,10 +31481,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        lspHashCode(positions),
-        workDoneToken,
         partialResultToken,
+        lspHashCode(positions),
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -32167,29 +31503,30 @@
   );
 
   SelectionRangeRegistrationOptions({
-    this.workDoneProgress,
     this.documentSelector,
     this.id,
+    this.workDoneProgress,
   });
   static SelectionRangeRegistrationOptions fromJson(Map<String, Object?> json) {
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return SelectionRangeRegistrationOptions(
-      workDoneProgress: workDoneProgress,
       documentSelector: documentSelector,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -32198,28 +31535,18 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     __result['documentSelector'] = documentSelector;
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('documentSelector');
       try {
         if (!obj.containsKey('documentSelector')) {
@@ -32230,8 +31557,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -32247,6 +31574,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type SelectionRangeRegistrationOptions');
@@ -32258,10 +31595,10 @@
   bool operator ==(Object other) {
     if (other is SelectionRangeRegistrationOptions &&
         other.runtimeType == SelectionRangeRegistrationOptions) {
-      return workDoneProgress == other.workDoneProgress &&
-          listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+      return listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -32269,9 +31606,9 @@
 
   @override
   int get hashCode => Object.hash(
-        workDoneProgress,
         lspHashCode(documentSelector),
         id,
+        workDoneProgress,
       );
 
   @override
@@ -32365,18 +31702,18 @@
   );
 
   SemanticTokens({
-    this.resultId,
     required this.data,
+    this.resultId,
   });
   static SemanticTokens fromJson(Map<String, Object?> json) {
-    final resultIdJson = json['resultId'];
-    final resultId = resultIdJson as String?;
     final dataJson = json['data'];
     final data =
         (dataJson as List<Object?>).map((item) => item as int).toList();
+    final resultIdJson = json['resultId'];
+    final resultId = resultIdJson as String?;
     return SemanticTokens(
-      resultId: resultId,
       data: data,
+      resultId: resultId,
     );
   }
 
@@ -32391,25 +31728,15 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['data'] = data;
     if (resultId != null) {
       __result['resultId'] = resultId;
     }
-    __result['data'] = data;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('resultId');
-      try {
-        final resultId = obj['resultId'];
-        if (resultId != null && !(resultId is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('data');
       try {
         if (!obj.containsKey('data')) {
@@ -32428,6 +31755,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('resultId');
+      try {
+        final resultId = obj['resultId'];
+        if (resultId != null && !(resultId is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type SemanticTokens');
@@ -32438,8 +31775,8 @@
   @override
   bool operator ==(Object other) {
     if (other is SemanticTokens && other.runtimeType == SemanticTokens) {
-      return resultId == other.resultId &&
-          listEqual(data, other.data, (int a, int b) => a == b) &&
+      return listEqual(data, other.data, (int a, int b) => a == b) &&
+          resultId == other.resultId &&
           true;
     }
     return false;
@@ -32447,8 +31784,8 @@
 
   @override
   int get hashCode => Object.hash(
-        resultId,
         lspHashCode(data),
+        resultId,
       );
 
   @override
@@ -32462,52 +31799,52 @@
   );
 
   SemanticTokensClientCapabilities({
-    this.dynamicRegistration,
-    required this.requests,
-    required this.tokenTypes,
-    required this.tokenModifiers,
-    required this.formats,
-    this.overlappingTokenSupport,
-    this.multilineTokenSupport,
-    this.serverCancelSupport,
     this.augmentsSyntaxTokens,
+    this.dynamicRegistration,
+    required this.formats,
+    this.multilineTokenSupport,
+    this.overlappingTokenSupport,
+    required this.requests,
+    this.serverCancelSupport,
+    required this.tokenModifiers,
+    required this.tokenTypes,
   });
   static SemanticTokensClientCapabilities fromJson(Map<String, Object?> json) {
+    final augmentsSyntaxTokensJson = json['augmentsSyntaxTokens'];
+    final augmentsSyntaxTokens = augmentsSyntaxTokensJson as bool?;
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
-    final requestsJson = json['requests'];
-    final requests = SemanticTokensClientCapabilitiesRequests.fromJson(
-        requestsJson as Map<String, Object?>);
-    final tokenTypesJson = json['tokenTypes'];
-    final tokenTypes = (tokenTypesJson as List<Object?>)
-        .map((item) => item as String)
-        .toList();
-    final tokenModifiersJson = json['tokenModifiers'];
-    final tokenModifiers = (tokenModifiersJson as List<Object?>)
-        .map((item) => item as String)
-        .toList();
     final formatsJson = json['formats'];
     final formats = (formatsJson as List<Object?>)
         .map((item) => TokenFormat.fromJson(item as String))
         .toList();
-    final overlappingTokenSupportJson = json['overlappingTokenSupport'];
-    final overlappingTokenSupport = overlappingTokenSupportJson as bool?;
     final multilineTokenSupportJson = json['multilineTokenSupport'];
     final multilineTokenSupport = multilineTokenSupportJson as bool?;
+    final overlappingTokenSupportJson = json['overlappingTokenSupport'];
+    final overlappingTokenSupport = overlappingTokenSupportJson as bool?;
+    final requestsJson = json['requests'];
+    final requests = SemanticTokensClientCapabilitiesRequests.fromJson(
+        requestsJson as Map<String, Object?>);
     final serverCancelSupportJson = json['serverCancelSupport'];
     final serverCancelSupport = serverCancelSupportJson as bool?;
-    final augmentsSyntaxTokensJson = json['augmentsSyntaxTokens'];
-    final augmentsSyntaxTokens = augmentsSyntaxTokensJson as bool?;
+    final tokenModifiersJson = json['tokenModifiers'];
+    final tokenModifiers = (tokenModifiersJson as List<Object?>)
+        .map((item) => item as String)
+        .toList();
+    final tokenTypesJson = json['tokenTypes'];
+    final tokenTypes = (tokenTypesJson as List<Object?>)
+        .map((item) => item as String)
+        .toList();
     return SemanticTokensClientCapabilities(
-      dynamicRegistration: dynamicRegistration,
-      requests: requests,
-      tokenTypes: tokenTypes,
-      tokenModifiers: tokenModifiers,
-      formats: formats,
-      overlappingTokenSupport: overlappingTokenSupport,
-      multilineTokenSupport: multilineTokenSupport,
-      serverCancelSupport: serverCancelSupport,
       augmentsSyntaxTokens: augmentsSyntaxTokens,
+      dynamicRegistration: dynamicRegistration,
+      formats: formats,
+      multilineTokenSupport: multilineTokenSupport,
+      overlappingTokenSupport: overlappingTokenSupport,
+      requests: requests,
+      serverCancelSupport: serverCancelSupport,
+      tokenModifiers: tokenModifiers,
+      tokenTypes: tokenTypes,
     );
   }
 
@@ -32559,30 +31896,40 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (dynamicRegistration != null) {
-      __result['dynamicRegistration'] = dynamicRegistration;
-    }
-    __result['requests'] = requests.toJson();
-    __result['tokenTypes'] = tokenTypes;
-    __result['tokenModifiers'] = tokenModifiers;
-    __result['formats'] = formats.map((item) => item.toJson()).toList();
-    if (overlappingTokenSupport != null) {
-      __result['overlappingTokenSupport'] = overlappingTokenSupport;
-    }
-    if (multilineTokenSupport != null) {
-      __result['multilineTokenSupport'] = multilineTokenSupport;
-    }
-    if (serverCancelSupport != null) {
-      __result['serverCancelSupport'] = serverCancelSupport;
-    }
     if (augmentsSyntaxTokens != null) {
       __result['augmentsSyntaxTokens'] = augmentsSyntaxTokens;
     }
+    if (dynamicRegistration != null) {
+      __result['dynamicRegistration'] = dynamicRegistration;
+    }
+    __result['formats'] = formats.map((item) => item.toJson()).toList();
+    if (multilineTokenSupport != null) {
+      __result['multilineTokenSupport'] = multilineTokenSupport;
+    }
+    if (overlappingTokenSupport != null) {
+      __result['overlappingTokenSupport'] = overlappingTokenSupport;
+    }
+    __result['requests'] = requests.toJson();
+    if (serverCancelSupport != null) {
+      __result['serverCancelSupport'] = serverCancelSupport;
+    }
+    __result['tokenModifiers'] = tokenModifiers;
+    __result['tokenTypes'] = tokenTypes;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('augmentsSyntaxTokens');
+      try {
+        final augmentsSyntaxTokens = obj['augmentsSyntaxTokens'];
+        if (augmentsSyntaxTokens != null && !(augmentsSyntaxTokens is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('dynamicRegistration');
       try {
         final dynamicRegistration = obj['dynamicRegistration'];
@@ -32593,6 +31940,46 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('formats');
+      try {
+        if (!obj.containsKey('formats')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final formats = obj['formats'];
+        if (formats == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!((formats is List<Object?> &&
+            (formats.every((item) => TokenFormat.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TokenFormat>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('multilineTokenSupport');
+      try {
+        final multilineTokenSupport = obj['multilineTokenSupport'];
+        if (multilineTokenSupport != null && !(multilineTokenSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('overlappingTokenSupport');
+      try {
+        final overlappingTokenSupport = obj['overlappingTokenSupport'];
+        if (overlappingTokenSupport != null &&
+            !(overlappingTokenSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('requests');
       try {
         if (!obj.containsKey('requests')) {
@@ -32613,20 +32000,11 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tokenTypes');
+      reporter.push('serverCancelSupport');
       try {
-        if (!obj.containsKey('tokenTypes')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final tokenTypes = obj['tokenTypes'];
-        if (tokenTypes == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!((tokenTypes is List<Object?> &&
-            (tokenTypes.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
+        final serverCancelSupport = obj['serverCancelSupport'];
+        if (serverCancelSupport != null && !(serverCancelSupport is bool)) {
+          reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
@@ -32651,61 +32029,20 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('formats');
+      reporter.push('tokenTypes');
       try {
-        if (!obj.containsKey('formats')) {
+        if (!obj.containsKey('tokenTypes')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final formats = obj['formats'];
-        if (formats == null) {
+        final tokenTypes = obj['tokenTypes'];
+        if (tokenTypes == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!((formats is List<Object?> &&
-            (formats.every((item) => TokenFormat.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<TokenFormat>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('overlappingTokenSupport');
-      try {
-        final overlappingTokenSupport = obj['overlappingTokenSupport'];
-        if (overlappingTokenSupport != null &&
-            !(overlappingTokenSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('multilineTokenSupport');
-      try {
-        final multilineTokenSupport = obj['multilineTokenSupport'];
-        if (multilineTokenSupport != null && !(multilineTokenSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('serverCancelSupport');
-      try {
-        final serverCancelSupport = obj['serverCancelSupport'];
-        if (serverCancelSupport != null && !(serverCancelSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('augmentsSyntaxTokens');
-      try {
-        final augmentsSyntaxTokens = obj['augmentsSyntaxTokens'];
-        if (augmentsSyntaxTokens != null && !(augmentsSyntaxTokens is bool)) {
-          reporter.reportError('must be of type bool');
+        if (!((tokenTypes is List<Object?> &&
+            (tokenTypes.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
           return false;
         }
       } finally {
@@ -32722,18 +32059,18 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensClientCapabilities &&
         other.runtimeType == SemanticTokensClientCapabilities) {
-      return dynamicRegistration == other.dynamicRegistration &&
-          requests == other.requests &&
-          listEqual(
-              tokenTypes, other.tokenTypes, (String a, String b) => a == b) &&
-          listEqual(tokenModifiers, other.tokenModifiers,
-              (String a, String b) => a == b) &&
+      return augmentsSyntaxTokens == other.augmentsSyntaxTokens &&
+          dynamicRegistration == other.dynamicRegistration &&
           listEqual(formats, other.formats,
               (TokenFormat a, TokenFormat b) => a == b) &&
-          overlappingTokenSupport == other.overlappingTokenSupport &&
           multilineTokenSupport == other.multilineTokenSupport &&
+          overlappingTokenSupport == other.overlappingTokenSupport &&
+          requests == other.requests &&
           serverCancelSupport == other.serverCancelSupport &&
-          augmentsSyntaxTokens == other.augmentsSyntaxTokens &&
+          listEqual(tokenModifiers, other.tokenModifiers,
+              (String a, String b) => a == b) &&
+          listEqual(
+              tokenTypes, other.tokenTypes, (String a, String b) => a == b) &&
           true;
     }
     return false;
@@ -32741,15 +32078,15 @@
 
   @override
   int get hashCode => Object.hash(
-        dynamicRegistration,
-        requests,
-        lspHashCode(tokenTypes),
-        lspHashCode(tokenModifiers),
-        lspHashCode(formats),
-        overlappingTokenSupport,
-        multilineTokenSupport,
-        serverCancelSupport,
         augmentsSyntaxTokens,
+        dynamicRegistration,
+        lspHashCode(formats),
+        multilineTokenSupport,
+        overlappingTokenSupport,
+        requests,
+        serverCancelSupport,
+        lspHashCode(tokenModifiers),
+        lspHashCode(tokenTypes),
       );
 
   @override
@@ -32871,22 +32208,11 @@
   );
 
   SemanticTokensClientCapabilitiesRequests({
-    this.range,
     this.full,
+    this.range,
   });
   static SemanticTokensClientCapabilitiesRequests fromJson(
       Map<String, Object?> json) {
-    final rangeJson = json['range'];
-    final range = rangeJson == null
-        ? null
-        : (rangeJson is bool
-            ? Either2<bool, SemanticTokensClientCapabilitiesRange>.t1(rangeJson)
-            : (SemanticTokensClientCapabilitiesRange.canParse(
-                    rangeJson, nullLspJsonReporter)
-                ? Either2<bool, SemanticTokensClientCapabilitiesRange>.t2(
-                    SemanticTokensClientCapabilitiesRange.fromJson(
-                        rangeJson as Map<String, Object?>))
-                : (throw '''$rangeJson was not one of (bool, SemanticTokensClientCapabilitiesRange)''')));
     final fullJson = json['full'];
     final full = fullJson == null
         ? null
@@ -32898,9 +32224,20 @@
                     SemanticTokensClientCapabilitiesFull.fromJson(
                         fullJson as Map<String, Object?>))
                 : (throw '''$fullJson was not one of (bool, SemanticTokensClientCapabilitiesFull)''')));
+    final rangeJson = json['range'];
+    final range = rangeJson == null
+        ? null
+        : (rangeJson is bool
+            ? Either2<bool, SemanticTokensClientCapabilitiesRange>.t1(rangeJson)
+            : (SemanticTokensClientCapabilitiesRange.canParse(
+                    rangeJson, nullLspJsonReporter)
+                ? Either2<bool, SemanticTokensClientCapabilitiesRange>.t2(
+                    SemanticTokensClientCapabilitiesRange.fromJson(
+                        rangeJson as Map<String, Object?>))
+                : (throw '''$rangeJson was not one of (bool, SemanticTokensClientCapabilitiesRange)''')));
     return SemanticTokensClientCapabilitiesRequests(
-      range: range,
       full: full,
+      range: range,
     );
   }
 
@@ -32914,31 +32251,17 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (range != null) {
-      __result['range'] = range;
-    }
     if (full != null) {
       __result['full'] = full;
     }
+    if (range != null) {
+      __result['range'] = range;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('range');
-      try {
-        final range = obj['range'];
-        if (range != null &&
-            !((range is bool ||
-                SemanticTokensClientCapabilitiesRange.canParse(
-                    range, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<bool, SemanticTokensClientCapabilitiesRange>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('full');
       try {
         final full = obj['full'];
@@ -32953,6 +32276,20 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('range');
+      try {
+        final range = obj['range'];
+        if (range != null &&
+            !((range is bool ||
+                SemanticTokensClientCapabilitiesRange.canParse(
+                    range, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, SemanticTokensClientCapabilitiesRange>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError(
@@ -32965,15 +32302,15 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensClientCapabilitiesRequests &&
         other.runtimeType == SemanticTokensClientCapabilitiesRequests) {
-      return range == other.range && full == other.full && true;
+      return full == other.full && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         full,
+        range,
       );
 
   @override
@@ -32987,20 +32324,20 @@
   );
 
   SemanticTokensDelta({
-    this.resultId,
     required this.edits,
+    this.resultId,
   });
   static SemanticTokensDelta fromJson(Map<String, Object?> json) {
-    final resultIdJson = json['resultId'];
-    final resultId = resultIdJson as String?;
     final editsJson = json['edits'];
     final edits = (editsJson as List<Object?>)
         .map(
             (item) => SemanticTokensEdit.fromJson(item as Map<String, Object?>))
         .toList();
+    final resultIdJson = json['resultId'];
+    final resultId = resultIdJson as String?;
     return SemanticTokensDelta(
-      resultId: resultId,
       edits: edits,
+      resultId: resultId,
     );
   }
 
@@ -33010,25 +32347,15 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['edits'] = edits.map((item) => item.toJson()).toList();
     if (resultId != null) {
       __result['resultId'] = resultId;
     }
-    __result['edits'] = edits.map((item) => item.toJson()).toList();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('resultId');
-      try {
-        final resultId = obj['resultId'];
-        if (resultId != null && !(resultId is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('edits');
       try {
         if (!obj.containsKey('edits')) {
@@ -33049,6 +32376,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('resultId');
+      try {
+        final resultId = obj['resultId'];
+        if (resultId != null && !(resultId is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type SemanticTokensDelta');
@@ -33060,9 +32397,9 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensDelta &&
         other.runtimeType == SemanticTokensDelta) {
-      return resultId == other.resultId &&
-          listEqual(edits, other.edits,
+      return listEqual(edits, other.edits,
               (SemanticTokensEdit a, SemanticTokensEdit b) => a == b) &&
+          resultId == other.resultId &&
           true;
     }
     return false;
@@ -33070,8 +32407,8 @@
 
   @override
   int get hashCode => Object.hash(
-        resultId,
         lspHashCode(edits),
+        resultId,
       );
 
   @override
@@ -33086,25 +32423,12 @@
   );
 
   SemanticTokensDeltaParams({
-    required this.textDocument,
-    required this.previousResultId,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.previousResultId,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static SemanticTokensDeltaParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final previousResultIdJson = json['previousResultId'];
-    final previousResultId = previousResultIdJson as String;
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -33113,11 +32437,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final previousResultIdJson = json['previousResultId'];
+    final previousResultId = previousResultIdJson as String;
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return SemanticTokensDeltaParams(
-      textDocument: textDocument,
-      previousResultId: previousResultId,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      previousResultId: previousResultId,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -33137,32 +32474,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['previousResultId'] = previousResultId;
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['previousResultId'] = previousResultId;
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -33186,22 +32516,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -33219,10 +32556,10 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensDeltaParams &&
         other.runtimeType == SemanticTokensDeltaParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           previousResultId == other.previousResultId &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -33230,10 +32567,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        previousResultId,
-        workDoneToken,
         partialResultToken,
+        previousResultId,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -33322,22 +32659,22 @@
   );
 
   SemanticTokensEdit({
-    required this.start,
-    required this.deleteCount,
     this.data,
+    required this.deleteCount,
+    required this.start,
   });
   static SemanticTokensEdit fromJson(Map<String, Object?> json) {
-    final startJson = json['start'];
-    final start = startJson as int;
-    final deleteCountJson = json['deleteCount'];
-    final deleteCount = deleteCountJson as int;
     final dataJson = json['data'];
     final data =
         (dataJson as List<Object?>?)?.map((item) => item as int).toList();
+    final deleteCountJson = json['deleteCount'];
+    final deleteCount = deleteCountJson as int;
+    final startJson = json['start'];
+    final start = startJson as int;
     return SemanticTokensEdit(
-      start: start,
-      deleteCount: deleteCount,
       data: data,
+      deleteCount: deleteCount,
+      start: start,
     );
   }
 
@@ -33352,29 +32689,22 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['start'] = start;
-    __result['deleteCount'] = deleteCount;
     if (data != null) {
       __result['data'] = data;
     }
+    __result['deleteCount'] = deleteCount;
+    __result['start'] = start;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('start');
+      reporter.push('data');
       try {
-        if (!obj.containsKey('start')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final start = obj['start'];
-        if (start == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(start is int)) {
-          reporter.reportError('must be of type int');
+        final data = obj['data'];
+        if (data != null &&
+            !((data is List<Object?> && (data.every((item) => item is int))))) {
+          reporter.reportError('must be of type List<int>');
           return false;
         }
       } finally {
@@ -33398,12 +32728,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('data');
+      reporter.push('start');
       try {
-        final data = obj['data'];
-        if (data != null &&
-            !((data is List<Object?> && (data.every((item) => item is int))))) {
-          reporter.reportError('must be of type List<int>');
+        if (!obj.containsKey('start')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final start = obj['start'];
+        if (start == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(start is int)) {
+          reporter.reportError('must be of type int');
           return false;
         }
       } finally {
@@ -33420,9 +32757,9 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensEdit &&
         other.runtimeType == SemanticTokensEdit) {
-      return start == other.start &&
+      return listEqual(data, other.data, (int a, int b) => a == b) &&
           deleteCount == other.deleteCount &&
-          listEqual(data, other.data, (int a, int b) => a == b) &&
+          start == other.start &&
           true;
     }
     return false;
@@ -33430,9 +32767,9 @@
 
   @override
   int get hashCode => Object.hash(
-        start,
-        deleteCount,
         lspHashCode(data),
+        deleteCount,
+        start,
       );
 
   @override
@@ -33446,21 +32783,21 @@
   );
 
   SemanticTokensLegend({
-    required this.tokenTypes,
     required this.tokenModifiers,
+    required this.tokenTypes,
   });
   static SemanticTokensLegend fromJson(Map<String, Object?> json) {
-    final tokenTypesJson = json['tokenTypes'];
-    final tokenTypes = (tokenTypesJson as List<Object?>)
-        .map((item) => item as String)
-        .toList();
     final tokenModifiersJson = json['tokenModifiers'];
     final tokenModifiers = (tokenModifiersJson as List<Object?>)
         .map((item) => item as String)
         .toList();
+    final tokenTypesJson = json['tokenTypes'];
+    final tokenTypes = (tokenTypesJson as List<Object?>)
+        .map((item) => item as String)
+        .toList();
     return SemanticTokensLegend(
-      tokenTypes: tokenTypes,
       tokenModifiers: tokenModifiers,
+      tokenTypes: tokenTypes,
     );
   }
 
@@ -33472,32 +32809,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['tokenTypes'] = tokenTypes;
     __result['tokenModifiers'] = tokenModifiers;
+    __result['tokenTypes'] = tokenTypes;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('tokenTypes');
-      try {
-        if (!obj.containsKey('tokenTypes')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final tokenTypes = obj['tokenTypes'];
-        if (tokenTypes == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!((tokenTypes is List<Object?> &&
-            (tokenTypes.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('tokenModifiers');
       try {
         if (!obj.containsKey('tokenModifiers')) {
@@ -33517,6 +32835,25 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('tokenTypes');
+      try {
+        if (!obj.containsKey('tokenTypes')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final tokenTypes = obj['tokenTypes'];
+        if (tokenTypes == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!((tokenTypes is List<Object?> &&
+            (tokenTypes.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type SemanticTokensLegend');
@@ -33528,10 +32865,10 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensLegend &&
         other.runtimeType == SemanticTokensLegend) {
-      return listEqual(
-              tokenTypes, other.tokenTypes, (String a, String b) => a == b) &&
-          listEqual(tokenModifiers, other.tokenModifiers,
+      return listEqual(tokenModifiers, other.tokenModifiers,
               (String a, String b) => a == b) &&
+          listEqual(
+              tokenTypes, other.tokenTypes, (String a, String b) => a == b) &&
           true;
     }
     return false;
@@ -33539,8 +32876,8 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(tokenTypes),
         lspHashCode(tokenModifiers),
+        lspHashCode(tokenTypes),
       );
 
   @override
@@ -33554,15 +32891,25 @@
   );
 
   SemanticTokensOptions({
+    this.full,
     required this.legend,
     this.range,
-    this.full,
     this.workDoneProgress,
   });
   static SemanticTokensOptions fromJson(Map<String, Object?> json) {
     if (SemanticTokensRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return SemanticTokensRegistrationOptions.fromJson(json);
     }
+    final fullJson = json['full'];
+    final full = fullJson == null
+        ? null
+        : (fullJson is bool
+            ? Either2<bool, SemanticTokensOptionsFull>.t1(fullJson)
+            : (SemanticTokensOptionsFull.canParse(fullJson, nullLspJsonReporter)
+                ? Either2<bool, SemanticTokensOptionsFull>.t2(
+                    SemanticTokensOptionsFull.fromJson(
+                        fullJson as Map<String, Object?>))
+                : (throw '''$fullJson was not one of (bool, SemanticTokensOptionsFull)''')));
     final legendJson = json['legend'];
     final legend =
         SemanticTokensLegend.fromJson(legendJson as Map<String, Object?>);
@@ -33577,22 +32924,12 @@
                     SemanticTokensOptionsRange.fromJson(
                         rangeJson as Map<String, Object?>))
                 : (throw '''$rangeJson was not one of (bool, SemanticTokensOptionsRange)''')));
-    final fullJson = json['full'];
-    final full = fullJson == null
-        ? null
-        : (fullJson is bool
-            ? Either2<bool, SemanticTokensOptionsFull>.t1(fullJson)
-            : (SemanticTokensOptionsFull.canParse(fullJson, nullLspJsonReporter)
-                ? Either2<bool, SemanticTokensOptionsFull>.t2(
-                    SemanticTokensOptionsFull.fromJson(
-                        fullJson as Map<String, Object?>))
-                : (throw '''$fullJson was not one of (bool, SemanticTokensOptionsFull)''')));
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return SemanticTokensOptions(
+      full: full,
       legend: legend,
       range: range,
-      full: full,
       workDoneProgress: workDoneProgress,
     );
   }
@@ -33610,13 +32947,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (full != null) {
+      __result['full'] = full;
+    }
     __result['legend'] = legend.toJson();
     if (range != null) {
       __result['range'] = range;
     }
-    if (full != null) {
-      __result['full'] = full;
-    }
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
     }
@@ -33625,6 +32962,19 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('full');
+      try {
+        final full = obj['full'];
+        if (full != null &&
+            !((full is bool ||
+                SemanticTokensOptionsFull.canParse(full, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, SemanticTokensOptionsFull>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('legend');
       try {
         if (!obj.containsKey('legend')) {
@@ -33656,19 +33006,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('full');
-      try {
-        final full = obj['full'];
-        if (full != null &&
-            !((full is bool ||
-                SemanticTokensOptionsFull.canParse(full, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<bool, SemanticTokensOptionsFull>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('workDoneProgress');
       try {
         final workDoneProgress = obj['workDoneProgress'];
@@ -33690,9 +33027,9 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensOptions &&
         other.runtimeType == SemanticTokensOptions) {
-      return legend == other.legend &&
+      return full == other.full &&
+          legend == other.legend &&
           range == other.range &&
-          full == other.full &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -33701,9 +33038,9 @@
 
   @override
   int get hashCode => Object.hash(
+        full,
         legend,
         range,
-        full,
         workDoneProgress,
       );
 
@@ -33822,11 +33159,19 @@
   );
 
   SemanticTokensParams({
+    this.partialResultToken,
     required this.textDocument,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static SemanticTokensParams fromJson(Map<String, Object?> json) {
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
@@ -33838,18 +33183,10 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return SemanticTokensParams(
+      partialResultToken: partialResultToken,
       textDocument: textDocument,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -33865,18 +33202,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -33906,17 +33254,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type SemanticTokensParams');
@@ -33928,9 +33265,9 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensParams &&
         other.runtimeType == SemanticTokensParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -33938,9 +33275,9 @@
 
   @override
   int get hashCode => Object.hash(
+        partialResultToken,
         textDocument,
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -34024,25 +33361,12 @@
   );
 
   SemanticTokensRangeParams({
-    required this.textDocument,
-    required this.range,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.range,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static SemanticTokensRangeParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -34051,11 +33375,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return SemanticTokensRangeParams(
-      textDocument: textDocument,
-      range: range,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      range: range,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -34074,32 +33411,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['range'] = range.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['range'] = range.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -34123,22 +33453,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -34156,10 +33493,10 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensRangeParams &&
         other.runtimeType == SemanticTokensRangeParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           range == other.range &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -34167,10 +33504,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        range,
-        workDoneToken,
         partialResultToken,
+        range,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -34190,17 +33527,30 @@
 
   SemanticTokensRegistrationOptions({
     this.documentSelector,
+    this.full,
+    this.id,
     required this.legend,
     this.range,
-    this.full,
     this.workDoneProgress,
-    this.id,
   });
   static SemanticTokensRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
+    final fullJson = json['full'];
+    final full = fullJson == null
+        ? null
+        : (fullJson is bool
+            ? Either2<bool, SemanticTokensOptionsFull>.t1(fullJson)
+            : (SemanticTokensOptionsFull.canParse(fullJson, nullLspJsonReporter)
+                ? Either2<bool, SemanticTokensOptionsFull>.t2(
+                    SemanticTokensOptionsFull.fromJson(
+                        fullJson as Map<String, Object?>))
+                : (throw '''$fullJson was not one of (bool, SemanticTokensOptionsFull)''')));
+    final idJson = json['id'];
+    final id = idJson as String?;
     final legendJson = json['legend'];
     final legend =
         SemanticTokensLegend.fromJson(legendJson as Map<String, Object?>);
@@ -34215,33 +33565,21 @@
                     SemanticTokensOptionsRange.fromJson(
                         rangeJson as Map<String, Object?>))
                 : (throw '''$rangeJson was not one of (bool, SemanticTokensOptionsRange)''')));
-    final fullJson = json['full'];
-    final full = fullJson == null
-        ? null
-        : (fullJson is bool
-            ? Either2<bool, SemanticTokensOptionsFull>.t1(fullJson)
-            : (SemanticTokensOptionsFull.canParse(fullJson, nullLspJsonReporter)
-                ? Either2<bool, SemanticTokensOptionsFull>.t2(
-                    SemanticTokensOptionsFull.fromJson(
-                        fullJson as Map<String, Object?>))
-                : (throw '''$fullJson was not one of (bool, SemanticTokensOptionsFull)''')));
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    final idJson = json['id'];
-    final id = idJson as String?;
     return SemanticTokensRegistrationOptions(
       documentSelector: documentSelector,
+      full: full,
+      id: id,
       legend: legend,
       range: range,
-      full: full,
       workDoneProgress: workDoneProgress,
-      id: id,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// Server supports providing semantic tokens for a full document.
   final Either2<bool, SemanticTokensOptionsFull>? full;
@@ -34261,19 +33599,19 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
+    if (full != null) {
+      __result['full'] = full;
+    }
+    if (id != null) {
+      __result['id'] = id;
+    }
     __result['legend'] = legend.toJson();
     if (range != null) {
       __result['range'] = range;
     }
-    if (full != null) {
-      __result['full'] = full;
-    }
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
     }
-    if (id != null) {
-      __result['id'] = id;
-    }
     return __result;
   }
 
@@ -34289,8 +33627,31 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('full');
+      try {
+        final full = obj['full'];
+        if (full != null &&
+            !((full is bool ||
+                SemanticTokensOptionsFull.canParse(full, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, SemanticTokensOptionsFull>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('id');
+      try {
+        final id = obj['id'];
+        if (id != null && !(id is String)) {
+          reporter.reportError('must be of type String');
           return false;
         }
       } finally {
@@ -34327,19 +33688,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('full');
-      try {
-        final full = obj['full'];
-        if (full != null &&
-            !((full is bool ||
-                SemanticTokensOptionsFull.canParse(full, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<bool, SemanticTokensOptionsFull>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('workDoneProgress');
       try {
         final workDoneProgress = obj['workDoneProgress'];
@@ -34350,16 +33698,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('id');
-      try {
-        final id = obj['id'];
-        if (id != null && !(id is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type SemanticTokensRegistrationOptions');
@@ -34372,12 +33710,12 @@
     if (other is SemanticTokensRegistrationOptions &&
         other.runtimeType == SemanticTokensRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+          full == other.full &&
+          id == other.id &&
           legend == other.legend &&
           range == other.range &&
-          full == other.full &&
           workDoneProgress == other.workDoneProgress &&
-          id == other.id &&
           true;
     }
     return false;
@@ -34386,11 +33724,11 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
+        full,
+        id,
         legend,
         range,
-        full,
         workDoneProgress,
-        id,
       );
 
   @override
@@ -34475,93 +33813,96 @@
   );
 
   ServerCapabilities({
-    this.positionEncoding,
-    this.textDocumentSync,
-    this.notebookDocumentSync,
-    this.completionProvider,
-    this.hoverProvider,
-    this.signatureHelpProvider,
-    this.declarationProvider,
-    this.definitionProvider,
-    this.typeDefinitionProvider,
-    this.implementationProvider,
-    this.referencesProvider,
-    this.documentHighlightProvider,
-    this.documentSymbolProvider,
+    this.callHierarchyProvider,
     this.codeActionProvider,
     this.codeLensProvider,
-    this.documentLinkProvider,
     this.colorProvider,
-    this.documentFormattingProvider,
-    this.documentRangeFormattingProvider,
-    this.documentOnTypeFormattingProvider,
-    this.renameProvider,
-    this.foldingRangeProvider,
-    this.executeCommandProvider,
-    this.selectionRangeProvider,
-    this.linkedEditingRangeProvider,
-    this.callHierarchyProvider,
-    this.semanticTokensProvider,
-    this.monikerProvider,
-    this.typeHierarchyProvider,
-    this.inlineValueProvider,
-    this.inlayHintProvider,
+    this.completionProvider,
+    this.declarationProvider,
+    this.definitionProvider,
     this.diagnosticProvider,
-    this.workspaceSymbolProvider,
-    this.workspace,
+    this.documentFormattingProvider,
+    this.documentHighlightProvider,
+    this.documentLinkProvider,
+    this.documentOnTypeFormattingProvider,
+    this.documentRangeFormattingProvider,
+    this.documentSymbolProvider,
+    this.executeCommandProvider,
     this.experimental,
+    this.foldingRangeProvider,
+    this.hoverProvider,
+    this.implementationProvider,
+    this.inlayHintProvider,
+    this.inlineValueProvider,
+    this.linkedEditingRangeProvider,
+    this.monikerProvider,
+    this.notebookDocumentSync,
+    this.positionEncoding,
+    this.referencesProvider,
+    this.renameProvider,
+    this.selectionRangeProvider,
+    this.semanticTokensProvider,
+    this.signatureHelpProvider,
+    this.textDocumentSync,
+    this.typeDefinitionProvider,
+    this.typeHierarchyProvider,
+    this.workspace,
+    this.workspaceSymbolProvider,
   });
   static ServerCapabilities fromJson(Map<String, Object?> json) {
-    final positionEncodingJson = json['positionEncoding'];
-    final positionEncoding = positionEncodingJson != null
-        ? PositionEncodingKind.fromJson(positionEncodingJson as String)
+    final callHierarchyProviderJson = json['callHierarchyProvider'];
+    final callHierarchyProvider = callHierarchyProviderJson == null
+        ? null
+        : (callHierarchyProviderJson is bool
+            ? Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>.t1(
+                callHierarchyProviderJson)
+            : (CallHierarchyOptions.canParse(
+                    callHierarchyProviderJson, nullLspJsonReporter)
+                ? Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>.t2(
+                    CallHierarchyOptions.fromJson(
+                        callHierarchyProviderJson as Map<String, Object?>))
+                : (CallHierarchyRegistrationOptions.canParse(
+                        callHierarchyProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>.t3(
+                        CallHierarchyRegistrationOptions.fromJson(
+                            callHierarchyProviderJson as Map<String, Object?>))
+                    : (throw '''$callHierarchyProviderJson was not one of (bool, CallHierarchyOptions, CallHierarchyRegistrationOptions)'''))));
+    final codeActionProviderJson = json['codeActionProvider'];
+    final codeActionProvider = codeActionProviderJson == null
+        ? null
+        : (codeActionProviderJson is bool
+            ? Either2<bool, CodeActionOptions>.t1(codeActionProviderJson)
+            : (CodeActionOptions.canParse(
+                    codeActionProviderJson, nullLspJsonReporter)
+                ? Either2<bool, CodeActionOptions>.t2(
+                    CodeActionOptions.fromJson(
+                        codeActionProviderJson as Map<String, Object?>))
+                : (throw '''$codeActionProviderJson was not one of (bool, CodeActionOptions)''')));
+    final codeLensProviderJson = json['codeLensProvider'];
+    final codeLensProvider = codeLensProviderJson != null
+        ? CodeLensOptions.fromJson(codeLensProviderJson as Map<String, Object?>)
         : null;
-    final textDocumentSyncJson = json['textDocumentSync'];
-    final textDocumentSync = textDocumentSyncJson == null
+    final colorProviderJson = json['colorProvider'];
+    final colorProvider = colorProviderJson == null
         ? null
-        : (TextDocumentSyncOptions.canParse(
-                textDocumentSyncJson, nullLspJsonReporter)
-            ? Either2<TextDocumentSyncOptions, TextDocumentSyncKind>.t1(
-                TextDocumentSyncOptions.fromJson(
-                    textDocumentSyncJson as Map<String, Object?>))
-            : (TextDocumentSyncKind.canParse(
-                    textDocumentSyncJson, nullLspJsonReporter)
-                ? Either2<TextDocumentSyncOptions, TextDocumentSyncKind>.t2(
-                    TextDocumentSyncKind.fromJson(textDocumentSyncJson as int))
-                : (throw '''$textDocumentSyncJson was not one of (TextDocumentSyncOptions, TextDocumentSyncKind)''')));
-    final notebookDocumentSyncJson = json['notebookDocumentSync'];
-    final notebookDocumentSync = notebookDocumentSyncJson == null
-        ? null
-        : (NotebookDocumentSyncOptions.canParse(notebookDocumentSyncJson, nullLspJsonReporter)
-            ? Either2<NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions>.t1(
-                NotebookDocumentSyncOptions.fromJson(
-                    notebookDocumentSyncJson as Map<String, Object?>))
-            : (NotebookDocumentSyncRegistrationOptions.canParse(
-                    notebookDocumentSyncJson, nullLspJsonReporter)
-                ? Either2<NotebookDocumentSyncOptions,
-                        NotebookDocumentSyncRegistrationOptions>.t2(
-                    NotebookDocumentSyncRegistrationOptions.fromJson(
-                        notebookDocumentSyncJson as Map<String, Object?>))
-                : (throw '''$notebookDocumentSyncJson was not one of (NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions)''')));
+        : (colorProviderJson is bool
+            ? Either3<bool, DocumentColorOptions,
+                DocumentColorRegistrationOptions>.t1(colorProviderJson)
+            : (DocumentColorOptions.canParse(colorProviderJson, nullLspJsonReporter)
+                ? Either3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>.t2(
+                    DocumentColorOptions.fromJson(
+                        colorProviderJson as Map<String, Object?>))
+                : (DocumentColorRegistrationOptions.canParse(
+                        colorProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>.t3(
+                        DocumentColorRegistrationOptions.fromJson(
+                            colorProviderJson as Map<String, Object?>))
+                    : (throw '''$colorProviderJson was not one of (bool, DocumentColorOptions, DocumentColorRegistrationOptions)'''))));
     final completionProviderJson = json['completionProvider'];
     final completionProvider = completionProviderJson != null
         ? CompletionOptions.fromJson(
             completionProviderJson as Map<String, Object?>)
         : null;
-    final hoverProviderJson = json['hoverProvider'];
-    final hoverProvider = hoverProviderJson == null
-        ? null
-        : (hoverProviderJson is bool
-            ? Either2<bool, HoverOptions>.t1(hoverProviderJson)
-            : (HoverOptions.canParse(hoverProviderJson, nullLspJsonReporter)
-                ? Either2<bool, HoverOptions>.t2(HoverOptions.fromJson(
-                    hoverProviderJson as Map<String, Object?>))
-                : (throw '''$hoverProviderJson was not one of (bool, HoverOptions)''')));
-    final signatureHelpProviderJson = json['signatureHelpProvider'];
-    final signatureHelpProvider = signatureHelpProviderJson != null
-        ? SignatureHelpOptions.fromJson(
-            signatureHelpProviderJson as Map<String, Object?>)
-        : null;
     final declarationProviderJson = json['declarationProvider'];
     final declarationProvider = declarationProviderJson == null
         ? null
@@ -34590,110 +33931,20 @@
                     DefinitionOptions.fromJson(
                         definitionProviderJson as Map<String, Object?>))
                 : (throw '''$definitionProviderJson was not one of (bool, DefinitionOptions)''')));
-    final typeDefinitionProviderJson = json['typeDefinitionProvider'];
-    final typeDefinitionProvider = typeDefinitionProviderJson == null
+    final diagnosticProviderJson = json['diagnosticProvider'];
+    final diagnosticProvider = diagnosticProviderJson == null
         ? null
-        : (typeDefinitionProviderJson is bool
-            ? Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>.t1(
-                typeDefinitionProviderJson)
-            : (TypeDefinitionOptions.canParse(
-                    typeDefinitionProviderJson, nullLspJsonReporter)
-                ? Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>.t2(
-                    TypeDefinitionOptions.fromJson(
-                        typeDefinitionProviderJson as Map<String, Object?>))
-                : (TypeDefinitionRegistrationOptions.canParse(
-                        typeDefinitionProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>.t3(
-                        TypeDefinitionRegistrationOptions.fromJson(
-                            typeDefinitionProviderJson as Map<String, Object?>))
-                    : (throw '''$typeDefinitionProviderJson was not one of (bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions)'''))));
-    final implementationProviderJson = json['implementationProvider'];
-    final implementationProvider = implementationProviderJson == null
-        ? null
-        : (implementationProviderJson is bool
-            ? Either3<bool, ImplementationOptions, ImplementationRegistrationOptions>.t1(
-                implementationProviderJson)
-            : (ImplementationOptions.canParse(
-                    implementationProviderJson, nullLspJsonReporter)
-                ? Either3<bool, ImplementationOptions, ImplementationRegistrationOptions>.t2(
-                    ImplementationOptions.fromJson(
-                        implementationProviderJson as Map<String, Object?>))
-                : (ImplementationRegistrationOptions.canParse(
-                        implementationProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, ImplementationOptions, ImplementationRegistrationOptions>.t3(
-                        ImplementationRegistrationOptions.fromJson(
-                            implementationProviderJson as Map<String, Object?>))
-                    : (throw '''$implementationProviderJson was not one of (bool, ImplementationOptions, ImplementationRegistrationOptions)'''))));
-    final referencesProviderJson = json['referencesProvider'];
-    final referencesProvider = referencesProviderJson == null
-        ? null
-        : (referencesProviderJson is bool
-            ? Either2<bool, ReferenceOptions>.t1(referencesProviderJson)
-            : (ReferenceOptions.canParse(
-                    referencesProviderJson, nullLspJsonReporter)
-                ? Either2<bool, ReferenceOptions>.t2(ReferenceOptions.fromJson(
-                    referencesProviderJson as Map<String, Object?>))
-                : (throw '''$referencesProviderJson was not one of (bool, ReferenceOptions)''')));
-    final documentHighlightProviderJson = json['documentHighlightProvider'];
-    final documentHighlightProvider = documentHighlightProviderJson == null
-        ? null
-        : (documentHighlightProviderJson is bool
-            ? Either2<bool, DocumentHighlightOptions>.t1(
-                documentHighlightProviderJson)
-            : (DocumentHighlightOptions.canParse(
-                    documentHighlightProviderJson, nullLspJsonReporter)
-                ? Either2<bool, DocumentHighlightOptions>.t2(
-                    DocumentHighlightOptions.fromJson(
-                        documentHighlightProviderJson as Map<String, Object?>))
-                : (throw '''$documentHighlightProviderJson was not one of (bool, DocumentHighlightOptions)''')));
-    final documentSymbolProviderJson = json['documentSymbolProvider'];
-    final documentSymbolProvider = documentSymbolProviderJson == null
-        ? null
-        : (documentSymbolProviderJson is bool
-            ? Either2<bool, DocumentSymbolOptions>.t1(
-                documentSymbolProviderJson)
-            : (DocumentSymbolOptions.canParse(
-                    documentSymbolProviderJson, nullLspJsonReporter)
-                ? Either2<bool, DocumentSymbolOptions>.t2(
-                    DocumentSymbolOptions.fromJson(
-                        documentSymbolProviderJson as Map<String, Object?>))
-                : (throw '''$documentSymbolProviderJson was not one of (bool, DocumentSymbolOptions)''')));
-    final codeActionProviderJson = json['codeActionProvider'];
-    final codeActionProvider = codeActionProviderJson == null
-        ? null
-        : (codeActionProviderJson is bool
-            ? Either2<bool, CodeActionOptions>.t1(codeActionProviderJson)
-            : (CodeActionOptions.canParse(
-                    codeActionProviderJson, nullLspJsonReporter)
-                ? Either2<bool, CodeActionOptions>.t2(
-                    CodeActionOptions.fromJson(
-                        codeActionProviderJson as Map<String, Object?>))
-                : (throw '''$codeActionProviderJson was not one of (bool, CodeActionOptions)''')));
-    final codeLensProviderJson = json['codeLensProvider'];
-    final codeLensProvider = codeLensProviderJson != null
-        ? CodeLensOptions.fromJson(codeLensProviderJson as Map<String, Object?>)
-        : null;
-    final documentLinkProviderJson = json['documentLinkProvider'];
-    final documentLinkProvider = documentLinkProviderJson != null
-        ? DocumentLinkOptions.fromJson(
-            documentLinkProviderJson as Map<String, Object?>)
-        : null;
-    final colorProviderJson = json['colorProvider'];
-    final colorProvider = colorProviderJson == null
-        ? null
-        : (colorProviderJson is bool
-            ? Either3<bool, DocumentColorOptions,
-                DocumentColorRegistrationOptions>.t1(colorProviderJson)
-            : (DocumentColorOptions.canParse(colorProviderJson, nullLspJsonReporter)
-                ? Either3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>.t2(
-                    DocumentColorOptions.fromJson(
-                        colorProviderJson as Map<String, Object?>))
-                : (DocumentColorRegistrationOptions.canParse(
-                        colorProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>.t3(
-                        DocumentColorRegistrationOptions.fromJson(
-                            colorProviderJson as Map<String, Object?>))
-                    : (throw '''$colorProviderJson was not one of (bool, DocumentColorOptions, DocumentColorRegistrationOptions)'''))));
+        : (DiagnosticOptions.canParse(
+                diagnosticProviderJson, nullLspJsonReporter)
+            ? Either2<DiagnosticOptions, DiagnosticRegistrationOptions>.t1(
+                DiagnosticOptions.fromJson(
+                    diagnosticProviderJson as Map<String, Object?>))
+            : (DiagnosticRegistrationOptions.canParse(
+                    diagnosticProviderJson, nullLspJsonReporter)
+                ? Either2<DiagnosticOptions, DiagnosticRegistrationOptions>.t2(
+                    DiagnosticRegistrationOptions.fromJson(
+                        diagnosticProviderJson as Map<String, Object?>))
+                : (throw '''$diagnosticProviderJson was not one of (DiagnosticOptions, DiagnosticRegistrationOptions)''')));
     final documentFormattingProviderJson = json['documentFormattingProvider'];
     final documentFormattingProvider = documentFormattingProviderJson == null
         ? null
@@ -34706,6 +33957,30 @@
                     DocumentFormattingOptions.fromJson(
                         documentFormattingProviderJson as Map<String, Object?>))
                 : (throw '''$documentFormattingProviderJson was not one of (bool, DocumentFormattingOptions)''')));
+    final documentHighlightProviderJson = json['documentHighlightProvider'];
+    final documentHighlightProvider = documentHighlightProviderJson == null
+        ? null
+        : (documentHighlightProviderJson is bool
+            ? Either2<bool, DocumentHighlightOptions>.t1(
+                documentHighlightProviderJson)
+            : (DocumentHighlightOptions.canParse(
+                    documentHighlightProviderJson, nullLspJsonReporter)
+                ? Either2<bool, DocumentHighlightOptions>.t2(
+                    DocumentHighlightOptions.fromJson(
+                        documentHighlightProviderJson as Map<String, Object?>))
+                : (throw '''$documentHighlightProviderJson was not one of (bool, DocumentHighlightOptions)''')));
+    final documentLinkProviderJson = json['documentLinkProvider'];
+    final documentLinkProvider = documentLinkProviderJson != null
+        ? DocumentLinkOptions.fromJson(
+            documentLinkProviderJson as Map<String, Object?>)
+        : null;
+    final documentOnTypeFormattingProviderJson =
+        json['documentOnTypeFormattingProvider'];
+    final documentOnTypeFormattingProvider =
+        documentOnTypeFormattingProviderJson != null
+            ? DocumentOnTypeFormattingOptions.fromJson(
+                documentOnTypeFormattingProviderJson as Map<String, Object?>)
+            : null;
     final documentRangeFormattingProviderJson =
         json['documentRangeFormattingProvider'];
     final documentRangeFormattingProvider = documentRangeFormattingProviderJson ==
@@ -34721,22 +33996,25 @@
                         documentRangeFormattingProviderJson
                             as Map<String, Object?>))
                 : (throw '''$documentRangeFormattingProviderJson was not one of (bool, DocumentRangeFormattingOptions)''')));
-    final documentOnTypeFormattingProviderJson =
-        json['documentOnTypeFormattingProvider'];
-    final documentOnTypeFormattingProvider =
-        documentOnTypeFormattingProviderJson != null
-            ? DocumentOnTypeFormattingOptions.fromJson(
-                documentOnTypeFormattingProviderJson as Map<String, Object?>)
-            : null;
-    final renameProviderJson = json['renameProvider'];
-    final renameProvider = renameProviderJson == null
+    final documentSymbolProviderJson = json['documentSymbolProvider'];
+    final documentSymbolProvider = documentSymbolProviderJson == null
         ? null
-        : (renameProviderJson is bool
-            ? Either2<bool, RenameOptions>.t1(renameProviderJson)
-            : (RenameOptions.canParse(renameProviderJson, nullLspJsonReporter)
-                ? Either2<bool, RenameOptions>.t2(RenameOptions.fromJson(
-                    renameProviderJson as Map<String, Object?>))
-                : (throw '''$renameProviderJson was not one of (bool, RenameOptions)''')));
+        : (documentSymbolProviderJson is bool
+            ? Either2<bool, DocumentSymbolOptions>.t1(
+                documentSymbolProviderJson)
+            : (DocumentSymbolOptions.canParse(
+                    documentSymbolProviderJson, nullLspJsonReporter)
+                ? Either2<bool, DocumentSymbolOptions>.t2(
+                    DocumentSymbolOptions.fromJson(
+                        documentSymbolProviderJson as Map<String, Object?>))
+                : (throw '''$documentSymbolProviderJson was not one of (bool, DocumentSymbolOptions)''')));
+    final executeCommandProviderJson = json['executeCommandProvider'];
+    final executeCommandProvider = executeCommandProviderJson != null
+        ? ExecuteCommandOptions.fromJson(
+            executeCommandProviderJson as Map<String, Object?>)
+        : null;
+    final experimentalJson = json['experimental'];
+    final experimental = experimentalJson;
     final foldingRangeProviderJson = json['foldingRangeProvider'];
     final foldingRangeProvider = foldingRangeProviderJson == null
         ? null
@@ -34754,127 +34032,32 @@
                         FoldingRangeRegistrationOptions.fromJson(
                             foldingRangeProviderJson as Map<String, Object?>))
                     : (throw '''$foldingRangeProviderJson was not one of (bool, FoldingRangeOptions, FoldingRangeRegistrationOptions)'''))));
-    final executeCommandProviderJson = json['executeCommandProvider'];
-    final executeCommandProvider = executeCommandProviderJson != null
-        ? ExecuteCommandOptions.fromJson(
-            executeCommandProviderJson as Map<String, Object?>)
-        : null;
-    final selectionRangeProviderJson = json['selectionRangeProvider'];
-    final selectionRangeProvider = selectionRangeProviderJson == null
+    final hoverProviderJson = json['hoverProvider'];
+    final hoverProvider = hoverProviderJson == null
         ? null
-        : (selectionRangeProviderJson is bool
-            ? Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>.t1(
-                selectionRangeProviderJson)
-            : (SelectionRangeOptions.canParse(
-                    selectionRangeProviderJson, nullLspJsonReporter)
-                ? Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>.t2(
-                    SelectionRangeOptions.fromJson(
-                        selectionRangeProviderJson as Map<String, Object?>))
-                : (SelectionRangeRegistrationOptions.canParse(
-                        selectionRangeProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>.t3(
-                        SelectionRangeRegistrationOptions.fromJson(
-                            selectionRangeProviderJson as Map<String, Object?>))
-                    : (throw '''$selectionRangeProviderJson was not one of (bool, SelectionRangeOptions, SelectionRangeRegistrationOptions)'''))));
-    final linkedEditingRangeProviderJson = json['linkedEditingRangeProvider'];
-    final linkedEditingRangeProvider = linkedEditingRangeProviderJson == null
+        : (hoverProviderJson is bool
+            ? Either2<bool, HoverOptions>.t1(hoverProviderJson)
+            : (HoverOptions.canParse(hoverProviderJson, nullLspJsonReporter)
+                ? Either2<bool, HoverOptions>.t2(HoverOptions.fromJson(
+                    hoverProviderJson as Map<String, Object?>))
+                : (throw '''$hoverProviderJson was not one of (bool, HoverOptions)''')));
+    final implementationProviderJson = json['implementationProvider'];
+    final implementationProvider = implementationProviderJson == null
         ? null
-        : (linkedEditingRangeProviderJson is bool
-            ? Either3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>.t1(
-                linkedEditingRangeProviderJson)
-            : (LinkedEditingRangeOptions.canParse(
-                    linkedEditingRangeProviderJson, nullLspJsonReporter)
-                ? Either3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>.t2(
-                    LinkedEditingRangeOptions.fromJson(
-                        linkedEditingRangeProviderJson as Map<String, Object?>))
-                : (LinkedEditingRangeRegistrationOptions.canParse(
-                        linkedEditingRangeProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>.t3(
-                        LinkedEditingRangeRegistrationOptions.fromJson(
-                            linkedEditingRangeProviderJson as Map<String, Object?>))
-                    : (throw '''$linkedEditingRangeProviderJson was not one of (bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions)'''))));
-    final callHierarchyProviderJson = json['callHierarchyProvider'];
-    final callHierarchyProvider = callHierarchyProviderJson == null
-        ? null
-        : (callHierarchyProviderJson is bool
-            ? Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>.t1(
-                callHierarchyProviderJson)
-            : (CallHierarchyOptions.canParse(
-                    callHierarchyProviderJson, nullLspJsonReporter)
-                ? Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>.t2(
-                    CallHierarchyOptions.fromJson(
-                        callHierarchyProviderJson as Map<String, Object?>))
-                : (CallHierarchyRegistrationOptions.canParse(
-                        callHierarchyProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>.t3(
-                        CallHierarchyRegistrationOptions.fromJson(
-                            callHierarchyProviderJson as Map<String, Object?>))
-                    : (throw '''$callHierarchyProviderJson was not one of (bool, CallHierarchyOptions, CallHierarchyRegistrationOptions)'''))));
-    final semanticTokensProviderJson = json['semanticTokensProvider'];
-    final semanticTokensProvider = semanticTokensProviderJson == null
-        ? null
-        : (SemanticTokensOptions.canParse(
-                semanticTokensProviderJson, nullLspJsonReporter)
-            ? Either2<SemanticTokensOptions, SemanticTokensRegistrationOptions>.t1(
-                SemanticTokensOptions.fromJson(
-                    semanticTokensProviderJson as Map<String, Object?>))
-            : (SemanticTokensRegistrationOptions.canParse(
-                    semanticTokensProviderJson, nullLspJsonReporter)
-                ? Either2<SemanticTokensOptions, SemanticTokensRegistrationOptions>.t2(
-                    SemanticTokensRegistrationOptions.fromJson(
-                        semanticTokensProviderJson as Map<String, Object?>))
-                : (throw '''$semanticTokensProviderJson was not one of (SemanticTokensOptions, SemanticTokensRegistrationOptions)''')));
-    final monikerProviderJson = json['monikerProvider'];
-    final monikerProvider = monikerProviderJson == null
-        ? null
-        : (monikerProviderJson is bool
-            ? Either3<bool, MonikerOptions, MonikerRegistrationOptions>.t1(
-                monikerProviderJson)
-            : (MonikerOptions.canParse(monikerProviderJson, nullLspJsonReporter)
-                ? Either3<bool, MonikerOptions, MonikerRegistrationOptions>.t2(
-                    MonikerOptions.fromJson(
-                        monikerProviderJson as Map<String, Object?>))
-                : (MonikerRegistrationOptions.canParse(
-                        monikerProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, MonikerOptions,
-                            MonikerRegistrationOptions>.t3(
-                        MonikerRegistrationOptions.fromJson(
-                            monikerProviderJson as Map<String, Object?>))
-                    : (throw '''$monikerProviderJson was not one of (bool, MonikerOptions, MonikerRegistrationOptions)'''))));
-    final typeHierarchyProviderJson = json['typeHierarchyProvider'];
-    final typeHierarchyProvider = typeHierarchyProviderJson == null
-        ? null
-        : (typeHierarchyProviderJson is bool
-            ? Either3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>.t1(
-                typeHierarchyProviderJson)
-            : (TypeHierarchyOptions.canParse(
-                    typeHierarchyProviderJson, nullLspJsonReporter)
-                ? Either3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>.t2(
-                    TypeHierarchyOptions.fromJson(
-                        typeHierarchyProviderJson as Map<String, Object?>))
-                : (TypeHierarchyRegistrationOptions.canParse(
-                        typeHierarchyProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>.t3(
-                        TypeHierarchyRegistrationOptions.fromJson(
-                            typeHierarchyProviderJson as Map<String, Object?>))
-                    : (throw '''$typeHierarchyProviderJson was not one of (bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions)'''))));
-    final inlineValueProviderJson = json['inlineValueProvider'];
-    final inlineValueProvider = inlineValueProviderJson == null
-        ? null
-        : (inlineValueProviderJson is bool
-            ? Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>.t1(
-                inlineValueProviderJson)
-            : (InlineValueOptions.canParse(
-                    inlineValueProviderJson, nullLspJsonReporter)
-                ? Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>.t2(
-                    InlineValueOptions.fromJson(
-                        inlineValueProviderJson as Map<String, Object?>))
-                : (InlineValueRegistrationOptions.canParse(
-                        inlineValueProviderJson, nullLspJsonReporter)
-                    ? Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>.t3(
-                        InlineValueRegistrationOptions.fromJson(
-                            inlineValueProviderJson as Map<String, Object?>))
-                    : (throw '''$inlineValueProviderJson was not one of (bool, InlineValueOptions, InlineValueRegistrationOptions)'''))));
+        : (implementationProviderJson is bool
+            ? Either3<bool, ImplementationOptions, ImplementationRegistrationOptions>.t1(
+                implementationProviderJson)
+            : (ImplementationOptions.canParse(
+                    implementationProviderJson, nullLspJsonReporter)
+                ? Either3<bool, ImplementationOptions, ImplementationRegistrationOptions>.t2(
+                    ImplementationOptions.fromJson(
+                        implementationProviderJson as Map<String, Object?>))
+                : (ImplementationRegistrationOptions.canParse(
+                        implementationProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, ImplementationOptions, ImplementationRegistrationOptions>.t3(
+                        ImplementationRegistrationOptions.fromJson(
+                            implementationProviderJson as Map<String, Object?>))
+                    : (throw '''$implementationProviderJson was not one of (bool, ImplementationOptions, ImplementationRegistrationOptions)'''))));
     final inlayHintProviderJson = json['inlayHintProvider'];
     final inlayHintProvider = inlayHintProviderJson == null
         ? null
@@ -34892,20 +34075,182 @@
                         InlayHintRegistrationOptions.fromJson(
                             inlayHintProviderJson as Map<String, Object?>))
                     : (throw '''$inlayHintProviderJson was not one of (bool, InlayHintOptions, InlayHintRegistrationOptions)'''))));
-    final diagnosticProviderJson = json['diagnosticProvider'];
-    final diagnosticProvider = diagnosticProviderJson == null
+    final inlineValueProviderJson = json['inlineValueProvider'];
+    final inlineValueProvider = inlineValueProviderJson == null
         ? null
-        : (DiagnosticOptions.canParse(
-                diagnosticProviderJson, nullLspJsonReporter)
-            ? Either2<DiagnosticOptions, DiagnosticRegistrationOptions>.t1(
-                DiagnosticOptions.fromJson(
-                    diagnosticProviderJson as Map<String, Object?>))
-            : (DiagnosticRegistrationOptions.canParse(
-                    diagnosticProviderJson, nullLspJsonReporter)
-                ? Either2<DiagnosticOptions, DiagnosticRegistrationOptions>.t2(
-                    DiagnosticRegistrationOptions.fromJson(
-                        diagnosticProviderJson as Map<String, Object?>))
-                : (throw '''$diagnosticProviderJson was not one of (DiagnosticOptions, DiagnosticRegistrationOptions)''')));
+        : (inlineValueProviderJson is bool
+            ? Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>.t1(
+                inlineValueProviderJson)
+            : (InlineValueOptions.canParse(
+                    inlineValueProviderJson, nullLspJsonReporter)
+                ? Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>.t2(
+                    InlineValueOptions.fromJson(
+                        inlineValueProviderJson as Map<String, Object?>))
+                : (InlineValueRegistrationOptions.canParse(
+                        inlineValueProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>.t3(
+                        InlineValueRegistrationOptions.fromJson(
+                            inlineValueProviderJson as Map<String, Object?>))
+                    : (throw '''$inlineValueProviderJson was not one of (bool, InlineValueOptions, InlineValueRegistrationOptions)'''))));
+    final linkedEditingRangeProviderJson = json['linkedEditingRangeProvider'];
+    final linkedEditingRangeProvider = linkedEditingRangeProviderJson == null
+        ? null
+        : (linkedEditingRangeProviderJson is bool
+            ? Either3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>.t1(
+                linkedEditingRangeProviderJson)
+            : (LinkedEditingRangeOptions.canParse(
+                    linkedEditingRangeProviderJson, nullLspJsonReporter)
+                ? Either3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>.t2(
+                    LinkedEditingRangeOptions.fromJson(
+                        linkedEditingRangeProviderJson as Map<String, Object?>))
+                : (LinkedEditingRangeRegistrationOptions.canParse(
+                        linkedEditingRangeProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions>.t3(
+                        LinkedEditingRangeRegistrationOptions.fromJson(
+                            linkedEditingRangeProviderJson as Map<String, Object?>))
+                    : (throw '''$linkedEditingRangeProviderJson was not one of (bool, LinkedEditingRangeOptions, LinkedEditingRangeRegistrationOptions)'''))));
+    final monikerProviderJson = json['monikerProvider'];
+    final monikerProvider = monikerProviderJson == null
+        ? null
+        : (monikerProviderJson is bool
+            ? Either3<bool, MonikerOptions, MonikerRegistrationOptions>.t1(
+                monikerProviderJson)
+            : (MonikerOptions.canParse(monikerProviderJson, nullLspJsonReporter)
+                ? Either3<bool, MonikerOptions, MonikerRegistrationOptions>.t2(
+                    MonikerOptions.fromJson(
+                        monikerProviderJson as Map<String, Object?>))
+                : (MonikerRegistrationOptions.canParse(
+                        monikerProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, MonikerOptions,
+                            MonikerRegistrationOptions>.t3(
+                        MonikerRegistrationOptions.fromJson(
+                            monikerProviderJson as Map<String, Object?>))
+                    : (throw '''$monikerProviderJson was not one of (bool, MonikerOptions, MonikerRegistrationOptions)'''))));
+    final notebookDocumentSyncJson = json['notebookDocumentSync'];
+    final notebookDocumentSync = notebookDocumentSyncJson == null
+        ? null
+        : (NotebookDocumentSyncOptions.canParse(notebookDocumentSyncJson, nullLspJsonReporter)
+            ? Either2<NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions>.t1(
+                NotebookDocumentSyncOptions.fromJson(
+                    notebookDocumentSyncJson as Map<String, Object?>))
+            : (NotebookDocumentSyncRegistrationOptions.canParse(
+                    notebookDocumentSyncJson, nullLspJsonReporter)
+                ? Either2<NotebookDocumentSyncOptions,
+                        NotebookDocumentSyncRegistrationOptions>.t2(
+                    NotebookDocumentSyncRegistrationOptions.fromJson(
+                        notebookDocumentSyncJson as Map<String, Object?>))
+                : (throw '''$notebookDocumentSyncJson was not one of (NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions)''')));
+    final positionEncodingJson = json['positionEncoding'];
+    final positionEncoding = positionEncodingJson != null
+        ? PositionEncodingKind.fromJson(positionEncodingJson as String)
+        : null;
+    final referencesProviderJson = json['referencesProvider'];
+    final referencesProvider = referencesProviderJson == null
+        ? null
+        : (referencesProviderJson is bool
+            ? Either2<bool, ReferenceOptions>.t1(referencesProviderJson)
+            : (ReferenceOptions.canParse(
+                    referencesProviderJson, nullLspJsonReporter)
+                ? Either2<bool, ReferenceOptions>.t2(ReferenceOptions.fromJson(
+                    referencesProviderJson as Map<String, Object?>))
+                : (throw '''$referencesProviderJson was not one of (bool, ReferenceOptions)''')));
+    final renameProviderJson = json['renameProvider'];
+    final renameProvider = renameProviderJson == null
+        ? null
+        : (renameProviderJson is bool
+            ? Either2<bool, RenameOptions>.t1(renameProviderJson)
+            : (RenameOptions.canParse(renameProviderJson, nullLspJsonReporter)
+                ? Either2<bool, RenameOptions>.t2(RenameOptions.fromJson(
+                    renameProviderJson as Map<String, Object?>))
+                : (throw '''$renameProviderJson was not one of (bool, RenameOptions)''')));
+    final selectionRangeProviderJson = json['selectionRangeProvider'];
+    final selectionRangeProvider = selectionRangeProviderJson == null
+        ? null
+        : (selectionRangeProviderJson is bool
+            ? Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>.t1(
+                selectionRangeProviderJson)
+            : (SelectionRangeOptions.canParse(
+                    selectionRangeProviderJson, nullLspJsonReporter)
+                ? Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>.t2(
+                    SelectionRangeOptions.fromJson(
+                        selectionRangeProviderJson as Map<String, Object?>))
+                : (SelectionRangeRegistrationOptions.canParse(
+                        selectionRangeProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>.t3(
+                        SelectionRangeRegistrationOptions.fromJson(
+                            selectionRangeProviderJson as Map<String, Object?>))
+                    : (throw '''$selectionRangeProviderJson was not one of (bool, SelectionRangeOptions, SelectionRangeRegistrationOptions)'''))));
+    final semanticTokensProviderJson = json['semanticTokensProvider'];
+    final semanticTokensProvider = semanticTokensProviderJson == null
+        ? null
+        : (SemanticTokensOptions.canParse(
+                semanticTokensProviderJson, nullLspJsonReporter)
+            ? Either2<SemanticTokensOptions, SemanticTokensRegistrationOptions>.t1(
+                SemanticTokensOptions.fromJson(
+                    semanticTokensProviderJson as Map<String, Object?>))
+            : (SemanticTokensRegistrationOptions.canParse(
+                    semanticTokensProviderJson, nullLspJsonReporter)
+                ? Either2<SemanticTokensOptions, SemanticTokensRegistrationOptions>.t2(
+                    SemanticTokensRegistrationOptions.fromJson(
+                        semanticTokensProviderJson as Map<String, Object?>))
+                : (throw '''$semanticTokensProviderJson was not one of (SemanticTokensOptions, SemanticTokensRegistrationOptions)''')));
+    final signatureHelpProviderJson = json['signatureHelpProvider'];
+    final signatureHelpProvider = signatureHelpProviderJson != null
+        ? SignatureHelpOptions.fromJson(
+            signatureHelpProviderJson as Map<String, Object?>)
+        : null;
+    final textDocumentSyncJson = json['textDocumentSync'];
+    final textDocumentSync = textDocumentSyncJson == null
+        ? null
+        : (TextDocumentSyncKind.canParse(
+                textDocumentSyncJson, nullLspJsonReporter)
+            ? Either2<TextDocumentSyncKind, TextDocumentSyncOptions>.t1(
+                TextDocumentSyncKind.fromJson(textDocumentSyncJson as int))
+            : (TextDocumentSyncOptions.canParse(
+                    textDocumentSyncJson, nullLspJsonReporter)
+                ? Either2<TextDocumentSyncKind, TextDocumentSyncOptions>.t2(
+                    TextDocumentSyncOptions.fromJson(
+                        textDocumentSyncJson as Map<String, Object?>))
+                : (throw '''$textDocumentSyncJson was not one of (TextDocumentSyncKind, TextDocumentSyncOptions)''')));
+    final typeDefinitionProviderJson = json['typeDefinitionProvider'];
+    final typeDefinitionProvider = typeDefinitionProviderJson == null
+        ? null
+        : (typeDefinitionProviderJson is bool
+            ? Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>.t1(
+                typeDefinitionProviderJson)
+            : (TypeDefinitionOptions.canParse(
+                    typeDefinitionProviderJson, nullLspJsonReporter)
+                ? Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>.t2(
+                    TypeDefinitionOptions.fromJson(
+                        typeDefinitionProviderJson as Map<String, Object?>))
+                : (TypeDefinitionRegistrationOptions.canParse(
+                        typeDefinitionProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>.t3(
+                        TypeDefinitionRegistrationOptions.fromJson(
+                            typeDefinitionProviderJson as Map<String, Object?>))
+                    : (throw '''$typeDefinitionProviderJson was not one of (bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions)'''))));
+    final typeHierarchyProviderJson = json['typeHierarchyProvider'];
+    final typeHierarchyProvider = typeHierarchyProviderJson == null
+        ? null
+        : (typeHierarchyProviderJson is bool
+            ? Either3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>.t1(
+                typeHierarchyProviderJson)
+            : (TypeHierarchyOptions.canParse(
+                    typeHierarchyProviderJson, nullLspJsonReporter)
+                ? Either3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>.t2(
+                    TypeHierarchyOptions.fromJson(
+                        typeHierarchyProviderJson as Map<String, Object?>))
+                : (TypeHierarchyRegistrationOptions.canParse(
+                        typeHierarchyProviderJson, nullLspJsonReporter)
+                    ? Either3<bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions>.t3(
+                        TypeHierarchyRegistrationOptions.fromJson(
+                            typeHierarchyProviderJson as Map<String, Object?>))
+                    : (throw '''$typeHierarchyProviderJson was not one of (bool, TypeHierarchyOptions, TypeHierarchyRegistrationOptions)'''))));
+    final workspaceJson = json['workspace'];
+    final workspace = workspaceJson != null
+        ? ServerCapabilitiesWorkspace.fromJson(
+            workspaceJson as Map<String, Object?>)
+        : null;
     final workspaceSymbolProviderJson = json['workspaceSymbolProvider'];
     final workspaceSymbolProvider = workspaceSymbolProviderJson == null
         ? null
@@ -34918,49 +34263,42 @@
                     WorkspaceSymbolOptions.fromJson(
                         workspaceSymbolProviderJson as Map<String, Object?>))
                 : (throw '''$workspaceSymbolProviderJson was not one of (bool, WorkspaceSymbolOptions)''')));
-    final workspaceJson = json['workspace'];
-    final workspace = workspaceJson != null
-        ? ServerCapabilitiesWorkspace.fromJson(
-            workspaceJson as Map<String, Object?>)
-        : null;
-    final experimentalJson = json['experimental'];
-    final experimental = experimentalJson;
     return ServerCapabilities(
-      positionEncoding: positionEncoding,
-      textDocumentSync: textDocumentSync,
-      notebookDocumentSync: notebookDocumentSync,
-      completionProvider: completionProvider,
-      hoverProvider: hoverProvider,
-      signatureHelpProvider: signatureHelpProvider,
-      declarationProvider: declarationProvider,
-      definitionProvider: definitionProvider,
-      typeDefinitionProvider: typeDefinitionProvider,
-      implementationProvider: implementationProvider,
-      referencesProvider: referencesProvider,
-      documentHighlightProvider: documentHighlightProvider,
-      documentSymbolProvider: documentSymbolProvider,
+      callHierarchyProvider: callHierarchyProvider,
       codeActionProvider: codeActionProvider,
       codeLensProvider: codeLensProvider,
-      documentLinkProvider: documentLinkProvider,
       colorProvider: colorProvider,
-      documentFormattingProvider: documentFormattingProvider,
-      documentRangeFormattingProvider: documentRangeFormattingProvider,
-      documentOnTypeFormattingProvider: documentOnTypeFormattingProvider,
-      renameProvider: renameProvider,
-      foldingRangeProvider: foldingRangeProvider,
-      executeCommandProvider: executeCommandProvider,
-      selectionRangeProvider: selectionRangeProvider,
-      linkedEditingRangeProvider: linkedEditingRangeProvider,
-      callHierarchyProvider: callHierarchyProvider,
-      semanticTokensProvider: semanticTokensProvider,
-      monikerProvider: monikerProvider,
-      typeHierarchyProvider: typeHierarchyProvider,
-      inlineValueProvider: inlineValueProvider,
-      inlayHintProvider: inlayHintProvider,
+      completionProvider: completionProvider,
+      declarationProvider: declarationProvider,
+      definitionProvider: definitionProvider,
       diagnosticProvider: diagnosticProvider,
-      workspaceSymbolProvider: workspaceSymbolProvider,
-      workspace: workspace,
+      documentFormattingProvider: documentFormattingProvider,
+      documentHighlightProvider: documentHighlightProvider,
+      documentLinkProvider: documentLinkProvider,
+      documentOnTypeFormattingProvider: documentOnTypeFormattingProvider,
+      documentRangeFormattingProvider: documentRangeFormattingProvider,
+      documentSymbolProvider: documentSymbolProvider,
+      executeCommandProvider: executeCommandProvider,
       experimental: experimental,
+      foldingRangeProvider: foldingRangeProvider,
+      hoverProvider: hoverProvider,
+      implementationProvider: implementationProvider,
+      inlayHintProvider: inlayHintProvider,
+      inlineValueProvider: inlineValueProvider,
+      linkedEditingRangeProvider: linkedEditingRangeProvider,
+      monikerProvider: monikerProvider,
+      notebookDocumentSync: notebookDocumentSync,
+      positionEncoding: positionEncoding,
+      referencesProvider: referencesProvider,
+      renameProvider: renameProvider,
+      selectionRangeProvider: selectionRangeProvider,
+      semanticTokensProvider: semanticTokensProvider,
+      signatureHelpProvider: signatureHelpProvider,
+      textDocumentSync: textDocumentSync,
+      typeDefinitionProvider: typeDefinitionProvider,
+      typeHierarchyProvider: typeHierarchyProvider,
+      workspace: workspace,
+      workspaceSymbolProvider: workspaceSymbolProvider,
     );
   }
 
@@ -35096,7 +34434,7 @@
   /// defining each notification or for backwards compatibility the
   /// TextDocumentSyncKind number. If omitted it defaults to
   /// `TextDocumentSyncKind.None`.
-  final Either2<TextDocumentSyncOptions, TextDocumentSyncKind>?
+  final Either2<TextDocumentSyncKind, TextDocumentSyncOptions>?
       textDocumentSync;
 
   /// The server provides goto type definition support.
@@ -35117,44 +34455,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (positionEncoding != null) {
-      __result['positionEncoding'] = positionEncoding?.toJson();
-    }
-    if (textDocumentSync != null) {
-      __result['textDocumentSync'] = textDocumentSync;
-    }
-    if (notebookDocumentSync != null) {
-      __result['notebookDocumentSync'] = notebookDocumentSync;
-    }
-    if (completionProvider != null) {
-      __result['completionProvider'] = completionProvider?.toJson();
-    }
-    if (hoverProvider != null) {
-      __result['hoverProvider'] = hoverProvider;
-    }
-    if (signatureHelpProvider != null) {
-      __result['signatureHelpProvider'] = signatureHelpProvider?.toJson();
-    }
-    if (declarationProvider != null) {
-      __result['declarationProvider'] = declarationProvider;
-    }
-    if (definitionProvider != null) {
-      __result['definitionProvider'] = definitionProvider;
-    }
-    if (typeDefinitionProvider != null) {
-      __result['typeDefinitionProvider'] = typeDefinitionProvider;
-    }
-    if (implementationProvider != null) {
-      __result['implementationProvider'] = implementationProvider;
-    }
-    if (referencesProvider != null) {
-      __result['referencesProvider'] = referencesProvider;
-    }
-    if (documentHighlightProvider != null) {
-      __result['documentHighlightProvider'] = documentHighlightProvider;
-    }
-    if (documentSymbolProvider != null) {
-      __result['documentSymbolProvider'] = documentSymbolProvider;
+    if (callHierarchyProvider != null) {
+      __result['callHierarchyProvider'] = callHierarchyProvider;
     }
     if (codeActionProvider != null) {
       __result['codeActionProvider'] = codeActionProvider;
@@ -35162,107 +34464,159 @@
     if (codeLensProvider != null) {
       __result['codeLensProvider'] = codeLensProvider?.toJson();
     }
-    if (documentLinkProvider != null) {
-      __result['documentLinkProvider'] = documentLinkProvider?.toJson();
-    }
     if (colorProvider != null) {
       __result['colorProvider'] = colorProvider;
     }
+    if (completionProvider != null) {
+      __result['completionProvider'] = completionProvider?.toJson();
+    }
+    if (declarationProvider != null) {
+      __result['declarationProvider'] = declarationProvider;
+    }
+    if (definitionProvider != null) {
+      __result['definitionProvider'] = definitionProvider;
+    }
+    if (diagnosticProvider != null) {
+      __result['diagnosticProvider'] = diagnosticProvider;
+    }
     if (documentFormattingProvider != null) {
       __result['documentFormattingProvider'] = documentFormattingProvider;
     }
-    if (documentRangeFormattingProvider != null) {
-      __result['documentRangeFormattingProvider'] =
-          documentRangeFormattingProvider;
+    if (documentHighlightProvider != null) {
+      __result['documentHighlightProvider'] = documentHighlightProvider;
+    }
+    if (documentLinkProvider != null) {
+      __result['documentLinkProvider'] = documentLinkProvider?.toJson();
     }
     if (documentOnTypeFormattingProvider != null) {
       __result['documentOnTypeFormattingProvider'] =
           documentOnTypeFormattingProvider?.toJson();
     }
-    if (renameProvider != null) {
-      __result['renameProvider'] = renameProvider;
+    if (documentRangeFormattingProvider != null) {
+      __result['documentRangeFormattingProvider'] =
+          documentRangeFormattingProvider;
     }
-    if (foldingRangeProvider != null) {
-      __result['foldingRangeProvider'] = foldingRangeProvider;
+    if (documentSymbolProvider != null) {
+      __result['documentSymbolProvider'] = documentSymbolProvider;
     }
     if (executeCommandProvider != null) {
       __result['executeCommandProvider'] = executeCommandProvider?.toJson();
     }
-    if (selectionRangeProvider != null) {
-      __result['selectionRangeProvider'] = selectionRangeProvider;
+    if (experimental != null) {
+      __result['experimental'] = experimental;
     }
-    if (linkedEditingRangeProvider != null) {
-      __result['linkedEditingRangeProvider'] = linkedEditingRangeProvider;
+    if (foldingRangeProvider != null) {
+      __result['foldingRangeProvider'] = foldingRangeProvider;
     }
-    if (callHierarchyProvider != null) {
-      __result['callHierarchyProvider'] = callHierarchyProvider;
+    if (hoverProvider != null) {
+      __result['hoverProvider'] = hoverProvider;
     }
-    if (semanticTokensProvider != null) {
-      __result['semanticTokensProvider'] = semanticTokensProvider;
-    }
-    if (monikerProvider != null) {
-      __result['monikerProvider'] = monikerProvider;
-    }
-    if (typeHierarchyProvider != null) {
-      __result['typeHierarchyProvider'] = typeHierarchyProvider;
-    }
-    if (inlineValueProvider != null) {
-      __result['inlineValueProvider'] = inlineValueProvider;
+    if (implementationProvider != null) {
+      __result['implementationProvider'] = implementationProvider;
     }
     if (inlayHintProvider != null) {
       __result['inlayHintProvider'] = inlayHintProvider;
     }
-    if (diagnosticProvider != null) {
-      __result['diagnosticProvider'] = diagnosticProvider;
+    if (inlineValueProvider != null) {
+      __result['inlineValueProvider'] = inlineValueProvider;
     }
-    if (workspaceSymbolProvider != null) {
-      __result['workspaceSymbolProvider'] = workspaceSymbolProvider;
+    if (linkedEditingRangeProvider != null) {
+      __result['linkedEditingRangeProvider'] = linkedEditingRangeProvider;
+    }
+    if (monikerProvider != null) {
+      __result['monikerProvider'] = monikerProvider;
+    }
+    if (notebookDocumentSync != null) {
+      __result['notebookDocumentSync'] = notebookDocumentSync;
+    }
+    if (positionEncoding != null) {
+      __result['positionEncoding'] = positionEncoding?.toJson();
+    }
+    if (referencesProvider != null) {
+      __result['referencesProvider'] = referencesProvider;
+    }
+    if (renameProvider != null) {
+      __result['renameProvider'] = renameProvider;
+    }
+    if (selectionRangeProvider != null) {
+      __result['selectionRangeProvider'] = selectionRangeProvider;
+    }
+    if (semanticTokensProvider != null) {
+      __result['semanticTokensProvider'] = semanticTokensProvider;
+    }
+    if (signatureHelpProvider != null) {
+      __result['signatureHelpProvider'] = signatureHelpProvider?.toJson();
+    }
+    if (textDocumentSync != null) {
+      __result['textDocumentSync'] = textDocumentSync;
+    }
+    if (typeDefinitionProvider != null) {
+      __result['typeDefinitionProvider'] = typeDefinitionProvider;
+    }
+    if (typeHierarchyProvider != null) {
+      __result['typeHierarchyProvider'] = typeHierarchyProvider;
     }
     if (workspace != null) {
       __result['workspace'] = workspace?.toJson();
     }
-    if (experimental != null) {
-      __result['experimental'] = experimental;
+    if (workspaceSymbolProvider != null) {
+      __result['workspaceSymbolProvider'] = workspaceSymbolProvider;
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('positionEncoding');
+      reporter.push('callHierarchyProvider');
       try {
-        final positionEncoding = obj['positionEncoding'];
-        if (positionEncoding != null &&
-            !(PositionEncodingKind.canParse(positionEncoding, reporter))) {
-          reporter.reportError('must be of type PositionEncodingKind');
+        final callHierarchyProvider = obj['callHierarchyProvider'];
+        if (callHierarchyProvider != null &&
+            !((callHierarchyProvider is bool ||
+                CallHierarchyOptions.canParse(
+                    callHierarchyProvider, reporter) ||
+                CallHierarchyRegistrationOptions.canParse(
+                    callHierarchyProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('textDocumentSync');
+      reporter.push('codeActionProvider');
       try {
-        final textDocumentSync = obj['textDocumentSync'];
-        if (textDocumentSync != null &&
-            !((TextDocumentSyncOptions.canParse(textDocumentSync, reporter) ||
-                TextDocumentSyncKind.canParse(textDocumentSync, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<TextDocumentSyncOptions, TextDocumentSyncKind>');
+        final codeActionProvider = obj['codeActionProvider'];
+        if (codeActionProvider != null &&
+            !((codeActionProvider is bool ||
+                CodeActionOptions.canParse(codeActionProvider, reporter)))) {
+          reporter
+              .reportError('must be of type Either2<bool, CodeActionOptions>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('notebookDocumentSync');
+      reporter.push('codeLensProvider');
       try {
-        final notebookDocumentSync = obj['notebookDocumentSync'];
-        if (notebookDocumentSync != null &&
-            !((NotebookDocumentSyncOptions.canParse(
-                    notebookDocumentSync, reporter) ||
-                NotebookDocumentSyncRegistrationOptions.canParse(
-                    notebookDocumentSync, reporter)))) {
+        final codeLensProvider = obj['codeLensProvider'];
+        if (codeLensProvider != null &&
+            !(CodeLensOptions.canParse(codeLensProvider, reporter))) {
+          reporter.reportError('must be of type CodeLensOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('colorProvider');
+      try {
+        final colorProvider = obj['colorProvider'];
+        if (colorProvider != null &&
+            !((colorProvider is bool ||
+                DocumentColorOptions.canParse(colorProvider, reporter) ||
+                DocumentColorRegistrationOptions.canParse(
+                    colorProvider, reporter)))) {
           reporter.reportError(
-              'must be of type Either2<NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions>');
+              'must be of type Either3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>');
           return false;
         }
       } finally {
@@ -35279,29 +34633,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('hoverProvider');
-      try {
-        final hoverProvider = obj['hoverProvider'];
-        if (hoverProvider != null &&
-            !((hoverProvider is bool ||
-                HoverOptions.canParse(hoverProvider, reporter)))) {
-          reporter.reportError('must be of type Either2<bool, HoverOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('signatureHelpProvider');
-      try {
-        final signatureHelpProvider = obj['signatureHelpProvider'];
-        if (signatureHelpProvider != null &&
-            !(SignatureHelpOptions.canParse(signatureHelpProvider, reporter))) {
-          reporter.reportError('must be of type SignatureHelpOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('declarationProvider');
       try {
         final declarationProvider = obj['declarationProvider'];
@@ -35330,17 +34661,136 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('typeDefinitionProvider');
+      reporter.push('diagnosticProvider');
       try {
-        final typeDefinitionProvider = obj['typeDefinitionProvider'];
-        if (typeDefinitionProvider != null &&
-            !((typeDefinitionProvider is bool ||
-                TypeDefinitionOptions.canParse(
-                    typeDefinitionProvider, reporter) ||
-                TypeDefinitionRegistrationOptions.canParse(
-                    typeDefinitionProvider, reporter)))) {
+        final diagnosticProvider = obj['diagnosticProvider'];
+        if (diagnosticProvider != null &&
+            !((DiagnosticOptions.canParse(diagnosticProvider, reporter) ||
+                DiagnosticRegistrationOptions.canParse(
+                    diagnosticProvider, reporter)))) {
           reporter.reportError(
-              'must be of type Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>');
+              'must be of type Either2<DiagnosticOptions, DiagnosticRegistrationOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentFormattingProvider');
+      try {
+        final documentFormattingProvider = obj['documentFormattingProvider'];
+        if (documentFormattingProvider != null &&
+            !((documentFormattingProvider is bool ||
+                DocumentFormattingOptions.canParse(
+                    documentFormattingProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, DocumentFormattingOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentHighlightProvider');
+      try {
+        final documentHighlightProvider = obj['documentHighlightProvider'];
+        if (documentHighlightProvider != null &&
+            !((documentHighlightProvider is bool ||
+                DocumentHighlightOptions.canParse(
+                    documentHighlightProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, DocumentHighlightOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentLinkProvider');
+      try {
+        final documentLinkProvider = obj['documentLinkProvider'];
+        if (documentLinkProvider != null &&
+            !(DocumentLinkOptions.canParse(documentLinkProvider, reporter))) {
+          reporter.reportError('must be of type DocumentLinkOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentOnTypeFormattingProvider');
+      try {
+        final documentOnTypeFormattingProvider =
+            obj['documentOnTypeFormattingProvider'];
+        if (documentOnTypeFormattingProvider != null &&
+            !(DocumentOnTypeFormattingOptions.canParse(
+                documentOnTypeFormattingProvider, reporter))) {
+          reporter
+              .reportError('must be of type DocumentOnTypeFormattingOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentRangeFormattingProvider');
+      try {
+        final documentRangeFormattingProvider =
+            obj['documentRangeFormattingProvider'];
+        if (documentRangeFormattingProvider != null &&
+            !((documentRangeFormattingProvider is bool ||
+                DocumentRangeFormattingOptions.canParse(
+                    documentRangeFormattingProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, DocumentRangeFormattingOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentSymbolProvider');
+      try {
+        final documentSymbolProvider = obj['documentSymbolProvider'];
+        if (documentSymbolProvider != null &&
+            !((documentSymbolProvider is bool ||
+                DocumentSymbolOptions.canParse(
+                    documentSymbolProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, DocumentSymbolOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('executeCommandProvider');
+      try {
+        final executeCommandProvider = obj['executeCommandProvider'];
+        if (executeCommandProvider != null &&
+            !(ExecuteCommandOptions.canParse(
+                executeCommandProvider, reporter))) {
+          reporter.reportError('must be of type ExecuteCommandOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('foldingRangeProvider');
+      try {
+        final foldingRangeProvider = obj['foldingRangeProvider'];
+        if (foldingRangeProvider != null &&
+            !((foldingRangeProvider is bool ||
+                FoldingRangeOptions.canParse(foldingRangeProvider, reporter) ||
+                FoldingRangeRegistrationOptions.canParse(
+                    foldingRangeProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either3<bool, FoldingRangeOptions, FoldingRangeRegistrationOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('hoverProvider');
+      try {
+        final hoverProvider = obj['hoverProvider'];
+        if (hoverProvider != null &&
+            !((hoverProvider is bool ||
+                HoverOptions.canParse(hoverProvider, reporter)))) {
+          reporter.reportError('must be of type Either2<bool, HoverOptions>');
           return false;
         }
       } finally {
@@ -35362,190 +34812,31 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('referencesProvider');
+      reporter.push('inlayHintProvider');
       try {
-        final referencesProvider = obj['referencesProvider'];
-        if (referencesProvider != null &&
-            !((referencesProvider is bool ||
-                ReferenceOptions.canParse(referencesProvider, reporter)))) {
-          reporter
-              .reportError('must be of type Either2<bool, ReferenceOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('documentHighlightProvider');
-      try {
-        final documentHighlightProvider = obj['documentHighlightProvider'];
-        if (documentHighlightProvider != null &&
-            !((documentHighlightProvider is bool ||
-                DocumentHighlightOptions.canParse(
-                    documentHighlightProvider, reporter)))) {
+        final inlayHintProvider = obj['inlayHintProvider'];
+        if (inlayHintProvider != null &&
+            !((inlayHintProvider is bool ||
+                InlayHintOptions.canParse(inlayHintProvider, reporter) ||
+                InlayHintRegistrationOptions.canParse(
+                    inlayHintProvider, reporter)))) {
           reporter.reportError(
-              'must be of type Either2<bool, DocumentHighlightOptions>');
+              'must be of type Either3<bool, InlayHintOptions, InlayHintRegistrationOptions>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('documentSymbolProvider');
+      reporter.push('inlineValueProvider');
       try {
-        final documentSymbolProvider = obj['documentSymbolProvider'];
-        if (documentSymbolProvider != null &&
-            !((documentSymbolProvider is bool ||
-                DocumentSymbolOptions.canParse(
-                    documentSymbolProvider, reporter)))) {
+        final inlineValueProvider = obj['inlineValueProvider'];
+        if (inlineValueProvider != null &&
+            !((inlineValueProvider is bool ||
+                InlineValueOptions.canParse(inlineValueProvider, reporter) ||
+                InlineValueRegistrationOptions.canParse(
+                    inlineValueProvider, reporter)))) {
           reporter.reportError(
-              'must be of type Either2<bool, DocumentSymbolOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('codeActionProvider');
-      try {
-        final codeActionProvider = obj['codeActionProvider'];
-        if (codeActionProvider != null &&
-            !((codeActionProvider is bool ||
-                CodeActionOptions.canParse(codeActionProvider, reporter)))) {
-          reporter
-              .reportError('must be of type Either2<bool, CodeActionOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('codeLensProvider');
-      try {
-        final codeLensProvider = obj['codeLensProvider'];
-        if (codeLensProvider != null &&
-            !(CodeLensOptions.canParse(codeLensProvider, reporter))) {
-          reporter.reportError('must be of type CodeLensOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('documentLinkProvider');
-      try {
-        final documentLinkProvider = obj['documentLinkProvider'];
-        if (documentLinkProvider != null &&
-            !(DocumentLinkOptions.canParse(documentLinkProvider, reporter))) {
-          reporter.reportError('must be of type DocumentLinkOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('colorProvider');
-      try {
-        final colorProvider = obj['colorProvider'];
-        if (colorProvider != null &&
-            !((colorProvider is bool ||
-                DocumentColorOptions.canParse(colorProvider, reporter) ||
-                DocumentColorRegistrationOptions.canParse(
-                    colorProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either3<bool, DocumentColorOptions, DocumentColorRegistrationOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('documentFormattingProvider');
-      try {
-        final documentFormattingProvider = obj['documentFormattingProvider'];
-        if (documentFormattingProvider != null &&
-            !((documentFormattingProvider is bool ||
-                DocumentFormattingOptions.canParse(
-                    documentFormattingProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<bool, DocumentFormattingOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('documentRangeFormattingProvider');
-      try {
-        final documentRangeFormattingProvider =
-            obj['documentRangeFormattingProvider'];
-        if (documentRangeFormattingProvider != null &&
-            !((documentRangeFormattingProvider is bool ||
-                DocumentRangeFormattingOptions.canParse(
-                    documentRangeFormattingProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<bool, DocumentRangeFormattingOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('documentOnTypeFormattingProvider');
-      try {
-        final documentOnTypeFormattingProvider =
-            obj['documentOnTypeFormattingProvider'];
-        if (documentOnTypeFormattingProvider != null &&
-            !(DocumentOnTypeFormattingOptions.canParse(
-                documentOnTypeFormattingProvider, reporter))) {
-          reporter
-              .reportError('must be of type DocumentOnTypeFormattingOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('renameProvider');
-      try {
-        final renameProvider = obj['renameProvider'];
-        if (renameProvider != null &&
-            !((renameProvider is bool ||
-                RenameOptions.canParse(renameProvider, reporter)))) {
-          reporter.reportError('must be of type Either2<bool, RenameOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('foldingRangeProvider');
-      try {
-        final foldingRangeProvider = obj['foldingRangeProvider'];
-        if (foldingRangeProvider != null &&
-            !((foldingRangeProvider is bool ||
-                FoldingRangeOptions.canParse(foldingRangeProvider, reporter) ||
-                FoldingRangeRegistrationOptions.canParse(
-                    foldingRangeProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either3<bool, FoldingRangeOptions, FoldingRangeRegistrationOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('executeCommandProvider');
-      try {
-        final executeCommandProvider = obj['executeCommandProvider'];
-        if (executeCommandProvider != null &&
-            !(ExecuteCommandOptions.canParse(
-                executeCommandProvider, reporter))) {
-          reporter.reportError('must be of type ExecuteCommandOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('selectionRangeProvider');
-      try {
-        final selectionRangeProvider = obj['selectionRangeProvider'];
-        if (selectionRangeProvider != null &&
-            !((selectionRangeProvider is bool ||
-                SelectionRangeOptions.canParse(
-                    selectionRangeProvider, reporter) ||
-                SelectionRangeRegistrationOptions.canParse(
-                    selectionRangeProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>');
+              'must be of type Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>');
           return false;
         }
       } finally {
@@ -35567,17 +34858,83 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('callHierarchyProvider');
+      reporter.push('monikerProvider');
       try {
-        final callHierarchyProvider = obj['callHierarchyProvider'];
-        if (callHierarchyProvider != null &&
-            !((callHierarchyProvider is bool ||
-                CallHierarchyOptions.canParse(
-                    callHierarchyProvider, reporter) ||
-                CallHierarchyRegistrationOptions.canParse(
-                    callHierarchyProvider, reporter)))) {
+        final monikerProvider = obj['monikerProvider'];
+        if (monikerProvider != null &&
+            !((monikerProvider is bool ||
+                MonikerOptions.canParse(monikerProvider, reporter) ||
+                MonikerRegistrationOptions.canParse(
+                    monikerProvider, reporter)))) {
           reporter.reportError(
-              'must be of type Either3<bool, CallHierarchyOptions, CallHierarchyRegistrationOptions>');
+              'must be of type Either3<bool, MonikerOptions, MonikerRegistrationOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('notebookDocumentSync');
+      try {
+        final notebookDocumentSync = obj['notebookDocumentSync'];
+        if (notebookDocumentSync != null &&
+            !((NotebookDocumentSyncOptions.canParse(
+                    notebookDocumentSync, reporter) ||
+                NotebookDocumentSyncRegistrationOptions.canParse(
+                    notebookDocumentSync, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<NotebookDocumentSyncOptions, NotebookDocumentSyncRegistrationOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('positionEncoding');
+      try {
+        final positionEncoding = obj['positionEncoding'];
+        if (positionEncoding != null &&
+            !(PositionEncodingKind.canParse(positionEncoding, reporter))) {
+          reporter.reportError('must be of type PositionEncodingKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('referencesProvider');
+      try {
+        final referencesProvider = obj['referencesProvider'];
+        if (referencesProvider != null &&
+            !((referencesProvider is bool ||
+                ReferenceOptions.canParse(referencesProvider, reporter)))) {
+          reporter
+              .reportError('must be of type Either2<bool, ReferenceOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('renameProvider');
+      try {
+        final renameProvider = obj['renameProvider'];
+        if (renameProvider != null &&
+            !((renameProvider is bool ||
+                RenameOptions.canParse(renameProvider, reporter)))) {
+          reporter.reportError('must be of type Either2<bool, RenameOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('selectionRangeProvider');
+      try {
+        final selectionRangeProvider = obj['selectionRangeProvider'];
+        if (selectionRangeProvider != null &&
+            !((selectionRangeProvider is bool ||
+                SelectionRangeOptions.canParse(
+                    selectionRangeProvider, reporter) ||
+                SelectionRangeRegistrationOptions.canParse(
+                    selectionRangeProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either3<bool, SelectionRangeOptions, SelectionRangeRegistrationOptions>');
           return false;
         }
       } finally {
@@ -35598,16 +34955,42 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('monikerProvider');
+      reporter.push('signatureHelpProvider');
       try {
-        final monikerProvider = obj['monikerProvider'];
-        if (monikerProvider != null &&
-            !((monikerProvider is bool ||
-                MonikerOptions.canParse(monikerProvider, reporter) ||
-                MonikerRegistrationOptions.canParse(
-                    monikerProvider, reporter)))) {
+        final signatureHelpProvider = obj['signatureHelpProvider'];
+        if (signatureHelpProvider != null &&
+            !(SignatureHelpOptions.canParse(signatureHelpProvider, reporter))) {
+          reporter.reportError('must be of type SignatureHelpOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('textDocumentSync');
+      try {
+        final textDocumentSync = obj['textDocumentSync'];
+        if (textDocumentSync != null &&
+            !((TextDocumentSyncKind.canParse(textDocumentSync, reporter) ||
+                TextDocumentSyncOptions.canParse(
+                    textDocumentSync, reporter)))) {
           reporter.reportError(
-              'must be of type Either3<bool, MonikerOptions, MonikerRegistrationOptions>');
+              'must be of type Either2<TextDocumentSyncKind, TextDocumentSyncOptions>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('typeDefinitionProvider');
+      try {
+        final typeDefinitionProvider = obj['typeDefinitionProvider'];
+        if (typeDefinitionProvider != null &&
+            !((typeDefinitionProvider is bool ||
+                TypeDefinitionOptions.canParse(
+                    typeDefinitionProvider, reporter) ||
+                TypeDefinitionRegistrationOptions.canParse(
+                    typeDefinitionProvider, reporter)))) {
+          reporter.reportError(
+              'must be of type Either3<bool, TypeDefinitionOptions, TypeDefinitionRegistrationOptions>');
           return false;
         }
       } finally {
@@ -35629,45 +35012,12 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('inlineValueProvider');
+      reporter.push('workspace');
       try {
-        final inlineValueProvider = obj['inlineValueProvider'];
-        if (inlineValueProvider != null &&
-            !((inlineValueProvider is bool ||
-                InlineValueOptions.canParse(inlineValueProvider, reporter) ||
-                InlineValueRegistrationOptions.canParse(
-                    inlineValueProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either3<bool, InlineValueOptions, InlineValueRegistrationOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('inlayHintProvider');
-      try {
-        final inlayHintProvider = obj['inlayHintProvider'];
-        if (inlayHintProvider != null &&
-            !((inlayHintProvider is bool ||
-                InlayHintOptions.canParse(inlayHintProvider, reporter) ||
-                InlayHintRegistrationOptions.canParse(
-                    inlayHintProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either3<bool, InlayHintOptions, InlayHintRegistrationOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('diagnosticProvider');
-      try {
-        final diagnosticProvider = obj['diagnosticProvider'];
-        if (diagnosticProvider != null &&
-            !((DiagnosticOptions.canParse(diagnosticProvider, reporter) ||
-                DiagnosticRegistrationOptions.canParse(
-                    diagnosticProvider, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<DiagnosticOptions, DiagnosticRegistrationOptions>');
+        final workspace = obj['workspace'];
+        if (workspace != null &&
+            !(ServerCapabilitiesWorkspace.canParse(workspace, reporter))) {
+          reporter.reportError('must be of type ServerCapabilitiesWorkspace');
           return false;
         }
       } finally {
@@ -35687,17 +35037,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workspace');
-      try {
-        final workspace = obj['workspace'];
-        if (workspace != null &&
-            !(ServerCapabilitiesWorkspace.canParse(workspace, reporter))) {
-          reporter.reportError('must be of type ServerCapabilitiesWorkspace');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ServerCapabilities');
@@ -35709,43 +35048,43 @@
   bool operator ==(Object other) {
     if (other is ServerCapabilities &&
         other.runtimeType == ServerCapabilities) {
-      return positionEncoding == other.positionEncoding &&
-          textDocumentSync == other.textDocumentSync &&
-          notebookDocumentSync == other.notebookDocumentSync &&
-          completionProvider == other.completionProvider &&
-          hoverProvider == other.hoverProvider &&
-          signatureHelpProvider == other.signatureHelpProvider &&
-          declarationProvider == other.declarationProvider &&
-          definitionProvider == other.definitionProvider &&
-          typeDefinitionProvider == other.typeDefinitionProvider &&
-          implementationProvider == other.implementationProvider &&
-          referencesProvider == other.referencesProvider &&
-          documentHighlightProvider == other.documentHighlightProvider &&
-          documentSymbolProvider == other.documentSymbolProvider &&
+      return callHierarchyProvider == other.callHierarchyProvider &&
           codeActionProvider == other.codeActionProvider &&
           codeLensProvider == other.codeLensProvider &&
-          documentLinkProvider == other.documentLinkProvider &&
           colorProvider == other.colorProvider &&
+          completionProvider == other.completionProvider &&
+          declarationProvider == other.declarationProvider &&
+          definitionProvider == other.definitionProvider &&
+          diagnosticProvider == other.diagnosticProvider &&
           documentFormattingProvider == other.documentFormattingProvider &&
-          documentRangeFormattingProvider ==
-              other.documentRangeFormattingProvider &&
+          documentHighlightProvider == other.documentHighlightProvider &&
+          documentLinkProvider == other.documentLinkProvider &&
           documentOnTypeFormattingProvider ==
               other.documentOnTypeFormattingProvider &&
-          renameProvider == other.renameProvider &&
-          foldingRangeProvider == other.foldingRangeProvider &&
+          documentRangeFormattingProvider ==
+              other.documentRangeFormattingProvider &&
+          documentSymbolProvider == other.documentSymbolProvider &&
           executeCommandProvider == other.executeCommandProvider &&
-          selectionRangeProvider == other.selectionRangeProvider &&
-          linkedEditingRangeProvider == other.linkedEditingRangeProvider &&
-          callHierarchyProvider == other.callHierarchyProvider &&
-          semanticTokensProvider == other.semanticTokensProvider &&
-          monikerProvider == other.monikerProvider &&
-          typeHierarchyProvider == other.typeHierarchyProvider &&
-          inlineValueProvider == other.inlineValueProvider &&
-          inlayHintProvider == other.inlayHintProvider &&
-          diagnosticProvider == other.diagnosticProvider &&
-          workspaceSymbolProvider == other.workspaceSymbolProvider &&
-          workspace == other.workspace &&
           experimental == other.experimental &&
+          foldingRangeProvider == other.foldingRangeProvider &&
+          hoverProvider == other.hoverProvider &&
+          implementationProvider == other.implementationProvider &&
+          inlayHintProvider == other.inlayHintProvider &&
+          inlineValueProvider == other.inlineValueProvider &&
+          linkedEditingRangeProvider == other.linkedEditingRangeProvider &&
+          monikerProvider == other.monikerProvider &&
+          notebookDocumentSync == other.notebookDocumentSync &&
+          positionEncoding == other.positionEncoding &&
+          referencesProvider == other.referencesProvider &&
+          renameProvider == other.renameProvider &&
+          selectionRangeProvider == other.selectionRangeProvider &&
+          semanticTokensProvider == other.semanticTokensProvider &&
+          signatureHelpProvider == other.signatureHelpProvider &&
+          textDocumentSync == other.textDocumentSync &&
+          typeDefinitionProvider == other.typeDefinitionProvider &&
+          typeHierarchyProvider == other.typeHierarchyProvider &&
+          workspace == other.workspace &&
+          workspaceSymbolProvider == other.workspaceSymbolProvider &&
           true;
     }
     return false;
@@ -35753,41 +35092,41 @@
 
   @override
   int get hashCode => Object.hashAll([
-        positionEncoding,
-        textDocumentSync,
-        notebookDocumentSync,
-        completionProvider,
-        hoverProvider,
-        signatureHelpProvider,
-        declarationProvider,
-        definitionProvider,
-        typeDefinitionProvider,
-        implementationProvider,
-        referencesProvider,
-        documentHighlightProvider,
-        documentSymbolProvider,
+        callHierarchyProvider,
         codeActionProvider,
         codeLensProvider,
-        documentLinkProvider,
         colorProvider,
-        documentFormattingProvider,
-        documentRangeFormattingProvider,
-        documentOnTypeFormattingProvider,
-        renameProvider,
-        foldingRangeProvider,
-        executeCommandProvider,
-        selectionRangeProvider,
-        linkedEditingRangeProvider,
-        callHierarchyProvider,
-        semanticTokensProvider,
-        monikerProvider,
-        typeHierarchyProvider,
-        inlineValueProvider,
-        inlayHintProvider,
+        completionProvider,
+        declarationProvider,
+        definitionProvider,
         diagnosticProvider,
-        workspaceSymbolProvider,
-        workspace,
+        documentFormattingProvider,
+        documentHighlightProvider,
+        documentLinkProvider,
+        documentOnTypeFormattingProvider,
+        documentRangeFormattingProvider,
+        documentSymbolProvider,
+        executeCommandProvider,
         experimental,
+        foldingRangeProvider,
+        hoverProvider,
+        implementationProvider,
+        inlayHintProvider,
+        inlineValueProvider,
+        linkedEditingRangeProvider,
+        monikerProvider,
+        notebookDocumentSync,
+        positionEncoding,
+        referencesProvider,
+        renameProvider,
+        selectionRangeProvider,
+        semanticTokensProvider,
+        signatureHelpProvider,
+        textDocumentSync,
+        typeDefinitionProvider,
+        typeHierarchyProvider,
+        workspace,
+        workspaceSymbolProvider,
       ]);
 
   @override
@@ -35802,11 +35141,11 @@
 
   ServerCapabilitiesFileOperations({
     this.didCreate,
-    this.willCreate,
-    this.didRename,
-    this.willRename,
     this.didDelete,
+    this.didRename,
+    this.willCreate,
     this.willDelete,
+    this.willRename,
   });
   static ServerCapabilitiesFileOperations fromJson(Map<String, Object?> json) {
     final didCreateJson = json['didCreate'];
@@ -35814,38 +35153,38 @@
         ? FileOperationRegistrationOptions.fromJson(
             didCreateJson as Map<String, Object?>)
         : null;
-    final willCreateJson = json['willCreate'];
-    final willCreate = willCreateJson != null
+    final didDeleteJson = json['didDelete'];
+    final didDelete = didDeleteJson != null
         ? FileOperationRegistrationOptions.fromJson(
-            willCreateJson as Map<String, Object?>)
+            didDeleteJson as Map<String, Object?>)
         : null;
     final didRenameJson = json['didRename'];
     final didRename = didRenameJson != null
         ? FileOperationRegistrationOptions.fromJson(
             didRenameJson as Map<String, Object?>)
         : null;
-    final willRenameJson = json['willRename'];
-    final willRename = willRenameJson != null
+    final willCreateJson = json['willCreate'];
+    final willCreate = willCreateJson != null
         ? FileOperationRegistrationOptions.fromJson(
-            willRenameJson as Map<String, Object?>)
-        : null;
-    final didDeleteJson = json['didDelete'];
-    final didDelete = didDeleteJson != null
-        ? FileOperationRegistrationOptions.fromJson(
-            didDeleteJson as Map<String, Object?>)
+            willCreateJson as Map<String, Object?>)
         : null;
     final willDeleteJson = json['willDelete'];
     final willDelete = willDeleteJson != null
         ? FileOperationRegistrationOptions.fromJson(
             willDeleteJson as Map<String, Object?>)
         : null;
+    final willRenameJson = json['willRename'];
+    final willRename = willRenameJson != null
+        ? FileOperationRegistrationOptions.fromJson(
+            willRenameJson as Map<String, Object?>)
+        : null;
     return ServerCapabilitiesFileOperations(
       didCreate: didCreate,
-      willCreate: willCreate,
-      didRename: didRename,
-      willRename: willRename,
       didDelete: didDelete,
+      didRename: didRename,
+      willCreate: willCreate,
       willDelete: willDelete,
+      willRename: willRename,
     );
   }
 
@@ -35872,21 +35211,21 @@
     if (didCreate != null) {
       __result['didCreate'] = didCreate?.toJson();
     }
-    if (willCreate != null) {
-      __result['willCreate'] = willCreate?.toJson();
+    if (didDelete != null) {
+      __result['didDelete'] = didDelete?.toJson();
     }
     if (didRename != null) {
       __result['didRename'] = didRename?.toJson();
     }
-    if (willRename != null) {
-      __result['willRename'] = willRename?.toJson();
-    }
-    if (didDelete != null) {
-      __result['didDelete'] = didDelete?.toJson();
+    if (willCreate != null) {
+      __result['willCreate'] = willCreate?.toJson();
     }
     if (willDelete != null) {
       __result['willDelete'] = willDelete?.toJson();
     }
+    if (willRename != null) {
+      __result['willRename'] = willRename?.toJson();
+    }
     return __result;
   }
 
@@ -35904,6 +35243,30 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('didDelete');
+      try {
+        final didDelete = obj['didDelete'];
+        if (didDelete != null &&
+            !(FileOperationRegistrationOptions.canParse(didDelete, reporter))) {
+          reporter
+              .reportError('must be of type FileOperationRegistrationOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('didRename');
+      try {
+        final didRename = obj['didRename'];
+        if (didRename != null &&
+            !(FileOperationRegistrationOptions.canParse(didRename, reporter))) {
+          reporter
+              .reportError('must be of type FileOperationRegistrationOptions');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('willCreate');
       try {
         final willCreate = obj['willCreate'];
@@ -35917,11 +35280,12 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('didRename');
+      reporter.push('willDelete');
       try {
-        final didRename = obj['didRename'];
-        if (didRename != null &&
-            !(FileOperationRegistrationOptions.canParse(didRename, reporter))) {
+        final willDelete = obj['willDelete'];
+        if (willDelete != null &&
+            !(FileOperationRegistrationOptions.canParse(
+                willDelete, reporter))) {
           reporter
               .reportError('must be of type FileOperationRegistrationOptions');
           return false;
@@ -35942,31 +35306,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('didDelete');
-      try {
-        final didDelete = obj['didDelete'];
-        if (didDelete != null &&
-            !(FileOperationRegistrationOptions.canParse(didDelete, reporter))) {
-          reporter
-              .reportError('must be of type FileOperationRegistrationOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('willDelete');
-      try {
-        final willDelete = obj['willDelete'];
-        if (willDelete != null &&
-            !(FileOperationRegistrationOptions.canParse(
-                willDelete, reporter))) {
-          reporter
-              .reportError('must be of type FileOperationRegistrationOptions');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ServerCapabilitiesFileOperations');
@@ -35979,11 +35318,11 @@
     if (other is ServerCapabilitiesFileOperations &&
         other.runtimeType == ServerCapabilitiesFileOperations) {
       return didCreate == other.didCreate &&
-          willCreate == other.willCreate &&
-          didRename == other.didRename &&
-          willRename == other.willRename &&
           didDelete == other.didDelete &&
+          didRename == other.didRename &&
+          willCreate == other.willCreate &&
           willDelete == other.willDelete &&
+          willRename == other.willRename &&
           true;
     }
     return false;
@@ -35992,11 +35331,11 @@
   @override
   int get hashCode => Object.hash(
         didCreate,
-        willCreate,
-        didRename,
-        willRename,
         didDelete,
+        didRename,
+        willCreate,
         willDelete,
+        willRename,
       );
 
   @override
@@ -36010,23 +35349,23 @@
   );
 
   ServerCapabilitiesWorkspace({
-    this.workspaceFolders,
     this.fileOperations,
+    this.workspaceFolders,
   });
   static ServerCapabilitiesWorkspace fromJson(Map<String, Object?> json) {
-    final workspaceFoldersJson = json['workspaceFolders'];
-    final workspaceFolders = workspaceFoldersJson != null
-        ? WorkspaceFoldersServerCapabilities.fromJson(
-            workspaceFoldersJson as Map<String, Object?>)
-        : null;
     final fileOperationsJson = json['fileOperations'];
     final fileOperations = fileOperationsJson != null
         ? ServerCapabilitiesFileOperations.fromJson(
             fileOperationsJson as Map<String, Object?>)
         : null;
+    final workspaceFoldersJson = json['workspaceFolders'];
+    final workspaceFolders = workspaceFoldersJson != null
+        ? WorkspaceFoldersServerCapabilities.fromJson(
+            workspaceFoldersJson as Map<String, Object?>)
+        : null;
     return ServerCapabilitiesWorkspace(
-      workspaceFolders: workspaceFolders,
       fileOperations: fileOperations,
+      workspaceFolders: workspaceFolders,
     );
   }
 
@@ -36040,30 +35379,17 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (workspaceFolders != null) {
-      __result['workspaceFolders'] = workspaceFolders?.toJson();
-    }
     if (fileOperations != null) {
       __result['fileOperations'] = fileOperations?.toJson();
     }
+    if (workspaceFolders != null) {
+      __result['workspaceFolders'] = workspaceFolders?.toJson();
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('workspaceFolders');
-      try {
-        final workspaceFolders = obj['workspaceFolders'];
-        if (workspaceFolders != null &&
-            !(WorkspaceFoldersServerCapabilities.canParse(
-                workspaceFolders, reporter))) {
-          reporter.reportError(
-              'must be of type WorkspaceFoldersServerCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('fileOperations');
       try {
         final fileOperations = obj['fileOperations'];
@@ -36077,6 +35403,19 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workspaceFolders');
+      try {
+        final workspaceFolders = obj['workspaceFolders'];
+        if (workspaceFolders != null &&
+            !(WorkspaceFoldersServerCapabilities.canParse(
+                workspaceFolders, reporter))) {
+          reporter.reportError(
+              'must be of type WorkspaceFoldersServerCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ServerCapabilitiesWorkspace');
@@ -36088,8 +35427,8 @@
   bool operator ==(Object other) {
     if (other is ServerCapabilitiesWorkspace &&
         other.runtimeType == ServerCapabilitiesWorkspace) {
-      return workspaceFolders == other.workspaceFolders &&
-          fileOperations == other.fileOperations &&
+      return fileOperations == other.fileOperations &&
+          workspaceFolders == other.workspaceFolders &&
           true;
     }
     return false;
@@ -36097,8 +35436,8 @@
 
   @override
   int get hashCode => Object.hash(
-        workspaceFolders,
         fileOperations,
+        workspaceFolders,
       );
 
   @override
@@ -36256,27 +35595,27 @@
   );
 
   ShowDocumentParams({
-    required this.uri,
     this.external,
-    this.takeFocus,
     this.selection,
+    this.takeFocus,
+    required this.uri,
   });
   static ShowDocumentParams fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final externalJson = json['external'];
     final external = externalJson as bool?;
-    final takeFocusJson = json['takeFocus'];
-    final takeFocus = takeFocusJson as bool?;
     final selectionJson = json['selection'];
     final selection = selectionJson != null
         ? Range.fromJson(selectionJson as Map<String, Object?>)
         : null;
+    final takeFocusJson = json['takeFocus'];
+    final takeFocus = takeFocusJson as bool?;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return ShowDocumentParams(
-      uri: uri,
       external: external,
-      takeFocus: takeFocus,
       selection: selection,
+      takeFocus: takeFocus,
+      uri: uri,
     );
   }
 
@@ -36300,21 +35639,51 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
     if (external != null) {
       __result['external'] = external;
     }
-    if (takeFocus != null) {
-      __result['takeFocus'] = takeFocus;
-    }
     if (selection != null) {
       __result['selection'] = selection?.toJson();
     }
+    if (takeFocus != null) {
+      __result['takeFocus'] = takeFocus;
+    }
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('external');
+      try {
+        final external = obj['external'];
+        if (external != null && !(external is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('selection');
+      try {
+        final selection = obj['selection'];
+        if (selection != null && !(Range.canParse(selection, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('takeFocus');
+      try {
+        final takeFocus = obj['takeFocus'];
+        if (takeFocus != null && !(takeFocus is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -36333,36 +35702,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('external');
-      try {
-        final external = obj['external'];
-        if (external != null && !(external is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('takeFocus');
-      try {
-        final takeFocus = obj['takeFocus'];
-        if (takeFocus != null && !(takeFocus is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('selection');
-      try {
-        final selection = obj['selection'];
-        if (selection != null && !(Range.canParse(selection, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type ShowDocumentParams');
@@ -36374,10 +35713,10 @@
   bool operator ==(Object other) {
     if (other is ShowDocumentParams &&
         other.runtimeType == ShowDocumentParams) {
-      return uri == other.uri &&
-          external == other.external &&
-          takeFocus == other.takeFocus &&
+      return external == other.external &&
           selection == other.selection &&
+          takeFocus == other.takeFocus &&
+          uri == other.uri &&
           true;
     }
     return false;
@@ -36385,10 +35724,10 @@
 
   @override
   int get hashCode => Object.hash(
-        uri,
         external,
-        takeFocus,
         selection,
+        takeFocus,
+        uri,
       );
 
   @override
@@ -36473,17 +35812,17 @@
   );
 
   ShowMessageParams({
-    required this.type,
     required this.message,
+    required this.type,
   });
   static ShowMessageParams fromJson(Map<String, Object?> json) {
-    final typeJson = json['type'];
-    final type = MessageType.fromJson(typeJson as int);
     final messageJson = json['message'];
     final message = messageJson as String;
+    final typeJson = json['type'];
+    final type = MessageType.fromJson(typeJson as int);
     return ShowMessageParams(
-      type: type,
       message: message,
+      type: type,
     );
   }
 
@@ -36495,31 +35834,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['type'] = type.toJson();
     __result['message'] = message;
+    __result['type'] = type.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('type');
-      try {
-        if (!obj.containsKey('type')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final type = obj['type'];
-        if (type == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(MessageType.canParse(type, reporter))) {
-          reporter.reportError('must be of type MessageType');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('message');
       try {
         if (!obj.containsKey('message')) {
@@ -36538,6 +35859,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('type');
+      try {
+        if (!obj.containsKey('type')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final type = obj['type'];
+        if (type == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(MessageType.canParse(type, reporter))) {
+          reporter.reportError('must be of type MessageType');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type ShowMessageParams');
@@ -36548,15 +35887,15 @@
   @override
   bool operator ==(Object other) {
     if (other is ShowMessageParams && other.runtimeType == ShowMessageParams) {
-      return type == other.type && message == other.message && true;
+      return message == other.message && type == other.type && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        type,
         message,
+        type,
       );
 
   @override
@@ -36714,24 +36053,24 @@
   );
 
   ShowMessageRequestParams({
-    required this.type,
-    required this.message,
     this.actions,
+    required this.message,
+    required this.type,
   });
   static ShowMessageRequestParams fromJson(Map<String, Object?> json) {
-    final typeJson = json['type'];
-    final type = MessageType.fromJson(typeJson as int);
-    final messageJson = json['message'];
-    final message = messageJson as String;
     final actionsJson = json['actions'];
     final actions = (actionsJson as List<Object?>?)
         ?.map(
             (item) => MessageActionItem.fromJson(item as Map<String, Object?>))
         .toList();
+    final messageJson = json['message'];
+    final message = messageJson as String;
+    final typeJson = json['type'];
+    final type = MessageType.fromJson(typeJson as int);
     return ShowMessageRequestParams(
-      type: type,
-      message: message,
       actions: actions,
+      message: message,
+      type: type,
     );
   }
 
@@ -36746,29 +36085,24 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['type'] = type.toJson();
-    __result['message'] = message;
     if (actions != null) {
       __result['actions'] = actions?.map((item) => item.toJson()).toList();
     }
+    __result['message'] = message;
+    __result['type'] = type.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('type');
+      reporter.push('actions');
       try {
-        if (!obj.containsKey('type')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final type = obj['type'];
-        if (type == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(MessageType.canParse(type, reporter))) {
-          reporter.reportError('must be of type MessageType');
+        final actions = obj['actions'];
+        if (actions != null &&
+            !((actions is List<Object?> &&
+                (actions.every(
+                    (item) => MessageActionItem.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<MessageActionItem>');
           return false;
         }
       } finally {
@@ -36792,14 +36126,19 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('actions');
+      reporter.push('type');
       try {
-        final actions = obj['actions'];
-        if (actions != null &&
-            !((actions is List<Object?> &&
-                (actions.every(
-                    (item) => MessageActionItem.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<MessageActionItem>');
+        if (!obj.containsKey('type')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final type = obj['type'];
+        if (type == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(MessageType.canParse(type, reporter))) {
+          reporter.reportError('must be of type MessageType');
           return false;
         }
       } finally {
@@ -36816,10 +36155,10 @@
   bool operator ==(Object other) {
     if (other is ShowMessageRequestParams &&
         other.runtimeType == ShowMessageRequestParams) {
-      return type == other.type &&
-          message == other.message &&
-          listEqual(actions, other.actions,
+      return listEqual(actions, other.actions,
               (MessageActionItem a, MessageActionItem b) => a == b) &&
+          message == other.message &&
+          type == other.type &&
           true;
     }
     return false;
@@ -36827,9 +36166,9 @@
 
   @override
   int get hashCode => Object.hash(
-        type,
-        message,
         lspHashCode(actions),
+        message,
+        type,
       );
 
   @override
@@ -36845,24 +36184,24 @@
   );
 
   SignatureHelp({
-    required this.signatures,
-    this.activeSignature,
     this.activeParameter,
+    this.activeSignature,
+    required this.signatures,
   });
   static SignatureHelp fromJson(Map<String, Object?> json) {
+    final activeParameterJson = json['activeParameter'];
+    final activeParameter = activeParameterJson as int?;
+    final activeSignatureJson = json['activeSignature'];
+    final activeSignature = activeSignatureJson as int?;
     final signaturesJson = json['signatures'];
     final signatures = (signaturesJson as List<Object?>)
         .map((item) =>
             SignatureInformation.fromJson(item as Map<String, Object?>))
         .toList();
-    final activeSignatureJson = json['activeSignature'];
-    final activeSignature = activeSignatureJson as int?;
-    final activeParameterJson = json['activeParameter'];
-    final activeParameter = activeParameterJson as int?;
     return SignatureHelp(
-      signatures: signatures,
-      activeSignature: activeSignature,
       activeParameter: activeParameter,
+      activeSignature: activeSignature,
+      signatures: signatures,
     );
   }
 
@@ -36891,18 +36230,38 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['signatures'] = signatures.map((item) => item.toJson()).toList();
-    if (activeSignature != null) {
-      __result['activeSignature'] = activeSignature;
-    }
     if (activeParameter != null) {
       __result['activeParameter'] = activeParameter;
     }
+    if (activeSignature != null) {
+      __result['activeSignature'] = activeSignature;
+    }
+    __result['signatures'] = signatures.map((item) => item.toJson()).toList();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('activeParameter');
+      try {
+        final activeParameter = obj['activeParameter'];
+        if (activeParameter != null && !(activeParameter is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('activeSignature');
+      try {
+        final activeSignature = obj['activeSignature'];
+        if (activeSignature != null && !(activeSignature is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('signatures');
       try {
         if (!obj.containsKey('signatures')) {
@@ -36923,26 +36282,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('activeSignature');
-      try {
-        final activeSignature = obj['activeSignature'];
-        if (activeSignature != null && !(activeSignature is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('activeParameter');
-      try {
-        final activeParameter = obj['activeParameter'];
-        if (activeParameter != null && !(activeParameter is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type SignatureHelp');
@@ -36953,10 +36292,10 @@
   @override
   bool operator ==(Object other) {
     if (other is SignatureHelp && other.runtimeType == SignatureHelp) {
-      return listEqual(signatures, other.signatures,
-              (SignatureInformation a, SignatureInformation b) => a == b) &&
+      return activeParameter == other.activeParameter &&
           activeSignature == other.activeSignature &&
-          activeParameter == other.activeParameter &&
+          listEqual(signatures, other.signatures,
+              (SignatureInformation a, SignatureInformation b) => a == b) &&
           true;
     }
     return false;
@@ -36964,9 +36303,9 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(signatures),
-        activeSignature,
         activeParameter,
+        activeSignature,
+        lspHashCode(signatures),
       );
 
   @override
@@ -36980,11 +36319,13 @@
   );
 
   SignatureHelpClientCapabilities({
+    this.contextSupport,
     this.dynamicRegistration,
     this.signatureInformation,
-    this.contextSupport,
   });
   static SignatureHelpClientCapabilities fromJson(Map<String, Object?> json) {
+    final contextSupportJson = json['contextSupport'];
+    final contextSupport = contextSupportJson as bool?;
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     final signatureInformationJson = json['signatureInformation'];
@@ -36992,12 +36333,10 @@
         ? SignatureHelpClientCapabilitiesSignatureInformation.fromJson(
             signatureInformationJson as Map<String, Object?>)
         : null;
-    final contextSupportJson = json['contextSupport'];
-    final contextSupport = contextSupportJson as bool?;
     return SignatureHelpClientCapabilities(
+      contextSupport: contextSupport,
       dynamicRegistration: dynamicRegistration,
       signatureInformation: signatureInformation,
-      contextSupport: contextSupport,
     );
   }
 
@@ -37018,20 +36357,30 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (contextSupport != null) {
+      __result['contextSupport'] = contextSupport;
+    }
     if (dynamicRegistration != null) {
       __result['dynamicRegistration'] = dynamicRegistration;
     }
     if (signatureInformation != null) {
       __result['signatureInformation'] = signatureInformation?.toJson();
     }
-    if (contextSupport != null) {
-      __result['contextSupport'] = contextSupport;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('contextSupport');
+      try {
+        final contextSupport = obj['contextSupport'];
+        if (contextSupport != null && !(contextSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('dynamicRegistration');
       try {
         final dynamicRegistration = obj['dynamicRegistration'];
@@ -37055,16 +36404,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('contextSupport');
-      try {
-        final contextSupport = obj['contextSupport'];
-        if (contextSupport != null && !(contextSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type SignatureHelpClientCapabilities');
@@ -37076,9 +36415,9 @@
   bool operator ==(Object other) {
     if (other is SignatureHelpClientCapabilities &&
         other.runtimeType == SignatureHelpClientCapabilities) {
-      return dynamicRegistration == other.dynamicRegistration &&
+      return contextSupport == other.contextSupport &&
+          dynamicRegistration == other.dynamicRegistration &&
           signatureInformation == other.signatureInformation &&
-          contextSupport == other.contextSupport &&
           true;
     }
     return false;
@@ -37086,9 +36425,9 @@
 
   @override
   int get hashCode => Object.hash(
+        contextSupport,
         dynamicRegistration,
         signatureInformation,
-        contextSupport,
       );
 
   @override
@@ -37172,12 +36511,14 @@
   );
 
   SignatureHelpClientCapabilitiesSignatureInformation({
+    this.activeParameterSupport,
     this.documentationFormat,
     this.parameterInformation,
-    this.activeParameterSupport,
   });
   static SignatureHelpClientCapabilitiesSignatureInformation fromJson(
       Map<String, Object?> json) {
+    final activeParameterSupportJson = json['activeParameterSupport'];
+    final activeParameterSupport = activeParameterSupportJson as bool?;
     final documentationFormatJson = json['documentationFormat'];
     final documentationFormat = (documentationFormatJson as List<Object?>?)
         ?.map((item) => MarkupKind.fromJson(item as String))
@@ -37187,12 +36528,10 @@
         ? SignatureHelpClientCapabilitiesParameterInformation.fromJson(
             parameterInformationJson as Map<String, Object?>)
         : null;
-    final activeParameterSupportJson = json['activeParameterSupport'];
-    final activeParameterSupport = activeParameterSupportJson as bool?;
     return SignatureHelpClientCapabilitiesSignatureInformation(
+      activeParameterSupport: activeParameterSupport,
       documentationFormat: documentationFormat,
       parameterInformation: parameterInformation,
-      activeParameterSupport: activeParameterSupport,
     );
   }
 
@@ -37211,6 +36550,9 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (activeParameterSupport != null) {
+      __result['activeParameterSupport'] = activeParameterSupport;
+    }
     if (documentationFormat != null) {
       __result['documentationFormat'] =
           documentationFormat?.map((item) => item.toJson()).toList();
@@ -37218,14 +36560,22 @@
     if (parameterInformation != null) {
       __result['parameterInformation'] = parameterInformation?.toJson();
     }
-    if (activeParameterSupport != null) {
-      __result['activeParameterSupport'] = activeParameterSupport;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('activeParameterSupport');
+      try {
+        final activeParameterSupport = obj['activeParameterSupport'];
+        if (activeParameterSupport != null &&
+            !(activeParameterSupport is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('documentationFormat');
       try {
         final documentationFormat = obj['documentationFormat'];
@@ -37252,17 +36602,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('activeParameterSupport');
-      try {
-        final activeParameterSupport = obj['activeParameterSupport'];
-        if (activeParameterSupport != null &&
-            !(activeParameterSupport is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError(
@@ -37276,10 +36615,10 @@
     if (other is SignatureHelpClientCapabilitiesSignatureInformation &&
         other.runtimeType ==
             SignatureHelpClientCapabilitiesSignatureInformation) {
-      return listEqual(documentationFormat, other.documentationFormat,
+      return activeParameterSupport == other.activeParameterSupport &&
+          listEqual(documentationFormat, other.documentationFormat,
               (MarkupKind a, MarkupKind b) => a == b) &&
           parameterInformation == other.parameterInformation &&
-          activeParameterSupport == other.activeParameterSupport &&
           true;
     }
     return false;
@@ -37287,9 +36626,9 @@
 
   @override
   int get hashCode => Object.hash(
+        activeParameterSupport,
         lspHashCode(documentationFormat),
         parameterInformation,
-        activeParameterSupport,
       );
 
   @override
@@ -37306,29 +36645,29 @@
   );
 
   SignatureHelpContext({
-    required this.triggerKind,
-    this.triggerCharacter,
-    required this.isRetrigger,
     this.activeSignatureHelp,
+    required this.isRetrigger,
+    this.triggerCharacter,
+    required this.triggerKind,
   });
   static SignatureHelpContext fromJson(Map<String, Object?> json) {
-    final triggerKindJson = json['triggerKind'];
-    final triggerKind =
-        SignatureHelpTriggerKind.fromJson(triggerKindJson as int);
-    final triggerCharacterJson = json['triggerCharacter'];
-    final triggerCharacter = triggerCharacterJson as String?;
-    final isRetriggerJson = json['isRetrigger'];
-    final isRetrigger = isRetriggerJson as bool;
     final activeSignatureHelpJson = json['activeSignatureHelp'];
     final activeSignatureHelp = activeSignatureHelpJson != null
         ? SignatureHelp.fromJson(
             activeSignatureHelpJson as Map<String, Object?>)
         : null;
+    final isRetriggerJson = json['isRetrigger'];
+    final isRetrigger = isRetriggerJson as bool;
+    final triggerCharacterJson = json['triggerCharacter'];
+    final triggerCharacter = triggerCharacterJson as String?;
+    final triggerKindJson = json['triggerKind'];
+    final triggerKind =
+        SignatureHelpTriggerKind.fromJson(triggerKindJson as int);
     return SignatureHelpContext(
-      triggerKind: triggerKind,
-      triggerCharacter: triggerCharacter,
-      isRetrigger: isRetrigger,
       activeSignatureHelp: activeSignatureHelp,
+      isRetrigger: isRetrigger,
+      triggerCharacter: triggerCharacter,
+      triggerKind: triggerKind,
     );
   }
 
@@ -37356,42 +36695,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['triggerKind'] = triggerKind.toJson();
-    if (triggerCharacter != null) {
-      __result['triggerCharacter'] = triggerCharacter;
-    }
-    __result['isRetrigger'] = isRetrigger;
     if (activeSignatureHelp != null) {
       __result['activeSignatureHelp'] = activeSignatureHelp?.toJson();
     }
+    __result['isRetrigger'] = isRetrigger;
+    if (triggerCharacter != null) {
+      __result['triggerCharacter'] = triggerCharacter;
+    }
+    __result['triggerKind'] = triggerKind.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('triggerKind');
+      reporter.push('activeSignatureHelp');
       try {
-        if (!obj.containsKey('triggerKind')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final triggerKind = obj['triggerKind'];
-        if (triggerKind == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(SignatureHelpTriggerKind.canParse(triggerKind, reporter))) {
-          reporter.reportError('must be of type SignatureHelpTriggerKind');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('triggerCharacter');
-      try {
-        final triggerCharacter = obj['triggerCharacter'];
-        if (triggerCharacter != null && !(triggerCharacter is String)) {
-          reporter.reportError('must be of type String');
+        final activeSignatureHelp = obj['activeSignatureHelp'];
+        if (activeSignatureHelp != null &&
+            !(SignatureHelp.canParse(activeSignatureHelp, reporter))) {
+          reporter.reportError('must be of type SignatureHelp');
           return false;
         }
       } finally {
@@ -37415,12 +36737,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('activeSignatureHelp');
+      reporter.push('triggerCharacter');
       try {
-        final activeSignatureHelp = obj['activeSignatureHelp'];
-        if (activeSignatureHelp != null &&
-            !(SignatureHelp.canParse(activeSignatureHelp, reporter))) {
-          reporter.reportError('must be of type SignatureHelp');
+        final triggerCharacter = obj['triggerCharacter'];
+        if (triggerCharacter != null && !(triggerCharacter is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('triggerKind');
+      try {
+        if (!obj.containsKey('triggerKind')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final triggerKind = obj['triggerKind'];
+        if (triggerKind == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(SignatureHelpTriggerKind.canParse(triggerKind, reporter))) {
+          reporter.reportError('must be of type SignatureHelpTriggerKind');
           return false;
         }
       } finally {
@@ -37437,10 +36776,10 @@
   bool operator ==(Object other) {
     if (other is SignatureHelpContext &&
         other.runtimeType == SignatureHelpContext) {
-      return triggerKind == other.triggerKind &&
-          triggerCharacter == other.triggerCharacter &&
+      return activeSignatureHelp == other.activeSignatureHelp &&
           isRetrigger == other.isRetrigger &&
-          activeSignatureHelp == other.activeSignatureHelp &&
+          triggerCharacter == other.triggerCharacter &&
+          triggerKind == other.triggerKind &&
           true;
     }
     return false;
@@ -37448,10 +36787,10 @@
 
   @override
   int get hashCode => Object.hash(
-        triggerKind,
-        triggerCharacter,
-        isRetrigger,
         activeSignatureHelp,
+        isRetrigger,
+        triggerCharacter,
+        triggerKind,
       );
 
   @override
@@ -37465,27 +36804,27 @@
   );
 
   SignatureHelpOptions({
-    this.triggerCharacters,
     this.retriggerCharacters,
+    this.triggerCharacters,
     this.workDoneProgress,
   });
   static SignatureHelpOptions fromJson(Map<String, Object?> json) {
     if (SignatureHelpRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return SignatureHelpRegistrationOptions.fromJson(json);
     }
-    final triggerCharactersJson = json['triggerCharacters'];
-    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
-        ?.map((item) => item as String)
-        .toList();
     final retriggerCharactersJson = json['retriggerCharacters'];
     final retriggerCharacters = (retriggerCharactersJson as List<Object?>?)
         ?.map((item) => item as String)
         .toList();
+    final triggerCharactersJson = json['triggerCharacters'];
+    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
+        ?.map((item) => item as String)
+        .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return SignatureHelpOptions(
-      triggerCharacters: triggerCharacters,
       retriggerCharacters: retriggerCharacters,
+      triggerCharacters: triggerCharacters,
       workDoneProgress: workDoneProgress,
     );
   }
@@ -37503,12 +36842,12 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (triggerCharacters != null) {
-      __result['triggerCharacters'] = triggerCharacters;
-    }
     if (retriggerCharacters != null) {
       __result['retriggerCharacters'] = retriggerCharacters;
     }
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
+    }
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
     }
@@ -37517,18 +36856,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('triggerCharacters');
-      try {
-        final triggerCharacters = obj['triggerCharacters'];
-        if (triggerCharacters != null &&
-            !((triggerCharacters is List<Object?> &&
-                (triggerCharacters.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('retriggerCharacters');
       try {
         final retriggerCharacters = obj['retriggerCharacters'];
@@ -37541,6 +36868,18 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('triggerCharacters');
+      try {
+        final triggerCharacters = obj['triggerCharacters'];
+        if (triggerCharacters != null &&
+            !((triggerCharacters is List<Object?> &&
+                (triggerCharacters.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneProgress');
       try {
         final workDoneProgress = obj['workDoneProgress'];
@@ -37562,9 +36901,9 @@
   bool operator ==(Object other) {
     if (other is SignatureHelpOptions &&
         other.runtimeType == SignatureHelpOptions) {
-      return listEqual(triggerCharacters, other.triggerCharacters,
+      return listEqual(retriggerCharacters, other.retriggerCharacters,
               (String a, String b) => a == b) &&
-          listEqual(retriggerCharacters, other.retriggerCharacters,
+          listEqual(triggerCharacters, other.triggerCharacters,
               (String a, String b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -37574,8 +36913,8 @@
 
   @override
   int get hashCode => Object.hash(
-        lspHashCode(triggerCharacters),
         lspHashCode(retriggerCharacters),
+        lspHashCode(triggerCharacters),
         workDoneProgress,
       );
 
@@ -37592,8 +36931,8 @@
 
   SignatureHelpParams({
     this.context,
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
     this.workDoneToken,
   });
   static SignatureHelpParams fromJson(Map<String, Object?> json) {
@@ -37601,11 +36940,11 @@
     final context = contextJson != null
         ? SignatureHelpContext.fromJson(contextJson as Map<String, Object?>)
         : null;
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -37616,8 +36955,8 @@
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return SignatureHelpParams(
       context: context,
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -37642,8 +36981,8 @@
     if (context != null) {
       __result['context'] = context?.toJson();
     }
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -37663,24 +37002,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -37699,6 +37020,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -37722,8 +37061,8 @@
     if (other is SignatureHelpParams &&
         other.runtimeType == SignatureHelpParams) {
       return context == other.context &&
-          textDocument == other.textDocument &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -37733,8 +37072,8 @@
   @override
   int get hashCode => Object.hash(
         context,
-        textDocument,
         position,
+        textDocument,
         workDoneToken,
       );
 
@@ -37754,36 +37093,37 @@
 
   SignatureHelpRegistrationOptions({
     this.documentSelector,
-    this.triggerCharacters,
     this.retriggerCharacters,
+    this.triggerCharacters,
     this.workDoneProgress,
   });
   static SignatureHelpRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
-        .toList();
-    final triggerCharactersJson = json['triggerCharacters'];
-    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
-        ?.map((item) => item as String)
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     final retriggerCharactersJson = json['retriggerCharacters'];
     final retriggerCharacters = (retriggerCharactersJson as List<Object?>?)
         ?.map((item) => item as String)
         .toList();
+    final triggerCharactersJson = json['triggerCharacters'];
+    final triggerCharacters = (triggerCharactersJson as List<Object?>?)
+        ?.map((item) => item as String)
+        .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return SignatureHelpRegistrationOptions(
       documentSelector: documentSelector,
-      triggerCharacters: triggerCharacters,
       retriggerCharacters: retriggerCharacters,
+      triggerCharacters: triggerCharacters,
       workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// List of characters that re-trigger signature help.
   ///
@@ -37799,12 +37139,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
-    if (triggerCharacters != null) {
-      __result['triggerCharacters'] = triggerCharacters;
-    }
     if (retriggerCharacters != null) {
       __result['retriggerCharacters'] = retriggerCharacters;
     }
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
+    }
     if (workDoneProgress != null) {
       __result['workDoneProgress'] = workDoneProgress;
     }
@@ -37823,20 +37163,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('triggerCharacters');
-      try {
-        final triggerCharacters = obj['triggerCharacters'];
-        if (triggerCharacters != null &&
-            !((triggerCharacters is List<Object?> &&
-                (triggerCharacters.every((item) => item is String))))) {
-          reporter.reportError('must be of type List<String>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -37854,6 +37182,18 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('triggerCharacters');
+      try {
+        final triggerCharacters = obj['triggerCharacters'];
+        if (triggerCharacters != null &&
+            !((triggerCharacters is List<Object?> &&
+                (triggerCharacters.every((item) => item is String))))) {
+          reporter.reportError('must be of type List<String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneProgress');
       try {
         final workDoneProgress = obj['workDoneProgress'];
@@ -37876,11 +37216,11 @@
     if (other is SignatureHelpRegistrationOptions &&
         other.runtimeType == SignatureHelpRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          listEqual(triggerCharacters, other.triggerCharacters,
-              (String a, String b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           listEqual(retriggerCharacters, other.retriggerCharacters,
               (String a, String b) => a == b) &&
+          listEqual(triggerCharacters, other.triggerCharacters,
+              (String a, String b) => a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -37890,8 +37230,8 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
-        lspHashCode(triggerCharacters),
         lspHashCode(retriggerCharacters),
+        lspHashCode(triggerCharacters),
         workDoneProgress,
       );
 
@@ -37942,35 +37282,35 @@
   );
 
   SignatureInformation({
-    required this.label,
-    this.documentation,
-    this.parameters,
     this.activeParameter,
+    this.documentation,
+    required this.label,
+    this.parameters,
   });
   static SignatureInformation fromJson(Map<String, Object?> json) {
-    final labelJson = json['label'];
-    final label = labelJson as String;
+    final activeParameterJson = json['activeParameter'];
+    final activeParameter = activeParameterJson as int?;
     final documentationJson = json['documentation'];
     final documentation = documentationJson == null
         ? null
-        : (documentationJson is String
-            ? Either2<String, MarkupContent>.t1(documentationJson)
-            : (MarkupContent.canParse(documentationJson, nullLspJsonReporter)
-                ? Either2<String, MarkupContent>.t2(MarkupContent.fromJson(
-                    documentationJson as Map<String, Object?>))
-                : (throw '''$documentationJson was not one of (String, MarkupContent)''')));
+        : (MarkupContent.canParse(documentationJson, nullLspJsonReporter)
+            ? Either2<MarkupContent, String>.t1(MarkupContent.fromJson(
+                documentationJson as Map<String, Object?>))
+            : (documentationJson is String
+                ? Either2<MarkupContent, String>.t2(documentationJson)
+                : (throw '''$documentationJson was not one of (MarkupContent, String)''')));
+    final labelJson = json['label'];
+    final label = labelJson as String;
     final parametersJson = json['parameters'];
     final parameters = (parametersJson as List<Object?>?)
         ?.map((item) =>
             ParameterInformation.fromJson(item as Map<String, Object?>))
         .toList();
-    final activeParameterJson = json['activeParameter'];
-    final activeParameter = activeParameterJson as int?;
     return SignatureInformation(
-      label: label,
-      documentation: documentation,
-      parameters: parameters,
       activeParameter: activeParameter,
+      documentation: documentation,
+      label: label,
+      parameters: parameters,
     );
   }
 
@@ -37982,7 +37322,7 @@
 
   /// The human-readable doc-comment of this signature. Will be shown in the UI
   /// but can be omitted.
-  final Either2<String, MarkupContent>? documentation;
+  final Either2<MarkupContent, String>? documentation;
 
   /// The label of this signature. Will be shown in the UI.
   final String label;
@@ -37992,22 +37332,45 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['label'] = label;
+    if (activeParameter != null) {
+      __result['activeParameter'] = activeParameter;
+    }
     if (documentation != null) {
       __result['documentation'] = documentation;
     }
+    __result['label'] = label;
     if (parameters != null) {
       __result['parameters'] =
           parameters?.map((item) => item.toJson()).toList();
     }
-    if (activeParameter != null) {
-      __result['activeParameter'] = activeParameter;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('activeParameter');
+      try {
+        final activeParameter = obj['activeParameter'];
+        if (activeParameter != null && !(activeParameter is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentation');
+      try {
+        final documentation = obj['documentation'];
+        if (documentation != null &&
+            !((MarkupContent.canParse(documentation, reporter) ||
+                documentation is String))) {
+          reporter
+              .reportError('must be of type Either2<MarkupContent, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('label');
       try {
         if (!obj.containsKey('label')) {
@@ -38026,19 +37389,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('documentation');
-      try {
-        final documentation = obj['documentation'];
-        if (documentation != null &&
-            !((documentation is String ||
-                MarkupContent.canParse(documentation, reporter)))) {
-          reporter
-              .reportError('must be of type Either2<String, MarkupContent>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('parameters');
       try {
         final parameters = obj['parameters'];
@@ -38052,16 +37402,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('activeParameter');
-      try {
-        final activeParameter = obj['activeParameter'];
-        if (activeParameter != null && !(activeParameter is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type SignatureInformation');
@@ -38073,11 +37413,11 @@
   bool operator ==(Object other) {
     if (other is SignatureInformation &&
         other.runtimeType == SignatureInformation) {
-      return label == other.label &&
+      return activeParameter == other.activeParameter &&
           documentation == other.documentation &&
+          label == other.label &&
           listEqual(parameters, other.parameters,
               (ParameterInformation a, ParameterInformation b) => a == b) &&
-          activeParameter == other.activeParameter &&
           true;
     }
     return false;
@@ -38085,10 +37425,10 @@
 
   @override
   int get hashCode => Object.hash(
-        label,
-        documentation,
-        lspHashCode(parameters),
         activeParameter,
+        documentation,
+        label,
+        lspHashCode(parameters),
       );
 
   @override
@@ -38214,35 +37554,35 @@
   );
 
   SymbolInformation({
-    required this.name,
-    required this.kind,
-    this.tags,
-    this.deprecated,
-    required this.location,
     this.containerName,
+    this.deprecated,
+    required this.kind,
+    required this.location,
+    required this.name,
+    this.tags,
   });
   static SymbolInformation fromJson(Map<String, Object?> json) {
-    final nameJson = json['name'];
-    final name = nameJson as String;
+    final containerNameJson = json['containerName'];
+    final containerName = containerNameJson as String?;
+    final deprecatedJson = json['deprecated'];
+    final deprecated = deprecatedJson as bool?;
     final kindJson = json['kind'];
     final kind = SymbolKind.fromJson(kindJson as int);
+    final locationJson = json['location'];
+    final location = Location.fromJson(locationJson as Map<String, Object?>);
+    final nameJson = json['name'];
+    final name = nameJson as String;
     final tagsJson = json['tags'];
     final tags = (tagsJson as List<Object?>?)
         ?.map((item) => SymbolTag.fromJson(item as int))
         .toList();
-    final deprecatedJson = json['deprecated'];
-    final deprecated = deprecatedJson as bool?;
-    final locationJson = json['location'];
-    final location = Location.fromJson(locationJson as Map<String, Object?>);
-    final containerNameJson = json['containerName'];
-    final containerName = containerNameJson as String?;
     return SymbolInformation(
-      name: name,
-      kind: kind,
-      tags: tags,
-      deprecated: deprecated,
-      location: location,
       containerName: containerName,
+      deprecated: deprecated,
+      kind: kind,
+      location: location,
+      name: name,
+      tags: tags,
     );
   }
 
@@ -38279,41 +37619,43 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['name'] = name;
-    __result['kind'] = kind.toJson();
-    if (tags != null) {
-      __result['tags'] = tags?.map((item) => item.toJson()).toList();
+    if (containerName != null) {
+      __result['containerName'] = containerName;
     }
     if (deprecated != null) {
       __result['deprecated'] = deprecated;
     }
+    __result['kind'] = kind.toJson();
     __result['location'] = location.toJson();
-    if (containerName != null) {
-      __result['containerName'] = containerName;
+    __result['name'] = name;
+    if (tags != null) {
+      __result['tags'] = tags?.map((item) => item.toJson()).toList();
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('name');
+      reporter.push('containerName');
       try {
-        if (!obj.containsKey('name')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final name = obj['name'];
-        if (name == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(name is String)) {
+        final containerName = obj['containerName'];
+        if (containerName != null && !(containerName is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
       } finally {
         reporter.pop();
       }
+      reporter.push('deprecated');
+      try {
+        final deprecated = obj['deprecated'];
+        if (deprecated != null && !(deprecated is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -38332,28 +37674,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tags');
-      try {
-        final tags = obj['tags'];
-        if (tags != null &&
-            !((tags is List<Object?> &&
-                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<SymbolTag>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('deprecated');
-      try {
-        final deprecated = obj['deprecated'];
-        if (deprecated != null && !(deprecated is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('location');
       try {
         if (!obj.containsKey('location')) {
@@ -38372,16 +37692,36 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('containerName');
+      reporter.push('name');
       try {
-        final containerName = obj['containerName'];
-        if (containerName != null && !(containerName is String)) {
+        if (!obj.containsKey('name')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final name = obj['name'];
+        if (name == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(name is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
       } finally {
         reporter.pop();
       }
+      reporter.push('tags');
+      try {
+        final tags = obj['tags'];
+        if (tags != null &&
+            !((tags is List<Object?> &&
+                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<SymbolTag>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type SymbolInformation');
@@ -38392,12 +37732,12 @@
   @override
   bool operator ==(Object other) {
     if (other is SymbolInformation && other.runtimeType == SymbolInformation) {
-      return name == other.name &&
-          kind == other.kind &&
-          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
+      return containerName == other.containerName &&
           deprecated == other.deprecated &&
+          kind == other.kind &&
           location == other.location &&
-          containerName == other.containerName &&
+          name == other.name &&
+          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
           true;
     }
     return false;
@@ -38405,12 +37745,12 @@
 
   @override
   int get hashCode => Object.hash(
-        name,
-        kind,
-        lspHashCode(tags),
-        deprecated,
-        location,
         containerName,
+        deprecated,
+        kind,
+        location,
+        name,
+        lspHashCode(tags),
       );
 
   @override
@@ -38502,26 +37842,27 @@
   );
 
   TextDocumentChangeRegistrationOptions({
-    required this.syncKind,
     this.documentSelector,
+    required this.syncKind,
   });
   static TextDocumentChangeRegistrationOptions fromJson(
       Map<String, Object?> json) {
-    final syncKindJson = json['syncKind'];
-    final syncKind = TextDocumentSyncKind.fromJson(syncKindJson as int);
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
+    final syncKindJson = json['syncKind'];
+    final syncKind = TextDocumentSyncKind.fromJson(syncKindJson as int);
     return TextDocumentChangeRegistrationOptions(
-      syncKind: syncKind,
       documentSelector: documentSelector,
+      syncKind: syncKind,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// How documents are synced to the server. See TextDocumentSyncKind.Full and
   /// TextDocumentSyncKind.Incremental.
@@ -38529,13 +37870,30 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['syncKind'] = syncKind.toJson();
     __result['documentSelector'] = documentSelector;
+    __result['syncKind'] = syncKind.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('documentSelector');
+      try {
+        if (!obj.containsKey('documentSelector')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final documentSelector = obj['documentSelector'];
+        if (documentSelector != null &&
+            !((documentSelector is List<Object?> &&
+                (documentSelector.every(
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('syncKind');
       try {
         if (!obj.containsKey('syncKind')) {
@@ -38554,23 +37912,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('documentSelector');
-      try {
-        if (!obj.containsKey('documentSelector')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final documentSelector = obj['documentSelector'];
-        if (documentSelector != null &&
-            !((documentSelector is List<Object?> &&
-                (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter
@@ -38583,9 +37924,9 @@
   bool operator ==(Object other) {
     if (other is TextDocumentChangeRegistrationOptions &&
         other.runtimeType == TextDocumentChangeRegistrationOptions) {
-      return syncKind == other.syncKind &&
-          listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+      return listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+          syncKind == other.syncKind &&
           true;
     }
     return false;
@@ -38593,8 +37934,8 @@
 
   @override
   int get hashCode => Object.hash(
-        syncKind,
         lspHashCode(documentSelector),
+        syncKind,
       );
 
   @override
@@ -38609,91 +37950,42 @@
   );
 
   TextDocumentClientCapabilities({
-    this.synchronization,
-    this.completion,
-    this.hover,
-    this.signatureHelp,
-    this.declaration,
-    this.definition,
-    this.typeDefinition,
-    this.implementation,
-    this.references,
-    this.documentHighlight,
-    this.documentSymbol,
+    this.callHierarchy,
     this.codeAction,
     this.codeLens,
-    this.documentLink,
     this.colorProvider,
-    this.formatting,
-    this.rangeFormatting,
-    this.onTypeFormatting,
-    this.rename,
-    this.publishDiagnostics,
-    this.foldingRange,
-    this.selectionRange,
-    this.linkedEditingRange,
-    this.callHierarchy,
-    this.semanticTokens,
-    this.moniker,
-    this.typeHierarchy,
-    this.inlineValue,
-    this.inlayHint,
+    this.completion,
+    this.declaration,
+    this.definition,
     this.diagnostic,
+    this.documentHighlight,
+    this.documentLink,
+    this.documentSymbol,
+    this.foldingRange,
+    this.formatting,
+    this.hover,
+    this.implementation,
+    this.inlayHint,
+    this.inlineValue,
+    this.linkedEditingRange,
+    this.moniker,
+    this.onTypeFormatting,
+    this.publishDiagnostics,
+    this.rangeFormatting,
+    this.references,
+    this.rename,
+    this.selectionRange,
+    this.semanticTokens,
+    this.signatureHelp,
+    this.synchronization,
+    this.typeDefinition,
+    this.typeHierarchy,
   });
   static TextDocumentClientCapabilities fromJson(Map<String, Object?> json) {
-    final synchronizationJson = json['synchronization'];
-    final synchronization = synchronizationJson != null
-        ? TextDocumentSyncClientCapabilities.fromJson(
-            synchronizationJson as Map<String, Object?>)
-        : null;
-    final completionJson = json['completion'];
-    final completion = completionJson != null
-        ? CompletionClientCapabilities.fromJson(
-            completionJson as Map<String, Object?>)
-        : null;
-    final hoverJson = json['hover'];
-    final hover = hoverJson != null
-        ? HoverClientCapabilities.fromJson(hoverJson as Map<String, Object?>)
-        : null;
-    final signatureHelpJson = json['signatureHelp'];
-    final signatureHelp = signatureHelpJson != null
-        ? SignatureHelpClientCapabilities.fromJson(
-            signatureHelpJson as Map<String, Object?>)
-        : null;
-    final declarationJson = json['declaration'];
-    final declaration = declarationJson != null
-        ? DeclarationClientCapabilities.fromJson(
-            declarationJson as Map<String, Object?>)
-        : null;
-    final definitionJson = json['definition'];
-    final definition = definitionJson != null
-        ? DefinitionClientCapabilities.fromJson(
-            definitionJson as Map<String, Object?>)
-        : null;
-    final typeDefinitionJson = json['typeDefinition'];
-    final typeDefinition = typeDefinitionJson != null
-        ? TypeDefinitionClientCapabilities.fromJson(
-            typeDefinitionJson as Map<String, Object?>)
-        : null;
-    final implementationJson = json['implementation'];
-    final implementation = implementationJson != null
-        ? ImplementationClientCapabilities.fromJson(
-            implementationJson as Map<String, Object?>)
-        : null;
-    final referencesJson = json['references'];
-    final references = referencesJson != null
-        ? ReferenceClientCapabilities.fromJson(
-            referencesJson as Map<String, Object?>)
-        : null;
-    final documentHighlightJson = json['documentHighlight'];
-    final documentHighlight = documentHighlightJson != null
-        ? DocumentHighlightClientCapabilities.fromJson(
-            documentHighlightJson as Map<String, Object?>)
-        : null;
-    final documentSymbolJson = json['documentSymbol'];
-    final documentSymbol = documentSymbolJson != null
-        ? DocumentSymbolClientCapabilities.fromJson(
-            documentSymbolJson as Map<String, Object?>)
+    final callHierarchyJson = json['callHierarchy'];
+    final callHierarchy = callHierarchyJson != null
+        ? CallHierarchyClientCapabilities.fromJson(
+            callHierarchyJson as Map<String, Object?>)
         : null;
     final codeActionJson = json['codeAction'];
     final codeAction = codeActionJson != null
@@ -38705,121 +37997,170 @@
         ? CodeLensClientCapabilities.fromJson(
             codeLensJson as Map<String, Object?>)
         : null;
-    final documentLinkJson = json['documentLink'];
-    final documentLink = documentLinkJson != null
-        ? DocumentLinkClientCapabilities.fromJson(
-            documentLinkJson as Map<String, Object?>)
-        : null;
     final colorProviderJson = json['colorProvider'];
     final colorProvider = colorProviderJson != null
         ? DocumentColorClientCapabilities.fromJson(
             colorProviderJson as Map<String, Object?>)
         : null;
-    final formattingJson = json['formatting'];
-    final formatting = formattingJson != null
-        ? DocumentFormattingClientCapabilities.fromJson(
-            formattingJson as Map<String, Object?>)
+    final completionJson = json['completion'];
+    final completion = completionJson != null
+        ? CompletionClientCapabilities.fromJson(
+            completionJson as Map<String, Object?>)
         : null;
-    final rangeFormattingJson = json['rangeFormatting'];
-    final rangeFormatting = rangeFormattingJson != null
-        ? DocumentRangeFormattingClientCapabilities.fromJson(
-            rangeFormattingJson as Map<String, Object?>)
+    final declarationJson = json['declaration'];
+    final declaration = declarationJson != null
+        ? DeclarationClientCapabilities.fromJson(
+            declarationJson as Map<String, Object?>)
         : null;
-    final onTypeFormattingJson = json['onTypeFormatting'];
-    final onTypeFormatting = onTypeFormattingJson != null
-        ? DocumentOnTypeFormattingClientCapabilities.fromJson(
-            onTypeFormattingJson as Map<String, Object?>)
-        : null;
-    final renameJson = json['rename'];
-    final rename = renameJson != null
-        ? RenameClientCapabilities.fromJson(renameJson as Map<String, Object?>)
-        : null;
-    final publishDiagnosticsJson = json['publishDiagnostics'];
-    final publishDiagnostics = publishDiagnosticsJson != null
-        ? PublishDiagnosticsClientCapabilities.fromJson(
-            publishDiagnosticsJson as Map<String, Object?>)
-        : null;
-    final foldingRangeJson = json['foldingRange'];
-    final foldingRange = foldingRangeJson != null
-        ? FoldingRangeClientCapabilities.fromJson(
-            foldingRangeJson as Map<String, Object?>)
-        : null;
-    final selectionRangeJson = json['selectionRange'];
-    final selectionRange = selectionRangeJson != null
-        ? SelectionRangeClientCapabilities.fromJson(
-            selectionRangeJson as Map<String, Object?>)
-        : null;
-    final linkedEditingRangeJson = json['linkedEditingRange'];
-    final linkedEditingRange = linkedEditingRangeJson != null
-        ? LinkedEditingRangeClientCapabilities.fromJson(
-            linkedEditingRangeJson as Map<String, Object?>)
-        : null;
-    final callHierarchyJson = json['callHierarchy'];
-    final callHierarchy = callHierarchyJson != null
-        ? CallHierarchyClientCapabilities.fromJson(
-            callHierarchyJson as Map<String, Object?>)
-        : null;
-    final semanticTokensJson = json['semanticTokens'];
-    final semanticTokens = semanticTokensJson != null
-        ? SemanticTokensClientCapabilities.fromJson(
-            semanticTokensJson as Map<String, Object?>)
-        : null;
-    final monikerJson = json['moniker'];
-    final moniker = monikerJson != null
-        ? MonikerClientCapabilities.fromJson(
-            monikerJson as Map<String, Object?>)
-        : null;
-    final typeHierarchyJson = json['typeHierarchy'];
-    final typeHierarchy = typeHierarchyJson != null
-        ? TypeHierarchyClientCapabilities1.fromJson(
-            typeHierarchyJson as Map<String, Object?>)
-        : null;
-    final inlineValueJson = json['inlineValue'];
-    final inlineValue = inlineValueJson != null
-        ? InlineValueClientCapabilities.fromJson(
-            inlineValueJson as Map<String, Object?>)
-        : null;
-    final inlayHintJson = json['inlayHint'];
-    final inlayHint = inlayHintJson != null
-        ? InlayHintClientCapabilities.fromJson(
-            inlayHintJson as Map<String, Object?>)
+    final definitionJson = json['definition'];
+    final definition = definitionJson != null
+        ? DefinitionClientCapabilities.fromJson(
+            definitionJson as Map<String, Object?>)
         : null;
     final diagnosticJson = json['diagnostic'];
     final diagnostic = diagnosticJson != null
         ? DiagnosticClientCapabilities.fromJson(
             diagnosticJson as Map<String, Object?>)
         : null;
+    final documentHighlightJson = json['documentHighlight'];
+    final documentHighlight = documentHighlightJson != null
+        ? DocumentHighlightClientCapabilities.fromJson(
+            documentHighlightJson as Map<String, Object?>)
+        : null;
+    final documentLinkJson = json['documentLink'];
+    final documentLink = documentLinkJson != null
+        ? DocumentLinkClientCapabilities.fromJson(
+            documentLinkJson as Map<String, Object?>)
+        : null;
+    final documentSymbolJson = json['documentSymbol'];
+    final documentSymbol = documentSymbolJson != null
+        ? DocumentSymbolClientCapabilities.fromJson(
+            documentSymbolJson as Map<String, Object?>)
+        : null;
+    final foldingRangeJson = json['foldingRange'];
+    final foldingRange = foldingRangeJson != null
+        ? FoldingRangeClientCapabilities.fromJson(
+            foldingRangeJson as Map<String, Object?>)
+        : null;
+    final formattingJson = json['formatting'];
+    final formatting = formattingJson != null
+        ? DocumentFormattingClientCapabilities.fromJson(
+            formattingJson as Map<String, Object?>)
+        : null;
+    final hoverJson = json['hover'];
+    final hover = hoverJson != null
+        ? HoverClientCapabilities.fromJson(hoverJson as Map<String, Object?>)
+        : null;
+    final implementationJson = json['implementation'];
+    final implementation = implementationJson != null
+        ? ImplementationClientCapabilities.fromJson(
+            implementationJson as Map<String, Object?>)
+        : null;
+    final inlayHintJson = json['inlayHint'];
+    final inlayHint = inlayHintJson != null
+        ? InlayHintClientCapabilities.fromJson(
+            inlayHintJson as Map<String, Object?>)
+        : null;
+    final inlineValueJson = json['inlineValue'];
+    final inlineValue = inlineValueJson != null
+        ? InlineValueClientCapabilities.fromJson(
+            inlineValueJson as Map<String, Object?>)
+        : null;
+    final linkedEditingRangeJson = json['linkedEditingRange'];
+    final linkedEditingRange = linkedEditingRangeJson != null
+        ? LinkedEditingRangeClientCapabilities.fromJson(
+            linkedEditingRangeJson as Map<String, Object?>)
+        : null;
+    final monikerJson = json['moniker'];
+    final moniker = monikerJson != null
+        ? MonikerClientCapabilities.fromJson(
+            monikerJson as Map<String, Object?>)
+        : null;
+    final onTypeFormattingJson = json['onTypeFormatting'];
+    final onTypeFormatting = onTypeFormattingJson != null
+        ? DocumentOnTypeFormattingClientCapabilities.fromJson(
+            onTypeFormattingJson as Map<String, Object?>)
+        : null;
+    final publishDiagnosticsJson = json['publishDiagnostics'];
+    final publishDiagnostics = publishDiagnosticsJson != null
+        ? PublishDiagnosticsClientCapabilities.fromJson(
+            publishDiagnosticsJson as Map<String, Object?>)
+        : null;
+    final rangeFormattingJson = json['rangeFormatting'];
+    final rangeFormatting = rangeFormattingJson != null
+        ? DocumentRangeFormattingClientCapabilities.fromJson(
+            rangeFormattingJson as Map<String, Object?>)
+        : null;
+    final referencesJson = json['references'];
+    final references = referencesJson != null
+        ? ReferenceClientCapabilities.fromJson(
+            referencesJson as Map<String, Object?>)
+        : null;
+    final renameJson = json['rename'];
+    final rename = renameJson != null
+        ? RenameClientCapabilities.fromJson(renameJson as Map<String, Object?>)
+        : null;
+    final selectionRangeJson = json['selectionRange'];
+    final selectionRange = selectionRangeJson != null
+        ? SelectionRangeClientCapabilities.fromJson(
+            selectionRangeJson as Map<String, Object?>)
+        : null;
+    final semanticTokensJson = json['semanticTokens'];
+    final semanticTokens = semanticTokensJson != null
+        ? SemanticTokensClientCapabilities.fromJson(
+            semanticTokensJson as Map<String, Object?>)
+        : null;
+    final signatureHelpJson = json['signatureHelp'];
+    final signatureHelp = signatureHelpJson != null
+        ? SignatureHelpClientCapabilities.fromJson(
+            signatureHelpJson as Map<String, Object?>)
+        : null;
+    final synchronizationJson = json['synchronization'];
+    final synchronization = synchronizationJson != null
+        ? TextDocumentSyncClientCapabilities.fromJson(
+            synchronizationJson as Map<String, Object?>)
+        : null;
+    final typeDefinitionJson = json['typeDefinition'];
+    final typeDefinition = typeDefinitionJson != null
+        ? TypeDefinitionClientCapabilities.fromJson(
+            typeDefinitionJson as Map<String, Object?>)
+        : null;
+    final typeHierarchyJson = json['typeHierarchy'];
+    final typeHierarchy = typeHierarchyJson != null
+        ? TypeHierarchyClientCapabilities1.fromJson(
+            typeHierarchyJson as Map<String, Object?>)
+        : null;
     return TextDocumentClientCapabilities(
-      synchronization: synchronization,
-      completion: completion,
-      hover: hover,
-      signatureHelp: signatureHelp,
-      declaration: declaration,
-      definition: definition,
-      typeDefinition: typeDefinition,
-      implementation: implementation,
-      references: references,
-      documentHighlight: documentHighlight,
-      documentSymbol: documentSymbol,
+      callHierarchy: callHierarchy,
       codeAction: codeAction,
       codeLens: codeLens,
-      documentLink: documentLink,
       colorProvider: colorProvider,
-      formatting: formatting,
-      rangeFormatting: rangeFormatting,
-      onTypeFormatting: onTypeFormatting,
-      rename: rename,
-      publishDiagnostics: publishDiagnostics,
-      foldingRange: foldingRange,
-      selectionRange: selectionRange,
-      linkedEditingRange: linkedEditingRange,
-      callHierarchy: callHierarchy,
-      semanticTokens: semanticTokens,
-      moniker: moniker,
-      typeHierarchy: typeHierarchy,
-      inlineValue: inlineValue,
-      inlayHint: inlayHint,
+      completion: completion,
+      declaration: declaration,
+      definition: definition,
       diagnostic: diagnostic,
+      documentHighlight: documentHighlight,
+      documentLink: documentLink,
+      documentSymbol: documentSymbol,
+      foldingRange: foldingRange,
+      formatting: formatting,
+      hover: hover,
+      implementation: implementation,
+      inlayHint: inlayHint,
+      inlineValue: inlineValue,
+      linkedEditingRange: linkedEditingRange,
+      moniker: moniker,
+      onTypeFormatting: onTypeFormatting,
+      publishDiagnostics: publishDiagnostics,
+      rangeFormatting: rangeFormatting,
+      references: references,
+      rename: rename,
+      selectionRange: selectionRange,
+      semanticTokens: semanticTokens,
+      signatureHelp: signatureHelp,
+      synchronization: synchronization,
+      typeDefinition: typeDefinition,
+      typeHierarchy: typeHierarchy,
     );
   }
 
@@ -38930,38 +38271,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (synchronization != null) {
-      __result['synchronization'] = synchronization?.toJson();
-    }
-    if (completion != null) {
-      __result['completion'] = completion?.toJson();
-    }
-    if (hover != null) {
-      __result['hover'] = hover?.toJson();
-    }
-    if (signatureHelp != null) {
-      __result['signatureHelp'] = signatureHelp?.toJson();
-    }
-    if (declaration != null) {
-      __result['declaration'] = declaration?.toJson();
-    }
-    if (definition != null) {
-      __result['definition'] = definition?.toJson();
-    }
-    if (typeDefinition != null) {
-      __result['typeDefinition'] = typeDefinition?.toJson();
-    }
-    if (implementation != null) {
-      __result['implementation'] = implementation?.toJson();
-    }
-    if (references != null) {
-      __result['references'] = references?.toJson();
-    }
-    if (documentHighlight != null) {
-      __result['documentHighlight'] = documentHighlight?.toJson();
-    }
-    if (documentSymbol != null) {
-      __result['documentSymbol'] = documentSymbol?.toJson();
+    if (callHierarchy != null) {
+      __result['callHierarchy'] = callHierarchy?.toJson();
     }
     if (codeAction != null) {
       __result['codeAction'] = codeAction?.toJson();
@@ -38969,190 +38280,100 @@
     if (codeLens != null) {
       __result['codeLens'] = codeLens?.toJson();
     }
-    if (documentLink != null) {
-      __result['documentLink'] = documentLink?.toJson();
-    }
     if (colorProvider != null) {
       __result['colorProvider'] = colorProvider?.toJson();
     }
-    if (formatting != null) {
-      __result['formatting'] = formatting?.toJson();
+    if (completion != null) {
+      __result['completion'] = completion?.toJson();
     }
-    if (rangeFormatting != null) {
-      __result['rangeFormatting'] = rangeFormatting?.toJson();
+    if (declaration != null) {
+      __result['declaration'] = declaration?.toJson();
     }
-    if (onTypeFormatting != null) {
-      __result['onTypeFormatting'] = onTypeFormatting?.toJson();
+    if (definition != null) {
+      __result['definition'] = definition?.toJson();
     }
-    if (rename != null) {
-      __result['rename'] = rename?.toJson();
+    if (diagnostic != null) {
+      __result['diagnostic'] = diagnostic?.toJson();
     }
-    if (publishDiagnostics != null) {
-      __result['publishDiagnostics'] = publishDiagnostics?.toJson();
+    if (documentHighlight != null) {
+      __result['documentHighlight'] = documentHighlight?.toJson();
+    }
+    if (documentLink != null) {
+      __result['documentLink'] = documentLink?.toJson();
+    }
+    if (documentSymbol != null) {
+      __result['documentSymbol'] = documentSymbol?.toJson();
     }
     if (foldingRange != null) {
       __result['foldingRange'] = foldingRange?.toJson();
     }
-    if (selectionRange != null) {
-      __result['selectionRange'] = selectionRange?.toJson();
+    if (formatting != null) {
+      __result['formatting'] = formatting?.toJson();
     }
-    if (linkedEditingRange != null) {
-      __result['linkedEditingRange'] = linkedEditingRange?.toJson();
+    if (hover != null) {
+      __result['hover'] = hover?.toJson();
     }
-    if (callHierarchy != null) {
-      __result['callHierarchy'] = callHierarchy?.toJson();
-    }
-    if (semanticTokens != null) {
-      __result['semanticTokens'] = semanticTokens?.toJson();
-    }
-    if (moniker != null) {
-      __result['moniker'] = moniker?.toJson();
-    }
-    if (typeHierarchy != null) {
-      __result['typeHierarchy'] = typeHierarchy;
-    }
-    if (inlineValue != null) {
-      __result['inlineValue'] = inlineValue?.toJson();
+    if (implementation != null) {
+      __result['implementation'] = implementation?.toJson();
     }
     if (inlayHint != null) {
       __result['inlayHint'] = inlayHint?.toJson();
     }
-    if (diagnostic != null) {
-      __result['diagnostic'] = diagnostic?.toJson();
+    if (inlineValue != null) {
+      __result['inlineValue'] = inlineValue?.toJson();
+    }
+    if (linkedEditingRange != null) {
+      __result['linkedEditingRange'] = linkedEditingRange?.toJson();
+    }
+    if (moniker != null) {
+      __result['moniker'] = moniker?.toJson();
+    }
+    if (onTypeFormatting != null) {
+      __result['onTypeFormatting'] = onTypeFormatting?.toJson();
+    }
+    if (publishDiagnostics != null) {
+      __result['publishDiagnostics'] = publishDiagnostics?.toJson();
+    }
+    if (rangeFormatting != null) {
+      __result['rangeFormatting'] = rangeFormatting?.toJson();
+    }
+    if (references != null) {
+      __result['references'] = references?.toJson();
+    }
+    if (rename != null) {
+      __result['rename'] = rename?.toJson();
+    }
+    if (selectionRange != null) {
+      __result['selectionRange'] = selectionRange?.toJson();
+    }
+    if (semanticTokens != null) {
+      __result['semanticTokens'] = semanticTokens?.toJson();
+    }
+    if (signatureHelp != null) {
+      __result['signatureHelp'] = signatureHelp?.toJson();
+    }
+    if (synchronization != null) {
+      __result['synchronization'] = synchronization?.toJson();
+    }
+    if (typeDefinition != null) {
+      __result['typeDefinition'] = typeDefinition?.toJson();
+    }
+    if (typeHierarchy != null) {
+      __result['typeHierarchy'] = typeHierarchy?.toJson();
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('synchronization');
+      reporter.push('callHierarchy');
       try {
-        final synchronization = obj['synchronization'];
-        if (synchronization != null &&
-            !(TextDocumentSyncClientCapabilities.canParse(
-                synchronization, reporter))) {
-          reporter.reportError(
-              'must be of type TextDocumentSyncClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('completion');
-      try {
-        final completion = obj['completion'];
-        if (completion != null &&
-            !(CompletionClientCapabilities.canParse(completion, reporter))) {
-          reporter.reportError('must be of type CompletionClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('hover');
-      try {
-        final hover = obj['hover'];
-        if (hover != null &&
-            !(HoverClientCapabilities.canParse(hover, reporter))) {
-          reporter.reportError('must be of type HoverClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('signatureHelp');
-      try {
-        final signatureHelp = obj['signatureHelp'];
-        if (signatureHelp != null &&
-            !(SignatureHelpClientCapabilities.canParse(
-                signatureHelp, reporter))) {
+        final callHierarchy = obj['callHierarchy'];
+        if (callHierarchy != null &&
+            !(CallHierarchyClientCapabilities.canParse(
+                callHierarchy, reporter))) {
           reporter
-              .reportError('must be of type SignatureHelpClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('declaration');
-      try {
-        final declaration = obj['declaration'];
-        if (declaration != null &&
-            !(DeclarationClientCapabilities.canParse(declaration, reporter))) {
-          reporter.reportError('must be of type DeclarationClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('definition');
-      try {
-        final definition = obj['definition'];
-        if (definition != null &&
-            !(DefinitionClientCapabilities.canParse(definition, reporter))) {
-          reporter.reportError('must be of type DefinitionClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('typeDefinition');
-      try {
-        final typeDefinition = obj['typeDefinition'];
-        if (typeDefinition != null &&
-            !(TypeDefinitionClientCapabilities.canParse(
-                typeDefinition, reporter))) {
-          reporter
-              .reportError('must be of type TypeDefinitionClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('implementation');
-      try {
-        final implementation = obj['implementation'];
-        if (implementation != null &&
-            !(ImplementationClientCapabilities.canParse(
-                implementation, reporter))) {
-          reporter
-              .reportError('must be of type ImplementationClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('references');
-      try {
-        final references = obj['references'];
-        if (references != null &&
-            !(ReferenceClientCapabilities.canParse(references, reporter))) {
-          reporter.reportError('must be of type ReferenceClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('documentHighlight');
-      try {
-        final documentHighlight = obj['documentHighlight'];
-        if (documentHighlight != null &&
-            !(DocumentHighlightClientCapabilities.canParse(
-                documentHighlight, reporter))) {
-          reporter.reportError(
-              'must be of type DocumentHighlightClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('documentSymbol');
-      try {
-        final documentSymbol = obj['documentSymbol'];
-        if (documentSymbol != null &&
-            !(DocumentSymbolClientCapabilities.canParse(
-                documentSymbol, reporter))) {
-          reporter
-              .reportError('must be of type DocumentSymbolClientCapabilities');
+              .reportError('must be of type CallHierarchyClientCapabilities');
           return false;
         }
       } finally {
@@ -39180,19 +38401,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('documentLink');
-      try {
-        final documentLink = obj['documentLink'];
-        if (documentLink != null &&
-            !(DocumentLinkClientCapabilities.canParse(
-                documentLink, reporter))) {
-          reporter
-              .reportError('must be of type DocumentLinkClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('colorProvider');
       try {
         final colorProvider = obj['colorProvider'];
@@ -39206,64 +38414,84 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('formatting');
+      reporter.push('completion');
       try {
-        final formatting = obj['formatting'];
-        if (formatting != null &&
-            !(DocumentFormattingClientCapabilities.canParse(
-                formatting, reporter))) {
-          reporter.reportError(
-              'must be of type DocumentFormattingClientCapabilities');
+        final completion = obj['completion'];
+        if (completion != null &&
+            !(CompletionClientCapabilities.canParse(completion, reporter))) {
+          reporter.reportError('must be of type CompletionClientCapabilities');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('rangeFormatting');
+      reporter.push('declaration');
       try {
-        final rangeFormatting = obj['rangeFormatting'];
-        if (rangeFormatting != null &&
-            !(DocumentRangeFormattingClientCapabilities.canParse(
-                rangeFormatting, reporter))) {
-          reporter.reportError(
-              'must be of type DocumentRangeFormattingClientCapabilities');
+        final declaration = obj['declaration'];
+        if (declaration != null &&
+            !(DeclarationClientCapabilities.canParse(declaration, reporter))) {
+          reporter.reportError('must be of type DeclarationClientCapabilities');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('onTypeFormatting');
+      reporter.push('definition');
       try {
-        final onTypeFormatting = obj['onTypeFormatting'];
-        if (onTypeFormatting != null &&
-            !(DocumentOnTypeFormattingClientCapabilities.canParse(
-                onTypeFormatting, reporter))) {
-          reporter.reportError(
-              'must be of type DocumentOnTypeFormattingClientCapabilities');
+        final definition = obj['definition'];
+        if (definition != null &&
+            !(DefinitionClientCapabilities.canParse(definition, reporter))) {
+          reporter.reportError('must be of type DefinitionClientCapabilities');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('rename');
+      reporter.push('diagnostic');
       try {
-        final rename = obj['rename'];
-        if (rename != null &&
-            !(RenameClientCapabilities.canParse(rename, reporter))) {
-          reporter.reportError('must be of type RenameClientCapabilities');
+        final diagnostic = obj['diagnostic'];
+        if (diagnostic != null &&
+            !(DiagnosticClientCapabilities.canParse(diagnostic, reporter))) {
+          reporter.reportError('must be of type DiagnosticClientCapabilities');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('publishDiagnostics');
+      reporter.push('documentHighlight');
       try {
-        final publishDiagnostics = obj['publishDiagnostics'];
-        if (publishDiagnostics != null &&
-            !(PublishDiagnosticsClientCapabilities.canParse(
-                publishDiagnostics, reporter))) {
+        final documentHighlight = obj['documentHighlight'];
+        if (documentHighlight != null &&
+            !(DocumentHighlightClientCapabilities.canParse(
+                documentHighlight, reporter))) {
           reporter.reportError(
-              'must be of type PublishDiagnosticsClientCapabilities');
+              'must be of type DocumentHighlightClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentLink');
+      try {
+        final documentLink = obj['documentLink'];
+        if (documentLink != null &&
+            !(DocumentLinkClientCapabilities.canParse(
+                documentLink, reporter))) {
+          reporter
+              .reportError('must be of type DocumentLinkClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('documentSymbol');
+      try {
+        final documentSymbol = obj['documentSymbol'];
+        if (documentSymbol != null &&
+            !(DocumentSymbolClientCapabilities.canParse(
+                documentSymbol, reporter))) {
+          reporter
+              .reportError('must be of type DocumentSymbolClientCapabilities');
           return false;
         }
       } finally {
@@ -39282,14 +38510,60 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('selectionRange');
+      reporter.push('formatting');
       try {
-        final selectionRange = obj['selectionRange'];
-        if (selectionRange != null &&
-            !(SelectionRangeClientCapabilities.canParse(
-                selectionRange, reporter))) {
+        final formatting = obj['formatting'];
+        if (formatting != null &&
+            !(DocumentFormattingClientCapabilities.canParse(
+                formatting, reporter))) {
+          reporter.reportError(
+              'must be of type DocumentFormattingClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('hover');
+      try {
+        final hover = obj['hover'];
+        if (hover != null &&
+            !(HoverClientCapabilities.canParse(hover, reporter))) {
+          reporter.reportError('must be of type HoverClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('implementation');
+      try {
+        final implementation = obj['implementation'];
+        if (implementation != null &&
+            !(ImplementationClientCapabilities.canParse(
+                implementation, reporter))) {
           reporter
-              .reportError('must be of type SelectionRangeClientCapabilities');
+              .reportError('must be of type ImplementationClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('inlayHint');
+      try {
+        final inlayHint = obj['inlayHint'];
+        if (inlayHint != null &&
+            !(InlayHintClientCapabilities.canParse(inlayHint, reporter))) {
+          reporter.reportError('must be of type InlayHintClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('inlineValue');
+      try {
+        final inlineValue = obj['inlineValue'];
+        if (inlineValue != null &&
+            !(InlineValueClientCapabilities.canParse(inlineValue, reporter))) {
+          reporter.reportError('must be of type InlineValueClientCapabilities');
           return false;
         }
       } finally {
@@ -39308,14 +38582,86 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('callHierarchy');
+      reporter.push('moniker');
       try {
-        final callHierarchy = obj['callHierarchy'];
-        if (callHierarchy != null &&
-            !(CallHierarchyClientCapabilities.canParse(
-                callHierarchy, reporter))) {
+        final moniker = obj['moniker'];
+        if (moniker != null &&
+            !(MonikerClientCapabilities.canParse(moniker, reporter))) {
+          reporter.reportError('must be of type MonikerClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('onTypeFormatting');
+      try {
+        final onTypeFormatting = obj['onTypeFormatting'];
+        if (onTypeFormatting != null &&
+            !(DocumentOnTypeFormattingClientCapabilities.canParse(
+                onTypeFormatting, reporter))) {
+          reporter.reportError(
+              'must be of type DocumentOnTypeFormattingClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('publishDiagnostics');
+      try {
+        final publishDiagnostics = obj['publishDiagnostics'];
+        if (publishDiagnostics != null &&
+            !(PublishDiagnosticsClientCapabilities.canParse(
+                publishDiagnostics, reporter))) {
+          reporter.reportError(
+              'must be of type PublishDiagnosticsClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('rangeFormatting');
+      try {
+        final rangeFormatting = obj['rangeFormatting'];
+        if (rangeFormatting != null &&
+            !(DocumentRangeFormattingClientCapabilities.canParse(
+                rangeFormatting, reporter))) {
+          reporter.reportError(
+              'must be of type DocumentRangeFormattingClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('references');
+      try {
+        final references = obj['references'];
+        if (references != null &&
+            !(ReferenceClientCapabilities.canParse(references, reporter))) {
+          reporter.reportError('must be of type ReferenceClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('rename');
+      try {
+        final rename = obj['rename'];
+        if (rename != null &&
+            !(RenameClientCapabilities.canParse(rename, reporter))) {
+          reporter.reportError('must be of type RenameClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('selectionRange');
+      try {
+        final selectionRange = obj['selectionRange'];
+        if (selectionRange != null &&
+            !(SelectionRangeClientCapabilities.canParse(
+                selectionRange, reporter))) {
           reporter
-              .reportError('must be of type CallHierarchyClientCapabilities');
+              .reportError('must be of type SelectionRangeClientCapabilities');
           return false;
         }
       } finally {
@@ -39334,12 +38680,40 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('moniker');
+      reporter.push('signatureHelp');
       try {
-        final moniker = obj['moniker'];
-        if (moniker != null &&
-            !(MonikerClientCapabilities.canParse(moniker, reporter))) {
-          reporter.reportError('must be of type MonikerClientCapabilities');
+        final signatureHelp = obj['signatureHelp'];
+        if (signatureHelp != null &&
+            !(SignatureHelpClientCapabilities.canParse(
+                signatureHelp, reporter))) {
+          reporter
+              .reportError('must be of type SignatureHelpClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('synchronization');
+      try {
+        final synchronization = obj['synchronization'];
+        if (synchronization != null &&
+            !(TextDocumentSyncClientCapabilities.canParse(
+                synchronization, reporter))) {
+          reporter.reportError(
+              'must be of type TextDocumentSyncClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('typeDefinition');
+      try {
+        final typeDefinition = obj['typeDefinition'];
+        if (typeDefinition != null &&
+            !(TypeDefinitionClientCapabilities.canParse(
+                typeDefinition, reporter))) {
+          reporter
+              .reportError('must be of type TypeDefinitionClientCapabilities');
           return false;
         }
       } finally {
@@ -39358,39 +38732,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('inlineValue');
-      try {
-        final inlineValue = obj['inlineValue'];
-        if (inlineValue != null &&
-            !(InlineValueClientCapabilities.canParse(inlineValue, reporter))) {
-          reporter.reportError('must be of type InlineValueClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('inlayHint');
-      try {
-        final inlayHint = obj['inlayHint'];
-        if (inlayHint != null &&
-            !(InlayHintClientCapabilities.canParse(inlayHint, reporter))) {
-          reporter.reportError('must be of type InlayHintClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('diagnostic');
-      try {
-        final diagnostic = obj['diagnostic'];
-        if (diagnostic != null &&
-            !(DiagnosticClientCapabilities.canParse(diagnostic, reporter))) {
-          reporter.reportError('must be of type DiagnosticClientCapabilities');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type TextDocumentClientCapabilities');
@@ -39402,36 +38743,36 @@
   bool operator ==(Object other) {
     if (other is TextDocumentClientCapabilities &&
         other.runtimeType == TextDocumentClientCapabilities) {
-      return synchronization == other.synchronization &&
-          completion == other.completion &&
-          hover == other.hover &&
-          signatureHelp == other.signatureHelp &&
-          declaration == other.declaration &&
-          definition == other.definition &&
-          typeDefinition == other.typeDefinition &&
-          implementation == other.implementation &&
-          references == other.references &&
-          documentHighlight == other.documentHighlight &&
-          documentSymbol == other.documentSymbol &&
+      return callHierarchy == other.callHierarchy &&
           codeAction == other.codeAction &&
           codeLens == other.codeLens &&
-          documentLink == other.documentLink &&
           colorProvider == other.colorProvider &&
-          formatting == other.formatting &&
-          rangeFormatting == other.rangeFormatting &&
-          onTypeFormatting == other.onTypeFormatting &&
-          rename == other.rename &&
-          publishDiagnostics == other.publishDiagnostics &&
-          foldingRange == other.foldingRange &&
-          selectionRange == other.selectionRange &&
-          linkedEditingRange == other.linkedEditingRange &&
-          callHierarchy == other.callHierarchy &&
-          semanticTokens == other.semanticTokens &&
-          moniker == other.moniker &&
-          typeHierarchy == other.typeHierarchy &&
-          inlineValue == other.inlineValue &&
-          inlayHint == other.inlayHint &&
+          completion == other.completion &&
+          declaration == other.declaration &&
+          definition == other.definition &&
           diagnostic == other.diagnostic &&
+          documentHighlight == other.documentHighlight &&
+          documentLink == other.documentLink &&
+          documentSymbol == other.documentSymbol &&
+          foldingRange == other.foldingRange &&
+          formatting == other.formatting &&
+          hover == other.hover &&
+          implementation == other.implementation &&
+          inlayHint == other.inlayHint &&
+          inlineValue == other.inlineValue &&
+          linkedEditingRange == other.linkedEditingRange &&
+          moniker == other.moniker &&
+          onTypeFormatting == other.onTypeFormatting &&
+          publishDiagnostics == other.publishDiagnostics &&
+          rangeFormatting == other.rangeFormatting &&
+          references == other.references &&
+          rename == other.rename &&
+          selectionRange == other.selectionRange &&
+          semanticTokens == other.semanticTokens &&
+          signatureHelp == other.signatureHelp &&
+          synchronization == other.synchronization &&
+          typeDefinition == other.typeDefinition &&
+          typeHierarchy == other.typeHierarchy &&
           true;
     }
     return false;
@@ -39439,36 +38780,36 @@
 
   @override
   int get hashCode => Object.hashAll([
-        synchronization,
-        completion,
-        hover,
-        signatureHelp,
-        declaration,
-        definition,
-        typeDefinition,
-        implementation,
-        references,
-        documentHighlight,
-        documentSymbol,
+        callHierarchy,
         codeAction,
         codeLens,
-        documentLink,
         colorProvider,
-        formatting,
-        rangeFormatting,
-        onTypeFormatting,
-        rename,
-        publishDiagnostics,
-        foldingRange,
-        selectionRange,
-        linkedEditingRange,
-        callHierarchy,
-        semanticTokens,
-        moniker,
-        typeHierarchy,
-        inlineValue,
-        inlayHint,
+        completion,
+        declaration,
+        definition,
         diagnostic,
+        documentHighlight,
+        documentLink,
+        documentSymbol,
+        foldingRange,
+        formatting,
+        hover,
+        implementation,
+        inlayHint,
+        inlineValue,
+        linkedEditingRange,
+        moniker,
+        onTypeFormatting,
+        publishDiagnostics,
+        rangeFormatting,
+        references,
+        rename,
+        selectionRange,
+        semanticTokens,
+        signatureHelp,
+        synchronization,
+        typeDefinition,
+        typeHierarchy,
       ]);
 
   @override
@@ -39674,49 +39015,72 @@
   );
 
   TextDocumentEdit({
-    required this.textDocument,
     required this.edits,
+    required this.textDocument,
   });
   static TextDocumentEdit fromJson(Map<String, Object?> json) {
+    final editsJson = json['edits'];
+    final edits = (editsJson as List<Object?>)
+        .map((item) => AnnotatedTextEdit.canParse(item, nullLspJsonReporter)
+            ? Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit>.t1(
+                AnnotatedTextEdit.fromJson(item as Map<String, Object?>))
+            : (SnippetTextEdit.canParse(item, nullLspJsonReporter)
+                ? Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit>.t2(
+                    SnippetTextEdit.fromJson(item as Map<String, Object?>))
+                : (TextEdit.canParse(item, nullLspJsonReporter)
+                    ? Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit>.t3(
+                        TextEdit.fromJson(item as Map<String, Object?>))
+                    : (throw '''$item was not one of (AnnotatedTextEdit, SnippetTextEdit, TextEdit)'''))))
+        .toList();
     final textDocumentJson = json['textDocument'];
     final textDocument = OptionalVersionedTextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final editsJson = json['edits'];
-    final edits = (editsJson as List<Object?>)
-        .map((item) => SnippetTextEdit.canParse(item, nullLspJsonReporter)
-            ? Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit>.t1(
-                SnippetTextEdit.fromJson(item as Map<String, Object?>))
-            : (AnnotatedTextEdit.canParse(item, nullLspJsonReporter)
-                ? Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit>.t2(
-                    AnnotatedTextEdit.fromJson(item as Map<String, Object?>))
-                : (TextEdit.canParse(item, nullLspJsonReporter)
-                    ? Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit>.t3(
-                        TextEdit.fromJson(item as Map<String, Object?>))
-                    : (throw '''$item was not one of (SnippetTextEdit, AnnotatedTextEdit, TextEdit)'''))))
-        .toList();
     return TextDocumentEdit(
-      textDocument: textDocument,
       edits: edits,
+      textDocument: textDocument,
     );
   }
 
   /// The edits to be applied.
   ///  @since 3.16.0 - support for AnnotatedTextEdit. This is guarded by the
   /// client capability `workspace.workspaceEdit.changeAnnotationSupport`
-  final List<Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit>> edits;
+  final List<Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit>> edits;
 
   /// The text document to change.
   final OptionalVersionedTextDocumentIdentifier textDocument;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['edits'] = edits;
+    __result['textDocument'] = textDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('edits');
+      try {
+        if (!obj.containsKey('edits')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final edits = obj['edits'];
+        if (edits == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!((edits is List<Object?> &&
+            (edits.every((item) =>
+                (AnnotatedTextEdit.canParse(item, reporter) ||
+                    SnippetTextEdit.canParse(item, reporter) ||
+                    TextEdit.canParse(item, reporter))))))) {
+          reporter.reportError(
+              'must be of type List<Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit>>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('textDocument');
       try {
         if (!obj.containsKey('textDocument')) {
@@ -39737,28 +39101,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('edits');
-      try {
-        if (!obj.containsKey('edits')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final edits = obj['edits'];
-        if (edits == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!((edits is List<Object?> &&
-            (edits.every((item) => (SnippetTextEdit.canParse(item, reporter) ||
-                AnnotatedTextEdit.canParse(item, reporter) ||
-                TextEdit.canParse(item, reporter))))))) {
-          reporter.reportError(
-              'must be of type List<Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit>>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type TextDocumentEdit');
@@ -39769,14 +39111,14 @@
   @override
   bool operator ==(Object other) {
     if (other is TextDocumentEdit && other.runtimeType == TextDocumentEdit) {
-      return textDocument == other.textDocument &&
-          listEqual(
+      return listEqual(
               edits,
               other.edits,
-              (Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit> a,
-                      Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit>
+              (Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit> a,
+                      Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit>
                           b) =>
                   a == b) &&
+          textDocument == other.textDocument &&
           true;
     }
     return false;
@@ -39784,8 +39126,130 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         lspHashCode(edits),
+        textDocument,
+      );
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
+class TextDocumentFilter implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    TextDocumentFilter.canParse,
+    TextDocumentFilter.fromJson,
+  );
+
+  TextDocumentFilter({
+    this.language,
+    this.pattern,
+    this.scheme,
+  });
+  static TextDocumentFilter fromJson(Map<String, Object?> json) {
+    final languageJson = json['language'];
+    final language = languageJson as String?;
+    final patternJson = json['pattern'];
+    final pattern = patternJson as String?;
+    final schemeJson = json['scheme'];
+    final scheme = schemeJson as String?;
+    return TextDocumentFilter(
+      language: language,
+      pattern: pattern,
+      scheme: scheme,
+    );
+  }
+
+  /// A language id, like `typescript`.
+  final String? language;
+
+  /// A glob pattern, like `*.{ts,js}`.
+  ///
+  /// Glob patterns can have the following syntax:
+  /// - `*` to match one or more characters in a path segment
+  /// - `?` to match on one character in a path segment
+  /// - `**` to match any number of path segments, including none
+  /// - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
+  ///   matches all TypeScript and JavaScript files)
+  /// - `[]` to declare a range of characters to match in a path segment
+  ///   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
+  /// - `[!...]` to negate a range of characters to match in a path segment
+  ///   (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but
+  ///   not `example.0`)
+  final String? pattern;
+
+  /// A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
+  final String? scheme;
+
+  Map<String, Object?> toJson() {
+    var __result = <String, Object?>{};
+    if (language != null) {
+      __result['language'] = language;
+    }
+    if (pattern != null) {
+      __result['pattern'] = pattern;
+    }
+    if (scheme != null) {
+      __result['scheme'] = scheme;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
+      reporter.push('language');
+      try {
+        final language = obj['language'];
+        if (language != null && !(language is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('pattern');
+      try {
+        final pattern = obj['pattern'];
+        if (pattern != null && !(pattern is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('scheme');
+      try {
+        final scheme = obj['scheme'];
+        if (scheme != null && !(scheme is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      return true;
+    } else {
+      reporter.reportError('must be of type TextDocumentFilter');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is TextDocumentFilter &&
+        other.runtimeType == TextDocumentFilter) {
+      return language == other.language &&
+          pattern == other.pattern &&
+          scheme == other.scheme &&
+          true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => Object.hash(
+        language,
+        pattern,
+        scheme,
       );
 
   @override
@@ -39875,25 +39339,25 @@
   );
 
   TextDocumentItem({
-    required this.uri,
     required this.languageId,
-    required this.version,
     required this.text,
+    required this.uri,
+    required this.version,
   });
   static TextDocumentItem fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final languageIdJson = json['languageId'];
     final languageId = languageIdJson as String;
-    final versionJson = json['version'];
-    final version = versionJson as int;
     final textJson = json['text'];
     final text = textJson as String;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int;
     return TextDocumentItem(
-      uri: uri,
       languageId: languageId,
-      version: version,
       text: text,
+      uri: uri,
+      version: version,
     );
   }
 
@@ -39912,33 +39376,15 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
     __result['languageId'] = languageId;
-    __result['version'] = version;
     __result['text'] = text;
+    __result['uri'] = uri;
+    __result['version'] = version;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final uri = obj['uri'];
-        if (uri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('languageId');
       try {
         if (!obj.containsKey('languageId')) {
@@ -39957,6 +39403,42 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('text');
+      try {
+        if (!obj.containsKey('text')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final text = obj['text'];
+        if (text == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(text is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('version');
       try {
         if (!obj.containsKey('version')) {
@@ -39975,24 +39457,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('text');
-      try {
-        if (!obj.containsKey('text')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final text = obj['text'];
-        if (text == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(text is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type TextDocumentItem');
@@ -40003,10 +39467,10 @@
   @override
   bool operator ==(Object other) {
     if (other is TextDocumentItem && other.runtimeType == TextDocumentItem) {
-      return uri == other.uri &&
-          languageId == other.languageId &&
-          version == other.version &&
+      return languageId == other.languageId &&
           text == other.text &&
+          uri == other.uri &&
+          version == other.version &&
           true;
     }
     return false;
@@ -40014,10 +39478,10 @@
 
   @override
   int get hashCode => Object.hash(
-        uri,
         languageId,
-        version,
         text,
+        uri,
+        version,
       );
 
   @override
@@ -40031,8 +39495,8 @@
   );
 
   TextDocumentPositionParams({
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
   });
   static TextDocumentPositionParams fromJson(Map<String, Object?> json) {
     if (DeclarationParams.canParse(json, nullLspJsonReporter)) {
@@ -40080,14 +39544,14 @@
     if (LinkedEditingRangeParams.canParse(json, nullLspJsonReporter)) {
       return LinkedEditingRangeParams.fromJson(json);
     }
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     return TextDocumentPositionParams(
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
     );
   }
 
@@ -40099,31 +39563,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -40142,6 +39588,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type TextDocumentPositionParams');
@@ -40153,8 +39617,8 @@
   bool operator ==(Object other) {
     if (other is TextDocumentPositionParams &&
         other.runtimeType == TextDocumentPositionParams) {
-      return textDocument == other.textDocument &&
-          position == other.position &&
+      return position == other.position &&
+          textDocument == other.textDocument &&
           true;
     }
     return false;
@@ -40162,8 +39626,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         position,
+        textDocument,
       );
 
   @override
@@ -40280,7 +39744,8 @@
     }
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     return TextDocumentRegistrationOptions(
       documentSelector: documentSelector,
@@ -40289,7 +39754,7 @@
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
@@ -40309,8 +39774,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -40328,7 +39793,7 @@
     if (other is TextDocumentRegistrationOptions &&
         other.runtimeType == TextDocumentRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           true;
     }
     return false;
@@ -40382,51 +39847,42 @@
   );
 
   TextDocumentSaveRegistrationOptions({
-    this.includeText,
     this.documentSelector,
+    this.includeText,
   });
   static TextDocumentSaveRegistrationOptions fromJson(
       Map<String, Object?> json) {
-    final includeTextJson = json['includeText'];
-    final includeText = includeTextJson as bool?;
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
+    final includeTextJson = json['includeText'];
+    final includeText = includeTextJson as bool?;
     return TextDocumentSaveRegistrationOptions(
-      includeText: includeText,
       documentSelector: documentSelector,
+      includeText: includeText,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The client is supposed to include the content on save.
   final bool? includeText;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    __result['documentSelector'] = documentSelector;
     if (includeText != null) {
       __result['includeText'] = includeText;
     }
-    __result['documentSelector'] = documentSelector;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('includeText');
-      try {
-        final includeText = obj['includeText'];
-        if (includeText != null && !(includeText is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('documentSelector');
       try {
         if (!obj.containsKey('documentSelector')) {
@@ -40437,8 +39893,18 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('includeText');
+      try {
+        final includeText = obj['includeText'];
+        if (includeText != null && !(includeText is bool)) {
+          reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
@@ -40456,9 +39922,9 @@
   bool operator ==(Object other) {
     if (other is TextDocumentSaveRegistrationOptions &&
         other.runtimeType == TextDocumentSaveRegistrationOptions) {
-      return includeText == other.includeText &&
-          listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
+      return listEqual(documentSelector, other.documentSelector,
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+          includeText == other.includeText &&
           true;
     }
     return false;
@@ -40466,8 +39932,8 @@
 
   @override
   int get hashCode => Object.hash(
-        includeText,
         lspHashCode(documentSelector),
+        includeText,
       );
 
   @override
@@ -40481,26 +39947,26 @@
   );
 
   TextDocumentSyncClientCapabilities({
+    this.didSave,
     this.dynamicRegistration,
     this.willSave,
     this.willSaveWaitUntil,
-    this.didSave,
   });
   static TextDocumentSyncClientCapabilities fromJson(
       Map<String, Object?> json) {
+    final didSaveJson = json['didSave'];
+    final didSave = didSaveJson as bool?;
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     final willSaveJson = json['willSave'];
     final willSave = willSaveJson as bool?;
     final willSaveWaitUntilJson = json['willSaveWaitUntil'];
     final willSaveWaitUntil = willSaveWaitUntilJson as bool?;
-    final didSaveJson = json['didSave'];
-    final didSave = didSaveJson as bool?;
     return TextDocumentSyncClientCapabilities(
+      didSave: didSave,
       dynamicRegistration: dynamicRegistration,
       willSave: willSave,
       willSaveWaitUntil: willSaveWaitUntil,
-      didSave: didSave,
     );
   }
 
@@ -40520,6 +39986,9 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (didSave != null) {
+      __result['didSave'] = didSave;
+    }
     if (dynamicRegistration != null) {
       __result['dynamicRegistration'] = dynamicRegistration;
     }
@@ -40529,14 +39998,21 @@
     if (willSaveWaitUntil != null) {
       __result['willSaveWaitUntil'] = willSaveWaitUntil;
     }
-    if (didSave != null) {
-      __result['didSave'] = didSave;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('didSave');
+      try {
+        final didSave = obj['didSave'];
+        if (didSave != null && !(didSave is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('dynamicRegistration');
       try {
         final dynamicRegistration = obj['dynamicRegistration'];
@@ -40567,16 +40043,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('didSave');
-      try {
-        final didSave = obj['didSave'];
-        if (didSave != null && !(didSave is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter
@@ -40589,10 +40055,10 @@
   bool operator ==(Object other) {
     if (other is TextDocumentSyncClientCapabilities &&
         other.runtimeType == TextDocumentSyncClientCapabilities) {
-      return dynamicRegistration == other.dynamicRegistration &&
+      return didSave == other.didSave &&
+          dynamicRegistration == other.dynamicRegistration &&
           willSave == other.willSave &&
           willSaveWaitUntil == other.willSaveWaitUntil &&
-          didSave == other.didSave &&
           true;
     }
     return false;
@@ -40600,10 +40066,10 @@
 
   @override
   int get hashCode => Object.hash(
+        didSave,
         dynamicRegistration,
         willSave,
         willSaveWaitUntil,
-        didSave,
       );
 
   @override
@@ -40650,23 +40116,19 @@
   );
 
   TextDocumentSyncOptions({
-    this.openClose,
     this.change,
+    this.openClose,
+    this.save,
     this.willSave,
     this.willSaveWaitUntil,
-    this.save,
   });
   static TextDocumentSyncOptions fromJson(Map<String, Object?> json) {
-    final openCloseJson = json['openClose'];
-    final openClose = openCloseJson as bool?;
     final changeJson = json['change'];
     final change = changeJson != null
         ? TextDocumentSyncKind.fromJson(changeJson as int)
         : null;
-    final willSaveJson = json['willSave'];
-    final willSave = willSaveJson as bool?;
-    final willSaveWaitUntilJson = json['willSaveWaitUntil'];
-    final willSaveWaitUntil = willSaveWaitUntilJson as bool?;
+    final openCloseJson = json['openClose'];
+    final openClose = openCloseJson as bool?;
     final saveJson = json['save'];
     final save = saveJson == null
         ? null
@@ -40676,12 +40138,16 @@
                 ? Either2<bool, SaveOptions>.t2(
                     SaveOptions.fromJson(saveJson as Map<String, Object?>))
                 : (throw '''$saveJson was not one of (bool, SaveOptions)''')));
+    final willSaveJson = json['willSave'];
+    final willSave = willSaveJson as bool?;
+    final willSaveWaitUntilJson = json['willSaveWaitUntil'];
+    final willSaveWaitUntil = willSaveWaitUntilJson as bool?;
     return TextDocumentSyncOptions(
-      openClose: openClose,
       change: change,
+      openClose: openClose,
+      save: save,
       willSave: willSave,
       willSaveWaitUntil: willSaveWaitUntil,
-      save: save,
     );
   }
 
@@ -40709,11 +40175,14 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (change != null) {
+      __result['change'] = change?.toJson();
+    }
     if (openClose != null) {
       __result['openClose'] = openClose;
     }
-    if (change != null) {
-      __result['change'] = change?.toJson();
+    if (save != null) {
+      __result['save'] = save;
     }
     if (willSave != null) {
       __result['willSave'] = willSave;
@@ -40721,14 +40190,22 @@
     if (willSaveWaitUntil != null) {
       __result['willSaveWaitUntil'] = willSaveWaitUntil;
     }
-    if (save != null) {
-      __result['save'] = save;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('change');
+      try {
+        final change = obj['change'];
+        if (change != null &&
+            !(TextDocumentSyncKind.canParse(change, reporter))) {
+          reporter.reportError('must be of type TextDocumentSyncKind');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('openClose');
       try {
         final openClose = obj['openClose'];
@@ -40739,12 +40216,12 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('change');
+      reporter.push('save');
       try {
-        final change = obj['change'];
-        if (change != null &&
-            !(TextDocumentSyncKind.canParse(change, reporter))) {
-          reporter.reportError('must be of type TextDocumentSyncKind');
+        final save = obj['save'];
+        if (save != null &&
+            !((save is bool || SaveOptions.canParse(save, reporter)))) {
+          reporter.reportError('must be of type Either2<bool, SaveOptions>');
           return false;
         }
       } finally {
@@ -40770,17 +40247,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('save');
-      try {
-        final save = obj['save'];
-        if (save != null &&
-            !((save is bool || SaveOptions.canParse(save, reporter)))) {
-          reporter.reportError('must be of type Either2<bool, SaveOptions>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type TextDocumentSyncOptions');
@@ -40792,11 +40258,11 @@
   bool operator ==(Object other) {
     if (other is TextDocumentSyncOptions &&
         other.runtimeType == TextDocumentSyncOptions) {
-      return openClose == other.openClose &&
-          change == other.change &&
+      return change == other.change &&
+          openClose == other.openClose &&
+          save == other.save &&
           willSave == other.willSave &&
           willSaveWaitUntil == other.willSaveWaitUntil &&
-          save == other.save &&
           true;
     }
     return false;
@@ -40804,11 +40270,11 @@
 
   @override
   int get hashCode => Object.hash(
-        openClose,
         change,
+        openClose,
+        save,
         willSave,
         willSaveWaitUntil,
-        save,
       );
 
   @override
@@ -40822,8 +40288,8 @@
   );
 
   TextEdit({
-    required this.range,
     required this.newText,
+    required this.range,
   });
   static TextEdit fromJson(Map<String, Object?> json) {
     if (AnnotatedTextEdit.canParse(json, nullLspJsonReporter)) {
@@ -40832,13 +40298,13 @@
     if (SnippetTextEdit.canParse(json, nullLspJsonReporter)) {
       return SnippetTextEdit.fromJson(json);
     }
-    final rangeJson = json['range'];
-    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final newTextJson = json['newText'];
     final newText = newTextJson as String;
+    final rangeJson = json['range'];
+    final range = Range.fromJson(rangeJson as Map<String, Object?>);
     return TextEdit(
-      range: range,
       newText: newText,
+      range: range,
     );
   }
 
@@ -40851,31 +40317,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['range'] = range.toJson();
     __result['newText'] = newText;
+    __result['range'] = range.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('range');
-      try {
-        if (!obj.containsKey('range')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final range = obj['range'];
-        if (range == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(range, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('newText');
       try {
         if (!obj.containsKey('newText')) {
@@ -40894,6 +40342,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('range');
+      try {
+        if (!obj.containsKey('range')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final range = obj['range'];
+        if (range == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(range, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type TextEdit');
@@ -40904,15 +40370,15 @@
   @override
   bool operator ==(Object other) {
     if (other is TextEdit && other.runtimeType == TextEdit) {
-      return range == other.range && newText == other.newText && true;
+      return newText == other.newText && range == other.range && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        range,
         newText,
+        range,
       );
 
   @override
@@ -41110,25 +40576,12 @@
   );
 
   TypeDefinitionParams({
-    required this.textDocument,
-    required this.position,
-    this.workDoneToken,
     this.partialResultToken,
+    required this.position,
+    required this.textDocument,
+    this.workDoneToken,
   });
   static TypeDefinitionParams fromJson(Map<String, Object?> json) {
-    final textDocumentJson = json['textDocument'];
-    final textDocument = TextDocumentIdentifier.fromJson(
-        textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -41137,11 +40590,24 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
+    final textDocumentJson = json['textDocument'];
+    final textDocument = TextDocumentIdentifier.fromJson(
+        textDocumentJson as Map<String, Object?>);
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return TypeDefinitionParams(
-      textDocument: textDocument,
-      position: position,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      position: position,
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -41160,32 +40626,25 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
-    __result['position'] = position.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
+      reporter.push('partialResultToken');
       try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
@@ -41209,22 +40668,29 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('textDocument');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -41242,10 +40708,10 @@
   bool operator ==(Object other) {
     if (other is TypeDefinitionParams &&
         other.runtimeType == TypeDefinitionParams) {
-      return textDocument == other.textDocument &&
+      return partialResultToken == other.partialResultToken &&
           position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -41253,10 +40719,10 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
-        position,
-        workDoneToken,
         partialResultToken,
+        position,
+        textDocument,
+        workDoneToken,
       );
 
   @override
@@ -41276,28 +40742,29 @@
 
   TypeDefinitionRegistrationOptions({
     this.documentSelector,
-    this.workDoneProgress,
     this.id,
+    this.workDoneProgress,
   });
   static TypeDefinitionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return TypeDefinitionRegistrationOptions(
       documentSelector: documentSelector,
-      workDoneProgress: workDoneProgress,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -41307,12 +40774,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
@@ -41328,18 +40795,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -41355,6 +40812,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type TypeDefinitionRegistrationOptions');
@@ -41367,9 +40834,9 @@
     if (other is TypeDefinitionRegistrationOptions &&
         other.runtimeType == TypeDefinitionRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          workDoneProgress == other.workDoneProgress &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -41378,8 +40845,8 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
-        workDoneProgress,
         id,
+        workDoneProgress,
       );
 
   @override
@@ -41459,44 +40926,44 @@
   );
 
   TypeHierarchyItem({
-    required this.name,
-    required this.kind,
-    this.tags,
+    this.data,
     this.detail,
-    required this.uri,
+    required this.kind,
+    required this.name,
     required this.range,
     required this.selectionRange,
-    this.data,
+    this.tags,
+    required this.uri,
   });
   static TypeHierarchyItem fromJson(Map<String, Object?> json) {
-    final nameJson = json['name'];
-    final name = nameJson as String;
-    final kindJson = json['kind'];
-    final kind = SymbolKind.fromJson(kindJson as int);
-    final tagsJson = json['tags'];
-    final tags = (tagsJson as List<Object?>?)
-        ?.map((item) => SymbolTag.fromJson(item as int))
-        .toList();
+    final dataJson = json['data'];
+    final data = dataJson;
     final detailJson = json['detail'];
     final detail = detailJson as String?;
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
+    final kindJson = json['kind'];
+    final kind = SymbolKind.fromJson(kindJson as int);
+    final nameJson = json['name'];
+    final name = nameJson as String;
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final selectionRangeJson = json['selectionRange'];
     final selectionRange =
         Range.fromJson(selectionRangeJson as Map<String, Object?>);
-    final dataJson = json['data'];
-    final data = dataJson;
+    final tagsJson = json['tags'];
+    final tags = (tagsJson as List<Object?>?)
+        ?.map((item) => SymbolTag.fromJson(item as int))
+        .toList();
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return TypeHierarchyItem(
-      name: name,
-      kind: kind,
-      tags: tags,
+      data: data,
       detail: detail,
-      uri: uri,
+      kind: kind,
+      name: name,
       range: range,
       selectionRange: selectionRange,
-      data: data,
+      tags: tags,
+      uri: uri,
     );
   }
 
@@ -41532,37 +40999,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['name'] = name;
-    __result['kind'] = kind.toJson();
-    if (tags != null) {
-      __result['tags'] = tags?.map((item) => item.toJson()).toList();
+    if (data != null) {
+      __result['data'] = data;
     }
     if (detail != null) {
       __result['detail'] = detail;
     }
-    __result['uri'] = uri;
+    __result['kind'] = kind.toJson();
+    __result['name'] = name;
     __result['range'] = range.toJson();
     __result['selectionRange'] = selectionRange.toJson();
-    if (data != null) {
-      __result['data'] = data;
+    if (tags != null) {
+      __result['tags'] = tags?.map((item) => item.toJson()).toList();
     }
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('name');
+      reporter.push('detail');
       try {
-        if (!obj.containsKey('name')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final name = obj['name'];
-        if (name == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(name is String)) {
+        final detail = obj['detail'];
+        if (detail != null && !(detail is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -41587,40 +41046,18 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tags');
+      reporter.push('name');
       try {
-        final tags = obj['tags'];
-        if (tags != null &&
-            !((tags is List<Object?> &&
-                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<SymbolTag>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('detail');
-      try {
-        final detail = obj['detail'];
-        if (detail != null && !(detail is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
+        if (!obj.containsKey('name')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final uri = obj['uri'];
-        if (uri == null) {
+        final name = obj['name'];
+        if (name == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(uri is String)) {
+        if (!(name is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -41663,6 +41100,36 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('tags');
+      try {
+        final tags = obj['tags'];
+        if (tags != null &&
+            !((tags is List<Object?> &&
+                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<SymbolTag>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type TypeHierarchyItem');
@@ -41673,14 +41140,14 @@
   @override
   bool operator ==(Object other) {
     if (other is TypeHierarchyItem && other.runtimeType == TypeHierarchyItem) {
-      return name == other.name &&
-          kind == other.kind &&
-          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
+      return data == other.data &&
           detail == other.detail &&
-          uri == other.uri &&
+          kind == other.kind &&
+          name == other.name &&
           range == other.range &&
           selectionRange == other.selectionRange &&
-          data == other.data &&
+          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
+          uri == other.uri &&
           true;
     }
     return false;
@@ -41688,14 +41155,14 @@
 
   @override
   int get hashCode => Object.hash(
-        name,
-        kind,
-        lspHashCode(tags),
+        data,
         detail,
-        uri,
+        kind,
+        name,
         range,
         selectionRange,
-        data,
+        lspHashCode(tags),
+        uri,
       );
 
   @override
@@ -41775,16 +41242,16 @@
   );
 
   TypeHierarchyPrepareParams({
-    required this.textDocument,
     required this.position,
+    required this.textDocument,
     this.workDoneToken,
   });
   static TypeHierarchyPrepareParams fromJson(Map<String, Object?> json) {
+    final positionJson = json['position'];
+    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final positionJson = json['position'];
-    final position = Position.fromJson(positionJson as Map<String, Object?>);
     final workDoneTokenJson = json['workDoneToken'];
     final workDoneToken = workDoneTokenJson == null
         ? null
@@ -41794,8 +41261,8 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return TypeHierarchyPrepareParams(
-      textDocument: textDocument,
       position: position,
+      textDocument: textDocument,
       workDoneToken: workDoneToken,
     );
   }
@@ -41811,8 +41278,8 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['position'] = position.toJson();
+    __result['textDocument'] = textDocument.toJson();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
@@ -41821,24 +41288,6 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('position');
       try {
         if (!obj.containsKey('position')) {
@@ -41857,6 +41306,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('workDoneToken');
       try {
         final workDoneToken = obj['workDoneToken'];
@@ -41879,8 +41346,8 @@
   bool operator ==(Object other) {
     if (other is TypeHierarchyPrepareParams &&
         other.runtimeType == TypeHierarchyPrepareParams) {
-      return textDocument == other.textDocument &&
-          position == other.position &&
+      return position == other.position &&
+          textDocument == other.textDocument &&
           workDoneToken == other.workDoneToken &&
           true;
     }
@@ -41889,8 +41356,8 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         position,
+        textDocument,
         workDoneToken,
       );
 
@@ -41911,28 +41378,29 @@
 
   TypeHierarchyRegistrationOptions({
     this.documentSelector,
-    this.workDoneProgress,
     this.id,
+    this.workDoneProgress,
   });
   static TypeHierarchyRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map(
+            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    final workDoneProgressJson = json['workDoneProgress'];
-    final workDoneProgress = workDoneProgressJson as bool?;
     final idJson = json['id'];
     final id = idJson as String?;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
     return TypeHierarchyRegistrationOptions(
       documentSelector: documentSelector,
-      workDoneProgress: workDoneProgress,
       id: id,
+      workDoneProgress: workDoneProgress,
     );
   }
 
   /// A document selector to identify the scope of the registration. If set to
   /// null the document selector provided on the client side will be used.
-  final List<DocumentFilter>? documentSelector;
+  final List<TextDocumentFilter>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -41942,12 +41410,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['documentSelector'] = documentSelector;
-    if (workDoneProgress != null) {
-      __result['workDoneProgress'] = workDoneProgress;
-    }
     if (id != null) {
       __result['id'] = id;
     }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
     return __result;
   }
 
@@ -41963,18 +41431,8 @@
         if (documentSelector != null &&
             !((documentSelector is List<Object?> &&
                 (documentSelector.every(
-                    (item) => DocumentFilter.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<DocumentFilter>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('workDoneProgress');
-      try {
-        final workDoneProgress = obj['workDoneProgress'];
-        if (workDoneProgress != null && !(workDoneProgress is bool)) {
-          reporter.reportError('must be of type bool');
+                    (item) => TextDocumentFilter.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<TextDocumentFilter>');
           return false;
         }
       } finally {
@@ -41990,6 +41448,16 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type TypeHierarchyRegistrationOptions');
@@ -42002,9 +41470,9 @@
     if (other is TypeHierarchyRegistrationOptions &&
         other.runtimeType == TypeHierarchyRegistrationOptions) {
       return listEqual(documentSelector, other.documentSelector,
-              (DocumentFilter a, DocumentFilter b) => a == b) &&
-          workDoneProgress == other.workDoneProgress &&
+              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
           id == other.id &&
+          workDoneProgress == other.workDoneProgress &&
           true;
     }
     return false;
@@ -42013,8 +41481,8 @@
   @override
   int get hashCode => Object.hash(
         lspHashCode(documentSelector),
-        workDoneProgress,
         id,
+        workDoneProgress,
       );
 
   @override
@@ -42030,20 +41498,12 @@
 
   TypeHierarchySubtypesParams({
     required this.item,
-    this.workDoneToken,
     this.partialResultToken,
+    this.workDoneToken,
   });
   static TypeHierarchySubtypesParams fromJson(Map<String, Object?> json) {
     final itemJson = json['item'];
     final item = TypeHierarchyItem.fromJson(itemJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -42052,10 +41512,18 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return TypeHierarchySubtypesParams(
       item: item,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -42071,12 +41539,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['item'] = item.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
@@ -42100,22 +41568,22 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('partialResultToken');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -42134,8 +41602,8 @@
     if (other is TypeHierarchySubtypesParams &&
         other.runtimeType == TypeHierarchySubtypesParams) {
       return item == other.item &&
-          workDoneToken == other.workDoneToken &&
           partialResultToken == other.partialResultToken &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -42144,8 +41612,8 @@
   @override
   int get hashCode => Object.hash(
         item,
-        workDoneToken,
         partialResultToken,
+        workDoneToken,
       );
 
   @override
@@ -42161,20 +41629,12 @@
 
   TypeHierarchySupertypesParams({
     required this.item,
-    this.workDoneToken,
     this.partialResultToken,
+    this.workDoneToken,
   });
   static TypeHierarchySupertypesParams fromJson(Map<String, Object?> json) {
     final itemJson = json['item'];
     final item = TypeHierarchyItem.fromJson(itemJson as Map<String, Object?>);
-    final workDoneTokenJson = json['workDoneToken'];
-    final workDoneToken = workDoneTokenJson == null
-        ? null
-        : (workDoneTokenJson is int
-            ? Either2<int, String>.t1(workDoneTokenJson)
-            : (workDoneTokenJson is String
-                ? Either2<int, String>.t2(workDoneTokenJson)
-                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     final partialResultTokenJson = json['partialResultToken'];
     final partialResultToken = partialResultTokenJson == null
         ? null
@@ -42183,10 +41643,18 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
+    final workDoneTokenJson = json['workDoneToken'];
+    final workDoneToken = workDoneTokenJson == null
+        ? null
+        : (workDoneTokenJson is int
+            ? Either2<int, String>.t1(workDoneTokenJson)
+            : (workDoneTokenJson is String
+                ? Either2<int, String>.t2(workDoneTokenJson)
+                : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return TypeHierarchySupertypesParams(
       item: item,
-      workDoneToken: workDoneToken,
       partialResultToken: partialResultToken,
+      workDoneToken: workDoneToken,
     );
   }
 
@@ -42202,12 +41670,12 @@
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
     __result['item'] = item.toJson();
-    if (workDoneToken != null) {
-      __result['workDoneToken'] = workDoneToken;
-    }
     if (partialResultToken != null) {
       __result['partialResultToken'] = partialResultToken;
     }
+    if (workDoneToken != null) {
+      __result['workDoneToken'] = workDoneToken;
+    }
     return __result;
   }
 
@@ -42231,22 +41699,22 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('workDoneToken');
+      reporter.push('partialResultToken');
       try {
-        final workDoneToken = obj['workDoneToken'];
-        if (workDoneToken != null &&
-            !((workDoneToken is int || workDoneToken is String))) {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
+      reporter.push('workDoneToken');
       try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
+        final workDoneToken = obj['workDoneToken'];
+        if (workDoneToken != null &&
+            !((workDoneToken is int || workDoneToken is String))) {
           reporter.reportError('must be of type Either2<int, String>');
           return false;
         }
@@ -42265,8 +41733,8 @@
     if (other is TypeHierarchySupertypesParams &&
         other.runtimeType == TypeHierarchySupertypesParams) {
       return item == other.item &&
-          workDoneToken == other.workDoneToken &&
           partialResultToken == other.partialResultToken &&
+          workDoneToken == other.workDoneToken &&
           true;
     }
     return false;
@@ -42275,8 +41743,8 @@
   @override
   int get hashCode => Object.hash(
         item,
-        workDoneToken,
         partialResultToken,
+        workDoneToken,
       );
 
   @override
@@ -42621,18 +42089,18 @@
   );
 
   VersionedNotebookDocumentIdentifier({
-    required this.version,
     required this.uri,
+    required this.version,
   });
   static VersionedNotebookDocumentIdentifier fromJson(
       Map<String, Object?> json) {
-    final versionJson = json['version'];
-    final version = versionJson as int;
     final uriJson = json['uri'];
     final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int;
     return VersionedNotebookDocumentIdentifier(
-      version: version,
       uri: uri,
+      version: version,
     );
   }
 
@@ -42644,31 +42112,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['version'] = version;
     __result['uri'] = uri;
+    __result['version'] = version;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('version');
-      try {
-        if (!obj.containsKey('version')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final version = obj['version'];
-        if (version == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(version is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -42687,6 +42137,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('version');
+      try {
+        if (!obj.containsKey('version')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final version = obj['version'];
+        if (version == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(version is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter
@@ -42699,15 +42167,15 @@
   bool operator ==(Object other) {
     if (other is VersionedNotebookDocumentIdentifier &&
         other.runtimeType == VersionedNotebookDocumentIdentifier) {
-      return version == other.version && uri == other.uri && true;
+      return uri == other.uri && version == other.version && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        version,
         uri,
+        version,
       );
 
   @override
@@ -42722,17 +42190,17 @@
   );
 
   VersionedTextDocumentIdentifier({
-    required this.version,
     required this.uri,
+    required this.version,
   });
   static VersionedTextDocumentIdentifier fromJson(Map<String, Object?> json) {
-    final versionJson = json['version'];
-    final version = versionJson as int;
     final uriJson = json['uri'];
     final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int;
     return VersionedTextDocumentIdentifier(
-      version: version,
       uri: uri,
+      version: version,
     );
   }
 
@@ -42747,31 +42215,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['version'] = version;
     __result['uri'] = uri;
+    __result['version'] = version;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('version');
-      try {
-        if (!obj.containsKey('version')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final version = obj['version'];
-        if (version == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(version is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('uri');
       try {
         if (!obj.containsKey('uri')) {
@@ -42790,6 +42240,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('version');
+      try {
+        if (!obj.containsKey('version')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final version = obj['version'];
+        if (version == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(version is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type VersionedTextDocumentIdentifier');
@@ -42801,15 +42269,15 @@
   bool operator ==(Object other) {
     if (other is VersionedTextDocumentIdentifier &&
         other.runtimeType == VersionedTextDocumentIdentifier) {
-      return version == other.version && uri == other.uri && true;
+      return uri == other.uri && version == other.version && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        version,
         uri,
+        version,
       );
 
   @override
@@ -42854,18 +42322,18 @@
   );
 
   WillSaveTextDocumentParams({
-    required this.textDocument,
     required this.reason,
+    required this.textDocument,
   });
   static WillSaveTextDocumentParams fromJson(Map<String, Object?> json) {
+    final reasonJson = json['reason'];
+    final reason = TextDocumentSaveReason.fromJson(reasonJson as int);
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    final reasonJson = json['reason'];
-    final reason = TextDocumentSaveReason.fromJson(reasonJson as int);
     return WillSaveTextDocumentParams(
-      textDocument: textDocument,
       reason: reason,
+      textDocument: textDocument,
     );
   }
 
@@ -42877,31 +42345,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['textDocument'] = textDocument.toJson();
     __result['reason'] = reason.toJson();
+    __result['textDocument'] = textDocument.toJson();
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('textDocument');
-      try {
-        if (!obj.containsKey('textDocument')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final textDocument = obj['textDocument'];
-        if (textDocument == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
-          reporter.reportError('must be of type TextDocumentIdentifier');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('reason');
       try {
         if (!obj.containsKey('reason')) {
@@ -42920,6 +42370,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('textDocument');
+      try {
+        if (!obj.containsKey('textDocument')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final textDocument = obj['textDocument'];
+        if (textDocument == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(TextDocumentIdentifier.canParse(textDocument, reporter))) {
+          reporter.reportError('must be of type TextDocumentIdentifier');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type WillSaveTextDocumentParams');
@@ -42931,8 +42399,8 @@
   bool operator ==(Object other) {
     if (other is WillSaveTextDocumentParams &&
         other.runtimeType == WillSaveTextDocumentParams) {
-      return textDocument == other.textDocument &&
-          reason == other.reason &&
+      return reason == other.reason &&
+          textDocument == other.textDocument &&
           true;
     }
     return false;
@@ -42940,8 +42408,138 @@
 
   @override
   int get hashCode => Object.hash(
-        textDocument,
         reason,
+        textDocument,
+      );
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
+class WindowClientCapabilities implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    WindowClientCapabilities.canParse,
+    WindowClientCapabilities.fromJson,
+  );
+
+  WindowClientCapabilities({
+    this.showDocument,
+    this.showMessage,
+    this.workDoneProgress,
+  });
+  static WindowClientCapabilities fromJson(Map<String, Object?> json) {
+    final showDocumentJson = json['showDocument'];
+    final showDocument = showDocumentJson != null
+        ? ShowDocumentClientCapabilities.fromJson(
+            showDocumentJson as Map<String, Object?>)
+        : null;
+    final showMessageJson = json['showMessage'];
+    final showMessage = showMessageJson != null
+        ? ShowMessageRequestClientCapabilities.fromJson(
+            showMessageJson as Map<String, Object?>)
+        : null;
+    final workDoneProgressJson = json['workDoneProgress'];
+    final workDoneProgress = workDoneProgressJson as bool?;
+    return WindowClientCapabilities(
+      showDocument: showDocument,
+      showMessage: showMessage,
+      workDoneProgress: workDoneProgress,
+    );
+  }
+
+  /// Client capabilities for the show document request.
+  ///  @since 3.16.0
+  final ShowDocumentClientCapabilities? showDocument;
+
+  /// Capabilities specific to the showMessage request
+  ///  @since 3.16.0
+  final ShowMessageRequestClientCapabilities? showMessage;
+
+  /// It indicates whether the client supports server initiated progress using
+  /// the `window/workDoneProgress/create` request.
+  ///
+  /// The capability also controls Whether client supports handling of progress
+  /// notifications. If set servers are allowed to report a `workDoneProgress`
+  /// property in the request specific server capabilities.
+  ///  @since 3.15.0
+  final bool? workDoneProgress;
+
+  Map<String, Object?> toJson() {
+    var __result = <String, Object?>{};
+    if (showDocument != null) {
+      __result['showDocument'] = showDocument?.toJson();
+    }
+    if (showMessage != null) {
+      __result['showMessage'] = showMessage?.toJson();
+    }
+    if (workDoneProgress != null) {
+      __result['workDoneProgress'] = workDoneProgress;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
+      reporter.push('showDocument');
+      try {
+        final showDocument = obj['showDocument'];
+        if (showDocument != null &&
+            !(ShowDocumentClientCapabilities.canParse(
+                showDocument, reporter))) {
+          reporter
+              .reportError('must be of type ShowDocumentClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('showMessage');
+      try {
+        final showMessage = obj['showMessage'];
+        if (showMessage != null &&
+            !(ShowMessageRequestClientCapabilities.canParse(
+                showMessage, reporter))) {
+          reporter.reportError(
+              'must be of type ShowMessageRequestClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('workDoneProgress');
+      try {
+        final workDoneProgress = obj['workDoneProgress'];
+        if (workDoneProgress != null && !(workDoneProgress is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      return true;
+    } else {
+      reporter.reportError('must be of type WindowClientCapabilities');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is WindowClientCapabilities &&
+        other.runtimeType == WindowClientCapabilities) {
+      return showDocument == other.showDocument &&
+          showMessage == other.showMessage &&
+          workDoneProgress == other.workDoneProgress &&
+          true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => Object.hash(
+        showDocument,
+        showMessage,
+        workDoneProgress,
       );
 
   @override
@@ -42955,33 +42553,33 @@
   );
 
   WorkDoneProgressBegin({
-    this.kind = 'begin',
-    required this.title,
     this.cancellable,
+    this.kind = 'begin',
     this.message,
     this.percentage,
+    required this.title,
   }) {
     if (kind != 'begin') {
       throw 'kind may only be the literal \'begin\'';
     }
   }
   static WorkDoneProgressBegin fromJson(Map<String, Object?> json) {
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
-    final titleJson = json['title'];
-    final title = titleJson as String;
     final cancellableJson = json['cancellable'];
     final cancellable = cancellableJson as bool?;
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
     final messageJson = json['message'];
     final message = messageJson as String?;
     final percentageJson = json['percentage'];
     final percentage = percentageJson as int?;
+    final titleJson = json['title'];
+    final title = titleJson as String;
     return WorkDoneProgressBegin(
-      kind: kind,
-      title: title,
       cancellable: cancellable,
+      kind: kind,
       message: message,
       percentage: percentage,
+      title: title,
     );
   }
 
@@ -43014,22 +42612,32 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['kind'] = kind;
-    __result['title'] = title;
     if (cancellable != null) {
       __result['cancellable'] = cancellable;
     }
+    __result['kind'] = kind;
     if (message != null) {
       __result['message'] = message;
     }
     if (percentage != null) {
       __result['percentage'] = percentage;
     }
+    __result['title'] = title;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('cancellable');
+      try {
+        final cancellable = obj['cancellable'];
+        if (cancellable != null && !(cancellable is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -43048,34 +42656,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('title');
-      try {
-        if (!obj.containsKey('title')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final title = obj['title'];
-        if (title == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(title is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('cancellable');
-      try {
-        final cancellable = obj['cancellable'];
-        if (cancellable != null && !(cancellable is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('message');
       try {
         final message = obj['message'];
@@ -43096,6 +42676,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('title');
+      try {
+        if (!obj.containsKey('title')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final title = obj['title'];
+        if (title == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(title is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type WorkDoneProgressBegin');
@@ -43107,11 +42705,11 @@
   bool operator ==(Object other) {
     if (other is WorkDoneProgressBegin &&
         other.runtimeType == WorkDoneProgressBegin) {
-      return kind == other.kind &&
-          title == other.title &&
-          cancellable == other.cancellable &&
+      return cancellable == other.cancellable &&
+          kind == other.kind &&
           message == other.message &&
           percentage == other.percentage &&
+          title == other.title &&
           true;
     }
     return false;
@@ -43119,11 +42717,11 @@
 
   @override
   int get hashCode => Object.hash(
-        kind,
-        title,
         cancellable,
+        kind,
         message,
         percentage,
+        title,
       );
 
   @override
@@ -43712,8 +43310,8 @@
   );
 
   WorkDoneProgressReport({
-    this.kind = 'report',
     this.cancellable,
+    this.kind = 'report',
     this.message,
     this.percentage,
   }) {
@@ -43722,17 +43320,17 @@
     }
   }
   static WorkDoneProgressReport fromJson(Map<String, Object?> json) {
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
     final cancellableJson = json['cancellable'];
     final cancellable = cancellableJson as bool?;
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
     final messageJson = json['message'];
     final message = messageJson as String?;
     final percentageJson = json['percentage'];
     final percentage = percentageJson as int?;
     return WorkDoneProgressReport(
-      kind: kind,
       cancellable: cancellable,
+      kind: kind,
       message: message,
       percentage: percentage,
     );
@@ -43763,10 +43361,10 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['kind'] = kind;
     if (cancellable != null) {
       __result['cancellable'] = cancellable;
     }
+    __result['kind'] = kind;
     if (message != null) {
       __result['message'] = message;
     }
@@ -43778,6 +43376,16 @@
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('cancellable');
+      try {
+        final cancellable = obj['cancellable'];
+        if (cancellable != null && !(cancellable is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -43796,16 +43404,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('cancellable');
-      try {
-        final cancellable = obj['cancellable'];
-        if (cancellable != null && !(cancellable is bool)) {
-          reporter.reportError('must be of type bool');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('message');
       try {
         final message = obj['message'];
@@ -43837,8 +43435,8 @@
   bool operator ==(Object other) {
     if (other is WorkDoneProgressReport &&
         other.runtimeType == WorkDoneProgressReport) {
-      return kind == other.kind &&
-          cancellable == other.cancellable &&
+      return cancellable == other.cancellable &&
+          kind == other.kind &&
           message == other.message &&
           percentage == other.percentage &&
           true;
@@ -43848,8 +43446,8 @@
 
   @override
   int get hashCode => Object.hash(
-        kind,
         cancellable,
+        kind,
         message,
         percentage,
       );
@@ -43858,6 +43456,435 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
+class WorkspaceClientCapabilities implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    WorkspaceClientCapabilities.canParse,
+    WorkspaceClientCapabilities.fromJson,
+  );
+
+  WorkspaceClientCapabilities({
+    this.applyEdit,
+    this.codeLens,
+    this.configuration,
+    this.diagnostics,
+    this.didChangeConfiguration,
+    this.didChangeWatchedFiles,
+    this.executeCommand,
+    this.fileOperations,
+    this.inlayHint,
+    this.inlineValue,
+    this.semanticTokens,
+    this.symbol,
+    this.workspaceEdit,
+    this.workspaceFolders,
+  });
+  static WorkspaceClientCapabilities fromJson(Map<String, Object?> json) {
+    final applyEditJson = json['applyEdit'];
+    final applyEdit = applyEditJson as bool?;
+    final codeLensJson = json['codeLens'];
+    final codeLens = codeLensJson != null
+        ? CodeLensWorkspaceClientCapabilities.fromJson(
+            codeLensJson as Map<String, Object?>)
+        : null;
+    final configurationJson = json['configuration'];
+    final configuration = configurationJson as bool?;
+    final diagnosticsJson = json['diagnostics'];
+    final diagnostics = diagnosticsJson != null
+        ? DiagnosticWorkspaceClientCapabilities.fromJson(
+            diagnosticsJson as Map<String, Object?>)
+        : null;
+    final didChangeConfigurationJson = json['didChangeConfiguration'];
+    final didChangeConfiguration = didChangeConfigurationJson != null
+        ? DidChangeConfigurationClientCapabilities.fromJson(
+            didChangeConfigurationJson as Map<String, Object?>)
+        : null;
+    final didChangeWatchedFilesJson = json['didChangeWatchedFiles'];
+    final didChangeWatchedFiles = didChangeWatchedFilesJson != null
+        ? DidChangeWatchedFilesClientCapabilities.fromJson(
+            didChangeWatchedFilesJson as Map<String, Object?>)
+        : null;
+    final executeCommandJson = json['executeCommand'];
+    final executeCommand = executeCommandJson != null
+        ? ExecuteCommandClientCapabilities.fromJson(
+            executeCommandJson as Map<String, Object?>)
+        : null;
+    final fileOperationsJson = json['fileOperations'];
+    final fileOperations = fileOperationsJson != null
+        ? ClientCapabilitiesFileOperations.fromJson(
+            fileOperationsJson as Map<String, Object?>)
+        : null;
+    final inlayHintJson = json['inlayHint'];
+    final inlayHint = inlayHintJson != null
+        ? InlayHintWorkspaceClientCapabilities.fromJson(
+            inlayHintJson as Map<String, Object?>)
+        : null;
+    final inlineValueJson = json['inlineValue'];
+    final inlineValue = inlineValueJson != null
+        ? InlineValueWorkspaceClientCapabilities.fromJson(
+            inlineValueJson as Map<String, Object?>)
+        : null;
+    final semanticTokensJson = json['semanticTokens'];
+    final semanticTokens = semanticTokensJson != null
+        ? SemanticTokensWorkspaceClientCapabilities.fromJson(
+            semanticTokensJson as Map<String, Object?>)
+        : null;
+    final symbolJson = json['symbol'];
+    final symbol = symbolJson != null
+        ? WorkspaceSymbolClientCapabilities.fromJson(
+            symbolJson as Map<String, Object?>)
+        : null;
+    final workspaceEditJson = json['workspaceEdit'];
+    final workspaceEdit = workspaceEditJson != null
+        ? WorkspaceEditClientCapabilities.fromJson(
+            workspaceEditJson as Map<String, Object?>)
+        : null;
+    final workspaceFoldersJson = json['workspaceFolders'];
+    final workspaceFolders = workspaceFoldersJson as bool?;
+    return WorkspaceClientCapabilities(
+      applyEdit: applyEdit,
+      codeLens: codeLens,
+      configuration: configuration,
+      diagnostics: diagnostics,
+      didChangeConfiguration: didChangeConfiguration,
+      didChangeWatchedFiles: didChangeWatchedFiles,
+      executeCommand: executeCommand,
+      fileOperations: fileOperations,
+      inlayHint: inlayHint,
+      inlineValue: inlineValue,
+      semanticTokens: semanticTokens,
+      symbol: symbol,
+      workspaceEdit: workspaceEdit,
+      workspaceFolders: workspaceFolders,
+    );
+  }
+
+  /// The client supports applying batch edits to the workspace by supporting
+  /// the request 'workspace/applyEdit'
+  final bool? applyEdit;
+
+  /// Capabilities specific to the code lens requests scoped to the workspace.
+  ///  @since 3.16.0
+  final CodeLensWorkspaceClientCapabilities? codeLens;
+
+  /// The client supports `workspace/configuration` requests.
+  ///  @since 3.6.0
+  final bool? configuration;
+
+  /// Client workspace capabilities specific to diagnostics.
+  ///  @since 3.17.0.
+  final DiagnosticWorkspaceClientCapabilities? diagnostics;
+
+  /// Capabilities specific to the `workspace/didChangeConfiguration`
+  /// notification.
+  final DidChangeConfigurationClientCapabilities? didChangeConfiguration;
+
+  /// Capabilities specific to the `workspace/didChangeWatchedFiles`
+  /// notification.
+  final DidChangeWatchedFilesClientCapabilities? didChangeWatchedFiles;
+
+  /// Capabilities specific to the `workspace/executeCommand` request.
+  final ExecuteCommandClientCapabilities? executeCommand;
+
+  /// The client has support for file requests/notifications.
+  ///  @since 3.16.0
+  final ClientCapabilitiesFileOperations? fileOperations;
+
+  /// Client workspace capabilities specific to inlay hints.
+  ///  @since 3.17.0
+  final InlayHintWorkspaceClientCapabilities? inlayHint;
+
+  /// Client workspace capabilities specific to inline values.
+  ///  @since 3.17.0
+  final InlineValueWorkspaceClientCapabilities? inlineValue;
+
+  /// Capabilities specific to the semantic token requests scoped to the
+  /// workspace.
+  ///  @since 3.16.0
+  final SemanticTokensWorkspaceClientCapabilities? semanticTokens;
+
+  /// Capabilities specific to the `workspace/symbol` request.
+  final WorkspaceSymbolClientCapabilities? symbol;
+
+  /// Capabilities specific to `WorkspaceEdit`s
+  final WorkspaceEditClientCapabilities? workspaceEdit;
+
+  /// The client has support for workspace folders.
+  ///  @since 3.6.0
+  final bool? workspaceFolders;
+
+  Map<String, Object?> toJson() {
+    var __result = <String, Object?>{};
+    if (applyEdit != null) {
+      __result['applyEdit'] = applyEdit;
+    }
+    if (codeLens != null) {
+      __result['codeLens'] = codeLens?.toJson();
+    }
+    if (configuration != null) {
+      __result['configuration'] = configuration;
+    }
+    if (diagnostics != null) {
+      __result['diagnostics'] = diagnostics?.toJson();
+    }
+    if (didChangeConfiguration != null) {
+      __result['didChangeConfiguration'] = didChangeConfiguration?.toJson();
+    }
+    if (didChangeWatchedFiles != null) {
+      __result['didChangeWatchedFiles'] = didChangeWatchedFiles?.toJson();
+    }
+    if (executeCommand != null) {
+      __result['executeCommand'] = executeCommand?.toJson();
+    }
+    if (fileOperations != null) {
+      __result['fileOperations'] = fileOperations?.toJson();
+    }
+    if (inlayHint != null) {
+      __result['inlayHint'] = inlayHint?.toJson();
+    }
+    if (inlineValue != null) {
+      __result['inlineValue'] = inlineValue?.toJson();
+    }
+    if (semanticTokens != null) {
+      __result['semanticTokens'] = semanticTokens?.toJson();
+    }
+    if (symbol != null) {
+      __result['symbol'] = symbol?.toJson();
+    }
+    if (workspaceEdit != null) {
+      __result['workspaceEdit'] = workspaceEdit?.toJson();
+    }
+    if (workspaceFolders != null) {
+      __result['workspaceFolders'] = workspaceFolders;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
+      reporter.push('applyEdit');
+      try {
+        final applyEdit = obj['applyEdit'];
+        if (applyEdit != null && !(applyEdit is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('codeLens');
+      try {
+        final codeLens = obj['codeLens'];
+        if (codeLens != null &&
+            !(CodeLensWorkspaceClientCapabilities.canParse(
+                codeLens, reporter))) {
+          reporter.reportError(
+              'must be of type CodeLensWorkspaceClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('configuration');
+      try {
+        final configuration = obj['configuration'];
+        if (configuration != null && !(configuration is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('diagnostics');
+      try {
+        final diagnostics = obj['diagnostics'];
+        if (diagnostics != null &&
+            !(DiagnosticWorkspaceClientCapabilities.canParse(
+                diagnostics, reporter))) {
+          reporter.reportError(
+              'must be of type DiagnosticWorkspaceClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('didChangeConfiguration');
+      try {
+        final didChangeConfiguration = obj['didChangeConfiguration'];
+        if (didChangeConfiguration != null &&
+            !(DidChangeConfigurationClientCapabilities.canParse(
+                didChangeConfiguration, reporter))) {
+          reporter.reportError(
+              'must be of type DidChangeConfigurationClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('didChangeWatchedFiles');
+      try {
+        final didChangeWatchedFiles = obj['didChangeWatchedFiles'];
+        if (didChangeWatchedFiles != null &&
+            !(DidChangeWatchedFilesClientCapabilities.canParse(
+                didChangeWatchedFiles, reporter))) {
+          reporter.reportError(
+              'must be of type DidChangeWatchedFilesClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('executeCommand');
+      try {
+        final executeCommand = obj['executeCommand'];
+        if (executeCommand != null &&
+            !(ExecuteCommandClientCapabilities.canParse(
+                executeCommand, reporter))) {
+          reporter
+              .reportError('must be of type ExecuteCommandClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('fileOperations');
+      try {
+        final fileOperations = obj['fileOperations'];
+        if (fileOperations != null &&
+            !(ClientCapabilitiesFileOperations.canParse(
+                fileOperations, reporter))) {
+          reporter
+              .reportError('must be of type ClientCapabilitiesFileOperations');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('inlayHint');
+      try {
+        final inlayHint = obj['inlayHint'];
+        if (inlayHint != null &&
+            !(InlayHintWorkspaceClientCapabilities.canParse(
+                inlayHint, reporter))) {
+          reporter.reportError(
+              'must be of type InlayHintWorkspaceClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('inlineValue');
+      try {
+        final inlineValue = obj['inlineValue'];
+        if (inlineValue != null &&
+            !(InlineValueWorkspaceClientCapabilities.canParse(
+                inlineValue, reporter))) {
+          reporter.reportError(
+              'must be of type InlineValueWorkspaceClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('semanticTokens');
+      try {
+        final semanticTokens = obj['semanticTokens'];
+        if (semanticTokens != null &&
+            !(SemanticTokensWorkspaceClientCapabilities.canParse(
+                semanticTokens, reporter))) {
+          reporter.reportError(
+              'must be of type SemanticTokensWorkspaceClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('symbol');
+      try {
+        final symbol = obj['symbol'];
+        if (symbol != null &&
+            !(WorkspaceSymbolClientCapabilities.canParse(symbol, reporter))) {
+          reporter
+              .reportError('must be of type WorkspaceSymbolClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('workspaceEdit');
+      try {
+        final workspaceEdit = obj['workspaceEdit'];
+        if (workspaceEdit != null &&
+            !(WorkspaceEditClientCapabilities.canParse(
+                workspaceEdit, reporter))) {
+          reporter
+              .reportError('must be of type WorkspaceEditClientCapabilities');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('workspaceFolders');
+      try {
+        final workspaceFolders = obj['workspaceFolders'];
+        if (workspaceFolders != null && !(workspaceFolders is bool)) {
+          reporter.reportError('must be of type bool');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      return true;
+    } else {
+      reporter.reportError('must be of type WorkspaceClientCapabilities');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is WorkspaceClientCapabilities &&
+        other.runtimeType == WorkspaceClientCapabilities) {
+      return applyEdit == other.applyEdit &&
+          codeLens == other.codeLens &&
+          configuration == other.configuration &&
+          diagnostics == other.diagnostics &&
+          didChangeConfiguration == other.didChangeConfiguration &&
+          didChangeWatchedFiles == other.didChangeWatchedFiles &&
+          executeCommand == other.executeCommand &&
+          fileOperations == other.fileOperations &&
+          inlayHint == other.inlayHint &&
+          inlineValue == other.inlineValue &&
+          semanticTokens == other.semanticTokens &&
+          symbol == other.symbol &&
+          workspaceEdit == other.workspaceEdit &&
+          workspaceFolders == other.workspaceFolders &&
+          true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => Object.hash(
+        applyEdit,
+        codeLens,
+        configuration,
+        diagnostics,
+        didChangeConfiguration,
+        didChangeWatchedFiles,
+        executeCommand,
+        fileOperations,
+        inlayHint,
+        inlineValue,
+        semanticTokens,
+        symbol,
+        workspaceEdit,
+        workspaceFolders,
+      );
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
 /// Parameters of the workspace diagnostic request.
 ///  @since 3.17.0
 class WorkspaceDiagnosticParams
@@ -43869,13 +43896,21 @@
 
   WorkspaceDiagnosticParams({
     this.identifier,
+    this.partialResultToken,
     required this.previousResultIds,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static WorkspaceDiagnosticParams fromJson(Map<String, Object?> json) {
     final identifierJson = json['identifier'];
     final identifier = identifierJson as String?;
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final previousResultIdsJson = json['previousResultIds'];
     final previousResultIds = (previousResultIdsJson as List<Object?>)
         .map((item) => PreviousResultId.fromJson(item as Map<String, Object?>))
@@ -43888,19 +43923,11 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return WorkspaceDiagnosticParams(
       identifier: identifier,
+      partialResultToken: partialResultToken,
       previousResultIds: previousResultIds,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -43922,14 +43949,14 @@
     if (identifier != null) {
       __result['identifier'] = identifier;
     }
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['previousResultIds'] =
         previousResultIds.map((item) => item.toJson()).toList();
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
@@ -43945,6 +43972,17 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('previousResultIds');
       try {
         if (!obj.containsKey('previousResultIds')) {
@@ -43976,17 +44014,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type WorkspaceDiagnosticParams');
@@ -43999,10 +44026,10 @@
     if (other is WorkspaceDiagnosticParams &&
         other.runtimeType == WorkspaceDiagnosticParams) {
       return identifier == other.identifier &&
+          partialResultToken == other.partialResultToken &&
           listEqual(previousResultIds, other.previousResultIds,
               (PreviousResultId a, PreviousResultId b) => a == b) &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -44011,9 +44038,9 @@
   @override
   int get hashCode => Object.hash(
         identifier,
+        partialResultToken,
         lspHashCode(previousResultIds),
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -44229,11 +44256,15 @@
   );
 
   WorkspaceEdit({
+    this.changeAnnotations,
     this.changes,
     this.documentChanges,
-    this.changeAnnotations,
   });
   static WorkspaceEdit fromJson(Map<String, Object?> json) {
+    final changeAnnotationsJson = json['changeAnnotations'];
+    final changeAnnotations = (changeAnnotationsJson as Map<Object, Object?>?)
+        ?.map((key, value) => MapEntry(key as String,
+            ChangeAnnotation.fromJson(value as Map<String, Object?>)));
     final changesJson = json['changes'];
     final changes = (changesJson as Map<Object, Object?>?)?.map((key, value) =>
         MapEntry(
@@ -44246,28 +44277,26 @@
         ? null
         : ((documentChangesJson is List<Object?> &&
                 (documentChangesJson.every((item) =>
-                    TextDocumentEdit.canParse(item, nullLspJsonReporter))))
-            ? Either2<List<TextDocumentEdit>, List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>.t1((documentChangesJson)
-                .map((item) =>
-                    TextDocumentEdit.fromJson(item as Map<String, Object?>))
+                    (CreateFile.canParse(item, nullLspJsonReporter) ||
+                        DeleteFile.canParse(item, nullLspJsonReporter) ||
+                        RenameFile.canParse(item, nullLspJsonReporter) ||
+                        TextDocumentEdit.canParse(item, nullLspJsonReporter)))))
+            ? Either2<List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>, List<TextDocumentEdit>>.t1((documentChangesJson)
+                .map((item) => CreateFile.canParse(item, nullLspJsonReporter)
+                    ? Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>.t1(
+                        CreateFile.fromJson(item as Map<String, Object?>))
+                    : (DeleteFile.canParse(item, nullLspJsonReporter)
+                        ? Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>.t2(
+                            DeleteFile.fromJson(item as Map<String, Object?>))
+                        : (RenameFile.canParse(item, nullLspJsonReporter)
+                            ? Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>.t3(RenameFile.fromJson(item as Map<String, Object?>))
+                            : (TextDocumentEdit.canParse(item, nullLspJsonReporter) ? Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>.t4(TextDocumentEdit.fromJson(item as Map<String, Object?>)) : (throw '''$item was not one of (CreateFile, DeleteFile, RenameFile, TextDocumentEdit)''')))))
                 .toList())
-            : ((documentChangesJson is List<Object?> &&
-                    (documentChangesJson.every((item) =>
-                        (TextDocumentEdit.canParse(item, nullLspJsonReporter) ||
-                            CreateFile.canParse(item, nullLspJsonReporter) ||
-                            RenameFile.canParse(item, nullLspJsonReporter) ||
-                            DeleteFile.canParse(item, nullLspJsonReporter)))))
-                ? Either2<List<TextDocumentEdit>, List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>.t2(
-                    (documentChangesJson).map((item) => TextDocumentEdit.canParse(item, nullLspJsonReporter) ? Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>.t1(TextDocumentEdit.fromJson(item as Map<String, Object?>)) : (CreateFile.canParse(item, nullLspJsonReporter) ? Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>.t2(CreateFile.fromJson(item as Map<String, Object?>)) : (RenameFile.canParse(item, nullLspJsonReporter) ? Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>.t3(RenameFile.fromJson(item as Map<String, Object?>)) : (DeleteFile.canParse(item, nullLspJsonReporter) ? Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>.t4(DeleteFile.fromJson(item as Map<String, Object?>)) : (throw '''$item was not one of (TextDocumentEdit, CreateFile, RenameFile, DeleteFile)'''))))).toList())
-                : (throw '''$documentChangesJson was not one of (List<TextDocumentEdit>, List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>)''')));
-    final changeAnnotationsJson = json['changeAnnotations'];
-    final changeAnnotations = (changeAnnotationsJson as Map<Object, Object?>?)
-        ?.map((key, value) => MapEntry(key as String,
-            ChangeAnnotation.fromJson(value as Map<String, Object?>)));
+            : ((documentChangesJson is List<Object?> && (documentChangesJson.every((item) => TextDocumentEdit.canParse(item, nullLspJsonReporter)))) ? Either2<List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>, List<TextDocumentEdit>>.t2((documentChangesJson).map((item) => TextDocumentEdit.fromJson(item as Map<String, Object?>)).toList()) : (throw '''$documentChangesJson was not one of (List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>, List<TextDocumentEdit>)''')));
     return WorkspaceEdit(
+      changeAnnotations: changeAnnotations,
       changes: changes,
       documentChanges: documentChanges,
-      changeAnnotations: changeAnnotations,
     );
   }
 
@@ -44295,26 +44324,41 @@
   /// If a client neither supports `documentChanges` nor
   /// `workspace.workspaceEdit.resourceOperations` then only plain `TextEdit`s
   /// using the `changes` property are supported.
-  final Either2<List<TextDocumentEdit>,
-          List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>?
-      documentChanges;
+  final Either2<
+      List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>,
+      List<TextDocumentEdit>>? documentChanges;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (changeAnnotations != null) {
+      __result['changeAnnotations'] = changeAnnotations;
+    }
     if (changes != null) {
       __result['changes'] = changes;
     }
     if (documentChanges != null) {
       __result['documentChanges'] = documentChanges;
     }
-    if (changeAnnotations != null) {
-      __result['changeAnnotations'] = changeAnnotations;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('changeAnnotations');
+      try {
+        final changeAnnotations = obj['changeAnnotations'];
+        if (changeAnnotations != null &&
+            !((changeAnnotations is Map &&
+                (changeAnnotations.keys.every((item) =>
+                    item is String &&
+                    changeAnnotations.values.every((item) =>
+                        ChangeAnnotation.canParse(item, reporter))))))) {
+          reporter.reportError('must be of type Map<String, ChangeAnnotation>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('changes');
       try {
         final changes = obj['changes'];
@@ -44337,30 +44381,15 @@
         if (documentChanges != null &&
             !(((documentChanges is List<Object?> &&
                     (documentChanges.every((item) =>
-                        TextDocumentEdit.canParse(item, reporter)))) ||
+                        (CreateFile.canParse(item, reporter) ||
+                            DeleteFile.canParse(item, reporter) ||
+                            RenameFile.canParse(item, reporter) ||
+                            TextDocumentEdit.canParse(item, reporter))))) ||
                 (documentChanges is List<Object?> &&
                     (documentChanges.every((item) =>
-                        (TextDocumentEdit.canParse(item, reporter) ||
-                            CreateFile.canParse(item, reporter) ||
-                            RenameFile.canParse(item, reporter) ||
-                            DeleteFile.canParse(item, reporter)))))))) {
+                        TextDocumentEdit.canParse(item, reporter))))))) {
           reporter.reportError(
-              'must be of type Either2<List<TextDocumentEdit>, List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('changeAnnotations');
-      try {
-        final changeAnnotations = obj['changeAnnotations'];
-        if (changeAnnotations != null &&
-            !((changeAnnotations is Map &&
-                (changeAnnotations.keys.every((item) =>
-                    item is String &&
-                    changeAnnotations.values.every((item) =>
-                        ChangeAnnotation.canParse(item, reporter))))))) {
-          reporter.reportError('must be of type Map<String, ChangeAnnotation>');
+              'must be of type Either2<List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>, List<TextDocumentEdit>>');
           return false;
         }
       } finally {
@@ -44376,14 +44405,14 @@
   @override
   bool operator ==(Object other) {
     if (other is WorkspaceEdit && other.runtimeType == WorkspaceEdit) {
-      return mapEqual(
+      return mapEqual(changeAnnotations, other.changeAnnotations,
+              (ChangeAnnotation a, ChangeAnnotation b) => a == b) &&
+          mapEqual(
               changes,
               other.changes,
               (List<TextEdit> a, List<TextEdit> b) =>
                   listEqual(a, b, (TextEdit a, TextEdit b) => a == b)) &&
           documentChanges == other.documentChanges &&
-          mapEqual(changeAnnotations, other.changeAnnotations,
-              (ChangeAnnotation a, ChangeAnnotation b) => a == b) &&
           true;
     }
     return false;
@@ -44391,9 +44420,9 @@
 
   @override
   int get hashCode => Object.hash(
+        lspHashCode(changeAnnotations),
         lspHashCode(changes),
         documentChanges,
-        lspHashCode(changeAnnotations),
       );
 
   @override
@@ -44407,36 +44436,36 @@
   );
 
   WorkspaceEditClientCapabilities({
+    this.changeAnnotationSupport,
     this.documentChanges,
-    this.resourceOperations,
     this.failureHandling,
     this.normalizesLineEndings,
-    this.changeAnnotationSupport,
+    this.resourceOperations,
   });
   static WorkspaceEditClientCapabilities fromJson(Map<String, Object?> json) {
+    final changeAnnotationSupportJson = json['changeAnnotationSupport'];
+    final changeAnnotationSupport = changeAnnotationSupportJson != null
+        ? WorkspaceEditClientCapabilitiesChangeAnnotationSupport.fromJson(
+            changeAnnotationSupportJson as Map<String, Object?>)
+        : null;
     final documentChangesJson = json['documentChanges'];
     final documentChanges = documentChangesJson as bool?;
-    final resourceOperationsJson = json['resourceOperations'];
-    final resourceOperations = (resourceOperationsJson as List<Object?>?)
-        ?.map((item) => ResourceOperationKind.fromJson(item as String))
-        .toList();
     final failureHandlingJson = json['failureHandling'];
     final failureHandling = failureHandlingJson != null
         ? FailureHandlingKind.fromJson(failureHandlingJson as String)
         : null;
     final normalizesLineEndingsJson = json['normalizesLineEndings'];
     final normalizesLineEndings = normalizesLineEndingsJson as bool?;
-    final changeAnnotationSupportJson = json['changeAnnotationSupport'];
-    final changeAnnotationSupport = changeAnnotationSupportJson != null
-        ? WorkspaceEditClientCapabilitiesChangeAnnotationSupport.fromJson(
-            changeAnnotationSupportJson as Map<String, Object?>)
-        : null;
+    final resourceOperationsJson = json['resourceOperations'];
+    final resourceOperations = (resourceOperationsJson as List<Object?>?)
+        ?.map((item) => ResourceOperationKind.fromJson(item as String))
+        .toList();
     return WorkspaceEditClientCapabilities(
+      changeAnnotationSupport: changeAnnotationSupport,
       documentChanges: documentChanges,
-      resourceOperations: resourceOperations,
       failureHandling: failureHandling,
       normalizesLineEndings: normalizesLineEndings,
-      changeAnnotationSupport: changeAnnotationSupport,
+      resourceOperations: resourceOperations,
     );
   }
 
@@ -44467,45 +44496,45 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (changeAnnotationSupport != null) {
+      __result['changeAnnotationSupport'] = changeAnnotationSupport?.toJson();
+    }
     if (documentChanges != null) {
       __result['documentChanges'] = documentChanges;
     }
-    if (resourceOperations != null) {
-      __result['resourceOperations'] =
-          resourceOperations?.map((item) => item.toJson()).toList();
-    }
     if (failureHandling != null) {
       __result['failureHandling'] = failureHandling?.toJson();
     }
     if (normalizesLineEndings != null) {
       __result['normalizesLineEndings'] = normalizesLineEndings;
     }
-    if (changeAnnotationSupport != null) {
-      __result['changeAnnotationSupport'] = changeAnnotationSupport?.toJson();
+    if (resourceOperations != null) {
+      __result['resourceOperations'] =
+          resourceOperations?.map((item) => item.toJson()).toList();
     }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('documentChanges');
+      reporter.push('changeAnnotationSupport');
       try {
-        final documentChanges = obj['documentChanges'];
-        if (documentChanges != null && !(documentChanges is bool)) {
-          reporter.reportError('must be of type bool');
+        final changeAnnotationSupport = obj['changeAnnotationSupport'];
+        if (changeAnnotationSupport != null &&
+            !(WorkspaceEditClientCapabilitiesChangeAnnotationSupport.canParse(
+                changeAnnotationSupport, reporter))) {
+          reporter.reportError(
+              'must be of type WorkspaceEditClientCapabilitiesChangeAnnotationSupport');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('resourceOperations');
+      reporter.push('documentChanges');
       try {
-        final resourceOperations = obj['resourceOperations'];
-        if (resourceOperations != null &&
-            !((resourceOperations is List<Object?> &&
-                (resourceOperations.every((item) =>
-                    ResourceOperationKind.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<ResourceOperationKind>');
+        final documentChanges = obj['documentChanges'];
+        if (documentChanges != null && !(documentChanges is bool)) {
+          reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
@@ -44532,14 +44561,14 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('changeAnnotationSupport');
+      reporter.push('resourceOperations');
       try {
-        final changeAnnotationSupport = obj['changeAnnotationSupport'];
-        if (changeAnnotationSupport != null &&
-            !(WorkspaceEditClientCapabilitiesChangeAnnotationSupport.canParse(
-                changeAnnotationSupport, reporter))) {
-          reporter.reportError(
-              'must be of type WorkspaceEditClientCapabilitiesChangeAnnotationSupport');
+        final resourceOperations = obj['resourceOperations'];
+        if (resourceOperations != null &&
+            !((resourceOperations is List<Object?> &&
+                (resourceOperations.every((item) =>
+                    ResourceOperationKind.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<ResourceOperationKind>');
           return false;
         }
       } finally {
@@ -44556,12 +44585,12 @@
   bool operator ==(Object other) {
     if (other is WorkspaceEditClientCapabilities &&
         other.runtimeType == WorkspaceEditClientCapabilities) {
-      return documentChanges == other.documentChanges &&
-          listEqual(resourceOperations, other.resourceOperations,
-              (ResourceOperationKind a, ResourceOperationKind b) => a == b) &&
+      return changeAnnotationSupport == other.changeAnnotationSupport &&
+          documentChanges == other.documentChanges &&
           failureHandling == other.failureHandling &&
           normalizesLineEndings == other.normalizesLineEndings &&
-          changeAnnotationSupport == other.changeAnnotationSupport &&
+          listEqual(resourceOperations, other.resourceOperations,
+              (ResourceOperationKind a, ResourceOperationKind b) => a == b) &&
           true;
     }
     return false;
@@ -44569,11 +44598,11 @@
 
   @override
   int get hashCode => Object.hash(
+        changeAnnotationSupport,
         documentChanges,
-        lspHashCode(resourceOperations),
         failureHandling,
         normalizesLineEndings,
-        changeAnnotationSupport,
+        lspHashCode(resourceOperations),
       );
 
   @override
@@ -44656,17 +44685,17 @@
   );
 
   WorkspaceFolder({
-    required this.uri,
     required this.name,
+    required this.uri,
   });
   static WorkspaceFolder fromJson(Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
     final nameJson = json['name'];
     final name = nameJson as String;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
     return WorkspaceFolder(
-      uri: uri,
       name: name,
+      uri: uri,
     );
   }
 
@@ -44679,31 +44708,13 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
     __result['name'] = name;
+    __result['uri'] = uri;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final uri = obj['uri'];
-        if (uri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('name');
       try {
         if (!obj.containsKey('name')) {
@@ -44722,6 +44733,24 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type WorkspaceFolder');
@@ -44732,15 +44761,15 @@
   @override
   bool operator ==(Object other) {
     if (other is WorkspaceFolder && other.runtimeType == WorkspaceFolder) {
-      return uri == other.uri && name == other.name && true;
+      return name == other.name && uri == other.uri && true;
     }
     return false;
   }
 
   @override
   int get hashCode => Object.hash(
-        uri,
         name,
+        uri,
       );
 
   @override
@@ -44865,24 +44894,24 @@
   );
 
   WorkspaceFoldersServerCapabilities({
-    this.supported,
     this.changeNotifications,
+    this.supported,
   });
   static WorkspaceFoldersServerCapabilities fromJson(
       Map<String, Object?> json) {
-    final supportedJson = json['supported'];
-    final supported = supportedJson as bool?;
     final changeNotificationsJson = json['changeNotifications'];
     final changeNotifications = changeNotificationsJson == null
         ? null
-        : (changeNotificationsJson is String
-            ? Either2<String, bool>.t1(changeNotificationsJson)
-            : (changeNotificationsJson is bool
-                ? Either2<String, bool>.t2(changeNotificationsJson)
-                : (throw '''$changeNotificationsJson was not one of (String, bool)''')));
+        : (changeNotificationsJson is bool
+            ? Either2<bool, String>.t1(changeNotificationsJson)
+            : (changeNotificationsJson is String
+                ? Either2<bool, String>.t2(changeNotificationsJson)
+                : (throw '''$changeNotificationsJson was not one of (bool, String)''')));
+    final supportedJson = json['supported'];
+    final supported = supportedJson as bool?;
     return WorkspaceFoldersServerCapabilities(
-      supported: supported,
       changeNotifications: changeNotifications,
+      supported: supported,
     );
   }
 
@@ -44892,40 +44921,40 @@
   /// notification is registered on the client side. The ID can be used to
   /// unregister for these events using the `client/unregisterCapability`
   /// request.
-  final Either2<String, bool>? changeNotifications;
+  final Either2<bool, String>? changeNotifications;
 
   /// The server has support for workspace folders
   final bool? supported;
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    if (supported != null) {
-      __result['supported'] = supported;
-    }
     if (changeNotifications != null) {
       __result['changeNotifications'] = changeNotifications;
     }
+    if (supported != null) {
+      __result['supported'] = supported;
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('supported');
+      reporter.push('changeNotifications');
       try {
-        final supported = obj['supported'];
-        if (supported != null && !(supported is bool)) {
-          reporter.reportError('must be of type bool');
+        final changeNotifications = obj['changeNotifications'];
+        if (changeNotifications != null &&
+            !((changeNotifications is bool || changeNotifications is String))) {
+          reporter.reportError('must be of type Either2<bool, String>');
           return false;
         }
       } finally {
         reporter.pop();
       }
-      reporter.push('changeNotifications');
+      reporter.push('supported');
       try {
-        final changeNotifications = obj['changeNotifications'];
-        if (changeNotifications != null &&
-            !((changeNotifications is String || changeNotifications is bool))) {
-          reporter.reportError('must be of type Either2<String, bool>');
+        final supported = obj['supported'];
+        if (supported != null && !(supported is bool)) {
+          reporter.reportError('must be of type bool');
           return false;
         }
       } finally {
@@ -44943,8 +44972,8 @@
   bool operator ==(Object other) {
     if (other is WorkspaceFoldersServerCapabilities &&
         other.runtimeType == WorkspaceFoldersServerCapabilities) {
-      return supported == other.supported &&
-          changeNotifications == other.changeNotifications &&
+      return changeNotifications == other.changeNotifications &&
+          supported == other.supported &&
           true;
     }
     return false;
@@ -44952,8 +44981,8 @@
 
   @override
   int get hashCode => Object.hash(
-        supported,
         changeNotifications,
+        supported,
       );
 
   @override
@@ -44970,11 +44999,11 @@
   );
 
   WorkspaceFullDocumentDiagnosticReport({
-    required this.uri,
-    this.version,
+    required this.items,
     this.kind = 'full',
     this.resultId,
-    required this.items,
+    required this.uri,
+    this.version,
   }) {
     if (kind != 'full') {
       throw 'kind may only be the literal \'full\'';
@@ -44982,24 +45011,24 @@
   }
   static WorkspaceFullDocumentDiagnosticReport fromJson(
       Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
-    final versionJson = json['version'];
-    final version = versionJson as int?;
-    final kindJson = json['kind'];
-    final kind = kindJson as String;
-    final resultIdJson = json['resultId'];
-    final resultId = resultIdJson as String?;
     final itemsJson = json['items'];
     final items = (itemsJson as List<Object?>)
         .map((item) => Diagnostic.fromJson(item as Map<String, Object?>))
         .toList();
+    final kindJson = json['kind'];
+    final kind = kindJson as String;
+    final resultIdJson = json['resultId'];
+    final resultId = resultIdJson as String?;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int?;
     return WorkspaceFullDocumentDiagnosticReport(
-      uri: uri,
-      version: version,
+      items: items,
       kind: kind,
       resultId: resultId,
-      items: items,
+      uri: uri,
+      version: version,
     );
   }
 
@@ -45022,45 +45051,32 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
-    __result['version'] = version;
+    __result['items'] = items.map((item) => item.toJson()).toList();
     __result['kind'] = kind;
     if (resultId != null) {
       __result['resultId'] = resultId;
     }
-    __result['items'] = items.map((item) => item.toJson()).toList();
+    __result['uri'] = uri;
+    __result['version'] = version;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
+      reporter.push('items');
       try {
-        if (!obj.containsKey('uri')) {
+        if (!obj.containsKey('items')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final uri = obj['uri'];
-        if (uri == null) {
+        final items = obj['items'];
+        if (items == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('version');
-      try {
-        if (!obj.containsKey('version')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final version = obj['version'];
-        if (version != null && !(version is int)) {
-          reporter.reportError('must be of type int');
+        if (!((items is List<Object?> &&
+            (items.every((item) => Diagnostic.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<Diagnostic>');
           return false;
         }
       } finally {
@@ -45094,20 +45110,33 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('items');
+      reporter.push('uri');
       try {
-        if (!obj.containsKey('items')) {
+        if (!obj.containsKey('uri')) {
           reporter.reportError('must not be undefined');
           return false;
         }
-        final items = obj['items'];
-        if (items == null) {
+        final uri = obj['uri'];
+        if (uri == null) {
           reporter.reportError('must not be null');
           return false;
         }
-        if (!((items is List<Object?> &&
-            (items.every((item) => Diagnostic.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<Diagnostic>');
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('version');
+      try {
+        if (!obj.containsKey('version')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final version = obj['version'];
+        if (version != null && !(version is int)) {
+          reporter.reportError('must be of type int');
           return false;
         }
       } finally {
@@ -45125,12 +45154,12 @@
   bool operator ==(Object other) {
     if (other is WorkspaceFullDocumentDiagnosticReport &&
         other.runtimeType == WorkspaceFullDocumentDiagnosticReport) {
-      return uri == other.uri &&
-          version == other.version &&
+      return listEqual(
+              items, other.items, (Diagnostic a, Diagnostic b) => a == b) &&
           kind == other.kind &&
           resultId == other.resultId &&
-          listEqual(
-              items, other.items, (Diagnostic a, Diagnostic b) => a == b) &&
+          uri == other.uri &&
+          version == other.version &&
           true;
     }
     return false;
@@ -45138,11 +45167,11 @@
 
   @override
   int get hashCode => Object.hash(
-        uri,
-        version,
+        lspHashCode(items),
         kind,
         resultId,
-        lspHashCode(items),
+        uri,
+        version,
       );
 
   @override
@@ -45158,21 +45187,17 @@
   );
 
   WorkspaceSymbol({
-    required this.name,
-    required this.kind,
-    this.tags,
-    required this.location,
     this.containerName,
+    required this.kind,
+    required this.location,
+    required this.name,
+    this.tags,
   });
   static WorkspaceSymbol fromJson(Map<String, Object?> json) {
-    final nameJson = json['name'];
-    final name = nameJson as String;
+    final containerNameJson = json['containerName'];
+    final containerName = containerNameJson as String?;
     final kindJson = json['kind'];
     final kind = SymbolKind.fromJson(kindJson as int);
-    final tagsJson = json['tags'];
-    final tags = (tagsJson as List<Object?>?)
-        ?.map((item) => SymbolTag.fromJson(item as int))
-        .toList();
     final locationJson = json['location'];
     final location = Location.canParse(locationJson, nullLspJsonReporter)
         ? Either2<Location, WorkspaceSymbolLocation>.t1(
@@ -45182,14 +45207,18 @@
                 WorkspaceSymbolLocation.fromJson(
                     locationJson as Map<String, Object?>))
             : (throw '''$locationJson was not one of (Location, WorkspaceSymbolLocation)'''));
-    final containerNameJson = json['containerName'];
-    final containerName = containerNameJson as String?;
+    final nameJson = json['name'];
+    final name = nameJson as String;
+    final tagsJson = json['tags'];
+    final tags = (tagsJson as List<Object?>?)
+        ?.map((item) => SymbolTag.fromJson(item as int))
+        .toList();
     return WorkspaceSymbol(
-      name: name,
-      kind: kind,
-      tags: tags,
-      location: location,
       containerName: containerName,
+      kind: kind,
+      location: location,
+      name: name,
+      tags: tags,
     );
   }
 
@@ -45217,32 +45246,24 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['name'] = name;
-    __result['kind'] = kind.toJson();
-    if (tags != null) {
-      __result['tags'] = tags?.map((item) => item.toJson()).toList();
-    }
-    __result['location'] = location;
     if (containerName != null) {
       __result['containerName'] = containerName;
     }
+    __result['kind'] = kind.toJson();
+    __result['location'] = location;
+    __result['name'] = name;
+    if (tags != null) {
+      __result['tags'] = tags?.map((item) => item.toJson()).toList();
+    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('name');
+      reporter.push('containerName');
       try {
-        if (!obj.containsKey('name')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final name = obj['name'];
-        if (name == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(name is String)) {
+        final containerName = obj['containerName'];
+        if (containerName != null && !(containerName is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
@@ -45267,18 +45288,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('tags');
-      try {
-        final tags = obj['tags'];
-        if (tags != null &&
-            !((tags is List<Object?> &&
-                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
-          reporter.reportError('must be of type List<SymbolTag>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('location');
       try {
         if (!obj.containsKey('location')) {
@@ -45299,16 +45308,36 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('containerName');
+      reporter.push('name');
       try {
-        final containerName = obj['containerName'];
-        if (containerName != null && !(containerName is String)) {
+        if (!obj.containsKey('name')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final name = obj['name'];
+        if (name == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(name is String)) {
           reporter.reportError('must be of type String');
           return false;
         }
       } finally {
         reporter.pop();
       }
+      reporter.push('tags');
+      try {
+        final tags = obj['tags'];
+        if (tags != null &&
+            !((tags is List<Object?> &&
+                (tags.every((item) => SymbolTag.canParse(item, reporter)))))) {
+          reporter.reportError('must be of type List<SymbolTag>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError('must be of type WorkspaceSymbol');
@@ -45319,11 +45348,11 @@
   @override
   bool operator ==(Object other) {
     if (other is WorkspaceSymbol && other.runtimeType == WorkspaceSymbol) {
-      return name == other.name &&
+      return containerName == other.containerName &&
           kind == other.kind &&
-          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
           location == other.location &&
-          containerName == other.containerName &&
+          name == other.name &&
+          listEqual(tags, other.tags, (SymbolTag a, SymbolTag b) => a == b) &&
           true;
     }
     return false;
@@ -45331,11 +45360,11 @@
 
   @override
   int get hashCode => Object.hash(
-        name,
-        kind,
-        lspHashCode(tags),
-        location,
         containerName,
+        kind,
+        location,
+        name,
+        lspHashCode(tags),
       );
 
   @override
@@ -45350,13 +45379,18 @@
 
   WorkspaceSymbolClientCapabilities({
     this.dynamicRegistration,
+    this.resolveSupport,
     this.symbolKind,
     this.tagSupport,
-    this.resolveSupport,
   });
   static WorkspaceSymbolClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
+    final resolveSupportJson = json['resolveSupport'];
+    final resolveSupport = resolveSupportJson != null
+        ? WorkspaceSymbolClientCapabilitiesResolveSupport.fromJson(
+            resolveSupportJson as Map<String, Object?>)
+        : null;
     final symbolKindJson = json['symbolKind'];
     final symbolKind = symbolKindJson != null
         ? WorkspaceSymbolClientCapabilitiesSymbolKind.fromJson(
@@ -45367,16 +45401,11 @@
         ? WorkspaceSymbolClientCapabilitiesTagSupport.fromJson(
             tagSupportJson as Map<String, Object?>)
         : null;
-    final resolveSupportJson = json['resolveSupport'];
-    final resolveSupport = resolveSupportJson != null
-        ? WorkspaceSymbolClientCapabilitiesResolveSupport.fromJson(
-            resolveSupportJson as Map<String, Object?>)
-        : null;
     return WorkspaceSymbolClientCapabilities(
       dynamicRegistration: dynamicRegistration,
+      resolveSupport: resolveSupport,
       symbolKind: symbolKind,
       tagSupport: tagSupport,
-      resolveSupport: resolveSupport,
     );
   }
 
@@ -45403,15 +45432,15 @@
     if (dynamicRegistration != null) {
       __result['dynamicRegistration'] = dynamicRegistration;
     }
+    if (resolveSupport != null) {
+      __result['resolveSupport'] = resolveSupport?.toJson();
+    }
     if (symbolKind != null) {
       __result['symbolKind'] = symbolKind?.toJson();
     }
     if (tagSupport != null) {
       __result['tagSupport'] = tagSupport?.toJson();
     }
-    if (resolveSupport != null) {
-      __result['resolveSupport'] = resolveSupport?.toJson();
-    }
     return __result;
   }
 
@@ -45427,6 +45456,19 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('resolveSupport');
+      try {
+        final resolveSupport = obj['resolveSupport'];
+        if (resolveSupport != null &&
+            !(WorkspaceSymbolClientCapabilitiesResolveSupport.canParse(
+                resolveSupport, reporter))) {
+          reporter.reportError(
+              'must be of type WorkspaceSymbolClientCapabilitiesResolveSupport');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('symbolKind');
       try {
         final symbolKind = obj['symbolKind'];
@@ -45453,19 +45495,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('resolveSupport');
-      try {
-        final resolveSupport = obj['resolveSupport'];
-        if (resolveSupport != null &&
-            !(WorkspaceSymbolClientCapabilitiesResolveSupport.canParse(
-                resolveSupport, reporter))) {
-          reporter.reportError(
-              'must be of type WorkspaceSymbolClientCapabilitiesResolveSupport');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type WorkspaceSymbolClientCapabilities');
@@ -45478,9 +45507,9 @@
     if (other is WorkspaceSymbolClientCapabilities &&
         other.runtimeType == WorkspaceSymbolClientCapabilities) {
       return dynamicRegistration == other.dynamicRegistration &&
+          resolveSupport == other.resolveSupport &&
           symbolKind == other.symbolKind &&
           tagSupport == other.tagSupport &&
-          resolveSupport == other.resolveSupport &&
           true;
     }
     return false;
@@ -45489,9 +45518,9 @@
   @override
   int get hashCode => Object.hash(
         dynamicRegistration,
+        resolveSupport,
         symbolKind,
         tagSupport,
-        resolveSupport,
       );
 
   @override
@@ -45896,11 +45925,19 @@
   );
 
   WorkspaceSymbolParams({
+    this.partialResultToken,
     required this.query,
     this.workDoneToken,
-    this.partialResultToken,
   });
   static WorkspaceSymbolParams fromJson(Map<String, Object?> json) {
+    final partialResultTokenJson = json['partialResultToken'];
+    final partialResultToken = partialResultTokenJson == null
+        ? null
+        : (partialResultTokenJson is int
+            ? Either2<int, String>.t1(partialResultTokenJson)
+            : (partialResultTokenJson is String
+                ? Either2<int, String>.t2(partialResultTokenJson)
+                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     final queryJson = json['query'];
     final query = queryJson as String;
     final workDoneTokenJson = json['workDoneToken'];
@@ -45911,18 +45948,10 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    final partialResultTokenJson = json['partialResultToken'];
-    final partialResultToken = partialResultTokenJson == null
-        ? null
-        : (partialResultTokenJson is int
-            ? Either2<int, String>.t1(partialResultTokenJson)
-            : (partialResultTokenJson is String
-                ? Either2<int, String>.t2(partialResultTokenJson)
-                : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return WorkspaceSymbolParams(
+      partialResultToken: partialResultToken,
       query: query,
       workDoneToken: workDoneToken,
-      partialResultToken: partialResultToken,
     );
   }
 
@@ -45939,18 +45968,29 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
+    if (partialResultToken != null) {
+      __result['partialResultToken'] = partialResultToken;
+    }
     __result['query'] = query;
     if (workDoneToken != null) {
       __result['workDoneToken'] = workDoneToken;
     }
-    if (partialResultToken != null) {
-      __result['partialResultToken'] = partialResultToken;
-    }
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
+      reporter.push('partialResultToken');
+      try {
+        final partialResultToken = obj['partialResultToken'];
+        if (partialResultToken != null &&
+            !((partialResultToken is int || partialResultToken is String))) {
+          reporter.reportError('must be of type Either2<int, String>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       reporter.push('query');
       try {
         if (!obj.containsKey('query')) {
@@ -45980,17 +46020,6 @@
       } finally {
         reporter.pop();
       }
-      reporter.push('partialResultToken');
-      try {
-        final partialResultToken = obj['partialResultToken'];
-        if (partialResultToken != null &&
-            !((partialResultToken is int || partialResultToken is String))) {
-          reporter.reportError('must be of type Either2<int, String>');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       return true;
     } else {
       reporter.reportError('must be of type WorkspaceSymbolParams');
@@ -46002,9 +46031,9 @@
   bool operator ==(Object other) {
     if (other is WorkspaceSymbolParams &&
         other.runtimeType == WorkspaceSymbolParams) {
-      return query == other.query &&
+      return partialResultToken == other.partialResultToken &&
+          query == other.query &&
           workDoneToken == other.workDoneToken &&
-          partialResultToken == other.partialResultToken &&
           true;
     }
     return false;
@@ -46012,9 +46041,9 @@
 
   @override
   int get hashCode => Object.hash(
+        partialResultToken,
         query,
         workDoneToken,
-        partialResultToken,
       );
 
   @override
@@ -46122,10 +46151,10 @@
   );
 
   WorkspaceUnchangedDocumentDiagnosticReport({
-    required this.uri,
-    this.version,
     this.kind = 'unchanged',
     required this.resultId,
+    required this.uri,
+    this.version,
   }) {
     if (kind != 'unchanged') {
       throw 'kind may only be the literal \'unchanged\'';
@@ -46133,19 +46162,19 @@
   }
   static WorkspaceUnchangedDocumentDiagnosticReport fromJson(
       Map<String, Object?> json) {
-    final uriJson = json['uri'];
-    final uri = uriJson as String;
-    final versionJson = json['version'];
-    final version = versionJson as int?;
     final kindJson = json['kind'];
     final kind = kindJson as String;
     final resultIdJson = json['resultId'];
     final resultId = resultIdJson as String;
+    final uriJson = json['uri'];
+    final uri = uriJson as String;
+    final versionJson = json['version'];
+    final version = versionJson as int?;
     return WorkspaceUnchangedDocumentDiagnosticReport(
-      uri: uri,
-      version: version,
       kind: kind,
       resultId: resultId,
+      uri: uri,
+      version: version,
     );
   }
 
@@ -46166,47 +46195,15 @@
 
   Map<String, Object?> toJson() {
     var __result = <String, Object?>{};
-    __result['uri'] = uri;
-    __result['version'] = version;
     __result['kind'] = kind;
     __result['resultId'] = resultId;
+    __result['uri'] = uri;
+    __result['version'] = version;
     return __result;
   }
 
   static bool canParse(Object? obj, LspJsonReporter reporter) {
     if (obj is Map<String, Object?>) {
-      reporter.push('uri');
-      try {
-        if (!obj.containsKey('uri')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final uri = obj['uri'];
-        if (uri == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(uri is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('version');
-      try {
-        if (!obj.containsKey('version')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final version = obj['version'];
-        if (version != null && !(version is int)) {
-          reporter.reportError('must be of type int');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
       reporter.push('kind');
       try {
         if (!obj.containsKey('kind')) {
@@ -46243,6 +46240,38 @@
       } finally {
         reporter.pop();
       }
+      reporter.push('uri');
+      try {
+        if (!obj.containsKey('uri')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final uri = obj['uri'];
+        if (uri == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(uri is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('version');
+      try {
+        if (!obj.containsKey('version')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final version = obj['version'];
+        if (version != null && !(version is int)) {
+          reporter.reportError('must be of type int');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
       return true;
     } else {
       reporter.reportError(
@@ -46255,10 +46284,10 @@
   bool operator ==(Object other) {
     if (other is WorkspaceUnchangedDocumentDiagnosticReport &&
         other.runtimeType == WorkspaceUnchangedDocumentDiagnosticReport) {
-      return uri == other.uri &&
-          version == other.version &&
-          kind == other.kind &&
+      return kind == other.kind &&
           resultId == other.resultId &&
+          uri == other.uri &&
+          version == other.version &&
           true;
     }
     return false;
@@ -46266,10 +46295,10 @@
 
   @override
   int get hashCode => Object.hash(
-        uri,
-        version,
         kind,
         resultId,
+        uri,
+        version,
       );
 
   @override
diff --git a/pkg/analysis_server/lib/src/cider/document_symbols.dart b/pkg/analysis_server/lib/src/cider/document_symbols.dart
index f8c77758..0e6fe0e 100644
--- a/pkg/analysis_server/lib/src/cider/document_symbols.dart
+++ b/pkg/analysis_server/lib/src/cider/document_symbols.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart' hide Outline;
 import 'package:analysis_server/src/computer/computer_outline.dart';
 import 'package:analysis_server/src/lsp/client_capabilities.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/cider/signature_help.dart b/pkg/analysis_server/lib/src/cider/signature_help.dart
index 107060e..d6fc27a 100644
--- a/pkg/analysis_server/lib/src/cider/signature_help.dart
+++ b/pkg/analysis_server/lib/src/cider/signature_help.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/computer/computer_signature.dart';
 import 'package:analysis_server/src/computer/computer_type_arguments_signature.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
index 8ae64a3..5c6934c 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -7,7 +7,7 @@
 import 'package:_fe_analyzer_shared/src/parser/quote.dart'
     show analyzeQuote, Quote, firstQuoteLength, lastQuoteLength;
 import 'package:_fe_analyzer_shared/src/scanner/characters.dart' as char;
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart'
+import 'package:analysis_server/lsp_protocol/protocol.dart'
     show SemanticTokenTypes, SemanticTokenModifiers;
 import 'package:analysis_server/src/lsp/constants.dart'
     show CustomSemanticTokenModifiers, CustomSemanticTokenTypes;
diff --git a/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart b/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart
index 800ff38..e6831bc 100644
--- a/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart' as lsp;
+import 'package:analysis_server/lsp_protocol/protocol.dart' as lsp;
 import 'package:analysis_server/src/computer/computer_hover.dart';
 import 'package:analysis_server/src/lsp/dartdoc.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
@@ -98,7 +98,7 @@
       lsp.SignatureInformation(
         label: label,
         documentation: documentation != null
-            ? asStringOrMarkupContent(preferredFormats, documentation)
+            ? asMarkupContentOrString(preferredFormats, documentation)
             : null,
         parameters: parameters,
       ),
diff --git a/pkg/analysis_server/lib/src/lsp/channel/lsp_byte_stream_channel.dart b/pkg/analysis_server/lib/src/lsp/channel/lsp_byte_stream_channel.dart
index 506a745..4da59dc 100644
--- a/pkg/analysis_server/lib/src/lsp/channel/lsp_byte_stream_channel.dart
+++ b/pkg/analysis_server/lib/src/lsp/channel/lsp_byte_stream_channel.dart
@@ -6,8 +6,7 @@
 import 'dart:convert';
 import 'dart:io';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/channel/lsp_channel.dart';
 import 'package:analysis_server/src/lsp/json_parsing.dart';
 import 'package:analysis_server/src/lsp/lsp_packet_transformer.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/channel/lsp_channel.dart b/pkg/analysis_server/lib/src/lsp/channel/lsp_channel.dart
index d6fa717..236e9d0 100644
--- a/pkg/analysis_server/lib/src/lsp/channel/lsp_channel.dart
+++ b/pkg/analysis_server/lib/src/lsp/channel/lsp_channel.dart
@@ -4,7 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
 
 /// The abstract class [LspServerCommunicationChannel] defines the behavior of
diff --git a/pkg/analysis_server/lib/src/lsp/client_capabilities.dart b/pkg/analysis_server/lib/src/lsp/client_capabilities.dart
index 9a50687..2a172ca 100644
--- a/pkg/analysis_server/lib/src/lsp/client_capabilities.dart
+++ b/pkg/analysis_server/lib/src/lsp/client_capabilities.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 
 /// Wraps the client (editor) capabilities to improve performance.
 ///
diff --git a/pkg/analysis_server/lib/src/lsp/constants.dart b/pkg/analysis_server/lib/src/lsp/constants.dart
index cb2da70..de28ea1 100644
--- a/pkg/analysis_server/lib/src/lsp/constants.dart
+++ b/pkg/analysis_server/lib/src/lsp/constants.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 
 /// The characters that will cause the editor to automatically commit the selected
 /// completion item.
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart
index 7c080cb..c710951 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/simple_edit_handler.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart
index 01f0d88..c0c9aa7 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/simple_edit_handler.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart
index 5ef9c07..5e5bcf9 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/simple_edit_handler.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/perform_refactor.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/perform_refactor.dart
index 4f9fb46..018892a 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/perform_refactor.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/perform_refactor.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/abstract_refactor.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/send_workspace_edit.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/send_workspace_edit.dart
index 228e211..0043490 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/send_workspace_edit.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/send_workspace_edit.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/simple_edit_handler.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/simple_edit_handler.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/simple_edit_handler.dart
index 317d1b9..467039d 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/simple_edit_handler.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/simple_edit_handler.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/sort_members.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/sort_members.dart
index bb0ff93..7634396 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/sort_members.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/sort_members.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/simple_edit_handler.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/validate_refactor.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/validate_refactor.dart
index 402e934..72107e8 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/validate_refactor.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/validate_refactor.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/abstract_refactor.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/progress.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_diagnostic_server.dart b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_diagnostic_server.dart
index 3c081c8..067b15e 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_diagnostic_server.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_diagnostic_server.dart
@@ -2,9 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_reanalyze.dart b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_reanalyze.dart
index f3e68d1..4dde991 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_reanalyze.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_reanalyze.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart
index 46ab360..b9b0cd9 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_cancel_request.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_cancel_request.dart
index a2d3280..abc2644 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_cancel_request.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_cancel_request.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
 class CancelRequestHandler extends MessageHandler<CancelParams, void> {
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart
index ee5e401..590e49d 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
 class WorkspaceFoldersHandler
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart
index 93248df..82d2c4b 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
index b624eed..0440ae0 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
@@ -4,9 +4,7 @@
 
 import 'dart:math' as math;
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analysis_server/src/domains/completion/available_suggestions.dart';
 import 'package:analysis_server/src/lsp/client_capabilities.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart
index 4a7b49b..195fe66 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart
@@ -2,10 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart'
-    hide Element;
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart' hide Element;
 import 'package:analysis_server/src/lsp/client_capabilities.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
@@ -123,7 +120,7 @@
         final dartDoc =
             analyzer.getDartDocPlainText(element.documentationComment);
         final documentation =
-            dartDoc != null ? asStringOrMarkupContent(formats, dartDoc) : null;
+            dartDoc != null ? asMarkupContentOrString(formats, dartDoc) : null;
         final supportsInsertReplace =
             clientCapabilities.insertReplaceCompletionRanges;
 
@@ -155,14 +152,14 @@
           insertText: newInsertText,
           insertTextFormat: item.insertTextFormat,
           textEdit: supportsInsertReplace && insertionRange != replacementRange
-              ? Either2<TextEdit, InsertReplaceEdit>.t2(
+              ? Either2<InsertReplaceEdit, TextEdit>.t1(
                   InsertReplaceEdit(
                     insert: insertionRange,
                     replace: replacementRange,
                     newText: newInsertText,
                   ),
                 )
-              : Either2<TextEdit, InsertReplaceEdit>.t1(
+              : Either2<InsertReplaceEdit, TextEdit>.t2(
                   TextEdit(
                     range: replacementRange,
                     newText: newInsertText,
@@ -256,7 +253,7 @@
       tags: item.tags,
       detail: item.detail,
       documentation: description != null
-          ? Either2<String, MarkupContent>.t1(description)
+          ? Either2<MarkupContent, String>.t2(description)
           : null,
       deprecated: item.deprecated,
       preselect: item.preselect,
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart
index 39e7fe8..a066a4c 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart' hide Element;
 import 'package:analysis_server/protocol/protocol_generated.dart'
     hide AnalysisGetNavigationParams;
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color.dart
index d632039..51e1a16 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/computer/computer_color.dart'
     show ColorComputer, ColorReference;
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color_presentation.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color_presentation.dart
index 3a14093..e5958a2 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color_presentation.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_color_presentation.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
 import 'package:analysis_server/src/utilities/flutter.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_highlights.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_highlights.dart
index 4b3bba5..0ffe8e5 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_highlights.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_highlights.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/domains/analysis/occurrences.dart';
 import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_symbols.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_symbols.dart
index 38754f9..1e67440 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_document_symbols.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_document_symbols.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart' hide Outline;
 import 'package:analysis_server/src/computer/computer_outline.dart';
 import 'package:analysis_server/src/lsp/client_capabilities.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_execute_command.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_execute_command.dart
index 4cbde68..ebf7cdc 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_execute_command.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_execute_command.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/fix_all.dart';
 import 'package:analysis_server/src/lsp/handlers/commands/organize_imports.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart
index 56923e8..e351b48 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart
@@ -4,8 +4,7 @@
 
 import 'dart:io';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
 class ExitMessageHandler extends MessageHandler<void, void> {
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_folding.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_folding.dart
index 27590e6..8c93f1c 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_folding.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_folding.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/computer/computer_folding.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart
index 23cfd7d..f2d4a05 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart
index ab8a7c1..b1200e6 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart
index 10df929..36dafd6 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart
index eaebf09..30ca65f 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analysis_server/src/computer/computer_hover.dart';
 import 'package:analysis_server/src/lsp/dartdoc.dart';
@@ -85,7 +84,7 @@
     final formats = server.clientCapabilities?.hoverContentFormats;
     return Hover(
       contents:
-          asStringOrMarkupContent(formats, content.toString().trimRight()),
+          asMarkupContentOrString(formats, content.toString().trimRight()),
       range: toRange(lineInfo, hover.offset, hover.length),
     );
   }
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_implementation.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_implementation.dart
index 2d74fe1..923248d 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_implementation.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_implementation.dart
@@ -2,9 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart'
+import 'package:analysis_server/lsp_protocol/protocol.dart'
     hide TypeHierarchyItem;
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart
index 0d08fba..131daee 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart
@@ -4,8 +4,7 @@
 
 import 'dart:io';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handler_states.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart
index 912ab3c..e728d79 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handler_states.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart
index 69aef3b..866b7e8 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
 import 'package:analysis_server/src/protocol_server.dart' show SearchResult;
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart
index ddc4740..105a9e2 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
 /// A [MessageHandler] that rejects specific tpyes of messages with a given
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart
index bd313fc..9e9088d 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/client_configuration.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_select_range.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_select_range.dart
index 34a7f0a..01b2e76 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_select_range.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_select_range.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/computer/computer_selection_ranges.dart'
     hide SelectionRange;
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_semantic_tokens.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_semantic_tokens.dart
index cb6ea2a..52c5275 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_semantic_tokens.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_semantic_tokens.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/computer/computer_highlights.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart
index 14a1273..4655b69 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handler_states.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_signature_help.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_signature_help.dart
index 743f981..9d2018b 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_signature_help.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_signature_help.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/computer/computer_signature.dart';
 import 'package:analysis_server/src/computer/computer_type_arguments_signature.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart
index 8b130ae..5369d17 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/custom/handler_diagnostic_server.dart';
 import 'package:analysis_server/src/lsp/handlers/custom/handler_reanalyze.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart
index aa59bfc..4376b67 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart
index 2f75106..27198de 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
 import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_will_rename_files.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_will_rename_files.dart
index a34724b..ee8a2a4 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_will_rename_files.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_will_rename_files.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
 import 'package:analysis_server/src/services/refactoring/refactoring.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_configuration.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_configuration.dart
index 092d62b..b7bac11 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_configuration.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_configuration.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 
 class WorkspaceDidChangeConfigurationMessageHandler
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_symbols.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_symbols.dart
index ad70de7..83e5bb5 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_symbols.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_symbols.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/handlers/handlers.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
 import 'package:analyzer/src/dart/analysis/search.dart' as search;
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart b/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
index a51eed8..3a80bca 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/analysis_server_abstract.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/handlers/handler_cancel_request.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
index 0869d24..2a54557 100644
--- a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
+++ b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
@@ -4,9 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/analysis_server.dart';
 import 'package:analysis_server/src/analysis_server_abstract.dart';
 import 'package:analysis_server/src/computer/computer_closingLabels.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/lsp_socket_server.dart b/pkg/analysis_server/lib/src/lsp/lsp_socket_server.dart
index b2cb46f..34ca0ab 100644
--- a/pkg/analysis_server/lib/src/lsp/lsp_socket_server.dart
+++ b/pkg/analysis_server/lib/src/lsp/lsp_socket_server.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/analysis_server.dart';
 import 'package:analysis_server/src/lsp/channel/lsp_channel.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/mapping.dart b/pkg/analysis_server/lib/src/lsp/mapping.dart
index 176162a..ff0fc5e 100644
--- a/pkg/analysis_server/lib/src/lsp/mapping.dart
+++ b/pkg/analysis_server/lib/src/lsp/mapping.dart
@@ -5,13 +5,8 @@
 import 'dart:io';
 import 'dart:math';
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart'
-    as lsp;
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart' as lsp;
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart' as lsp;
+import 'package:analysis_server/lsp_protocol/protocol.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart' as lsp;
 import 'package:analysis_server/src/collections.dart';
 import 'package:analysis_server/src/lsp/client_capabilities.dart';
 import 'package:analysis_server/src/lsp/constants.dart' as lsp;
@@ -62,12 +57,12 @@
 /// field.
 final _upgradableDocCompletePattern = RegExp(r'^_([\w ]{0,20})_$');
 
-lsp.Either2<String, lsp.MarkupContent> asStringOrMarkupContent(
+lsp.Either2<lsp.MarkupContent, String> asMarkupContentOrString(
     Set<lsp.MarkupKind>? preferredFormats, String content) {
-  return preferredFormats == null
-      ? lsp.Either2<String, lsp.MarkupContent>.t1(content)
-      : lsp.Either2<String, lsp.MarkupContent>.t2(
-          _asMarkup(preferredFormats, content));
+  return preferredFormats != null
+      ? lsp.Either2<lsp.MarkupContent, String>.t1(
+          _asMarkup(preferredFormats, content))
+      : lsp.Either2<lsp.MarkupContent, String>.t2(content);
 }
 
 /// Creates a [lsp.WorkspaceEdit] from simple [server.SourceFileEdit]s.
@@ -98,7 +93,7 @@
 /// Create a [WorkspaceEdit] that renames [oldPath] to [newPath].
 WorkspaceEdit createRenameEdit(String oldPath, String newPath) {
   final changes =
-      <Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>[];
+      <Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>[];
 
   final rename = RenameFile(
     oldUri: Uri.file(oldPath).toString(),
@@ -106,16 +101,14 @@
   );
 
   final renameUnion =
-      Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>.t3(rename);
+      Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>.t3(rename);
 
   changes.add(renameUnion);
 
   final edit = WorkspaceEdit(
       documentChanges: Either2<
-          List<TextDocumentEdit>,
-          List<
-              Either4<TextDocumentEdit, CreateFile, RenameFile,
-                  DeleteFile>>>.t2(changes));
+          List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>,
+          List<TextDocumentEdit>>.t1(changes));
   return edit;
 }
 
@@ -169,21 +162,21 @@
   final textDocumentEdit = lsp.TextDocumentEdit(
     textDocument: server.getVersionedDocumentIdentifier(fileEdit.file),
     edits: snippetEdits
-        .map((e) => Either3<lsp.SnippetTextEdit, lsp.AnnotatedTextEdit,
-            lsp.TextEdit>.t1(e))
+        .map((e) => Either3<lsp.AnnotatedTextEdit, lsp.SnippetTextEdit,
+            lsp.TextEdit>.t2(e))
         .toList(),
   );
 
   // Convert to the union that documentChanges require.
-  final textDocumentEditsAsUnion = Either4<lsp.TextDocumentEdit, lsp.CreateFile,
-      lsp.RenameFile, lsp.DeleteFile>.t1(textDocumentEdit);
+  final textDocumentEditsAsUnion = Either4<lsp.CreateFile, lsp.DeleteFile,
+      lsp.RenameFile, lsp.TextDocumentEdit>.t4(textDocumentEdit);
 
   // Convert to the union that documentChanges is.
   final documentChanges = Either2<
-      List<lsp.TextDocumentEdit>,
       List<
-          Either4<lsp.TextDocumentEdit, lsp.CreateFile, lsp.RenameFile,
-              lsp.DeleteFile>>>.t2([textDocumentEditsAsUnion]);
+          Either4<lsp.CreateFile, lsp.DeleteFile, lsp.RenameFile,
+              lsp.TextDocumentEdit>>,
+      List<lsp.TextDocumentEdit>>.t1([textDocumentEditsAsUnion]);
 
   /// Add the textDocumentEdit to a WorkspaceEdit.
   return lsp.WorkspaceEdit(documentChanges: documentChanges);
@@ -700,24 +693,22 @@
   // TODO(dantup): This method (and much other code here) should be
   // significantly tidied up when nonfunction-type-aliases is available here.
   final changes =
-      <Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>[];
+      <Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>[];
 
   for (final edit in edits) {
     // Flatten the Either into just the Union side to get a flat list.
     final flatResourceChanges = edit.documentChanges!.map(
-      (edits) => edits.map((e) =>
-          Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>.t1(e)),
       (resources) => resources,
+      (edits) => edits.map((e) =>
+          Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>.t4(e)),
     );
     changes.addAll(flatResourceChanges);
   }
 
   return WorkspaceEdit(
       documentChanges: Either2<
-          List<TextDocumentEdit>,
-          List<
-              Either4<TextDocumentEdit, CreateFile, RenameFile,
-                  DeleteFile>>>.t2(changes));
+          List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>,
+          List<TextDocumentEdit>>.t1(changes));
 }
 
 lsp.Location navigationTargetToLocation(
@@ -1027,7 +1018,7 @@
     kind: lsp.CompletionItemKind.Snippet,
     command: command,
     documentation: documentation != null
-        ? asStringOrMarkupContent(formats, documentation)
+        ? asMarkupContentOrString(formats, documentation)
         : null,
     // Force snippets to be sorted at the bottom of the list.
     // TODO(dantup): Consider if we can rank these better. Client-side
@@ -1036,7 +1027,7 @@
     sortText: 'zzz${snippet.prefix}',
     insertTextFormat: lsp.InsertTextFormat.Snippet,
     insertTextMode: supportsAsIsInsertMode ? InsertTextMode.asIs : null,
-    textEdit: Either2<TextEdit, InsertReplaceEdit>.t1(mainEdit),
+    textEdit: Either2<InsertReplaceEdit, TextEdit>.t2(mainEdit),
     additionalTextEdits: nonMainEdits,
   );
 }
@@ -1227,7 +1218,7 @@
     data: resolutionData,
     detail: detail,
     documentation: cleanedDoc != null
-        ? asStringOrMarkupContent(formats, cleanedDoc)
+        ? asMarkupContentOrString(formats, cleanedDoc)
         : null,
     deprecated: supportsCompletionDeprecatedFlag && suggestion.isDeprecated
         ? true
@@ -1248,14 +1239,14 @@
     textEdit: (insertionRange == null || replacementRange == null)
         ? null
         : supportsInsertReplace && insertionRange != replacementRange
-            ? Either2<TextEdit, InsertReplaceEdit>.t2(
+            ? Either2<InsertReplaceEdit, TextEdit>.t1(
                 InsertReplaceEdit(
                   insert: insertionRange,
                   replace: replacementRange,
                   newText: insertText,
                 ),
               )
-            : Either2<TextEdit, InsertReplaceEdit>.t1(
+            : Either2<InsertReplaceEdit, TextEdit>.t2(
                 TextEdit(
                   range: replacementRange,
                   newText: insertText,
@@ -1481,7 +1472,7 @@
       lsp.SignatureInformation(
         label: getSignatureLabel(signature),
         documentation: cleanedDoc != null
-            ? asStringOrMarkupContent(preferredFormats, cleanedDoc)
+            ? asMarkupContentOrString(preferredFormats, cleanedDoc)
             : null,
         parameters: signature.parameters.map(toParameterInfo).toList(),
       ),
@@ -1567,7 +1558,7 @@
           .toList());
 }
 
-Either3<lsp.SnippetTextEdit, lsp.AnnotatedTextEdit, lsp.TextEdit>
+Either3<lsp.AnnotatedTextEdit, lsp.SnippetTextEdit, lsp.TextEdit>
     toTextDocumentEditEdit(
   LspClientCapabilities capabilities,
   server.LineInfo lineInfo,
@@ -1577,10 +1568,10 @@
 }) {
   if (!capabilities.experimentalSnippetTextEdit ||
       selectionOffsetRelative == null) {
-    return Either3<lsp.SnippetTextEdit, lsp.AnnotatedTextEdit, lsp.TextEdit>.t3(
+    return Either3<lsp.AnnotatedTextEdit, lsp.SnippetTextEdit, lsp.TextEdit>.t3(
         toTextEdit(lineInfo, edit));
   }
-  return Either3<lsp.SnippetTextEdit, lsp.AnnotatedTextEdit, lsp.TextEdit>.t1(
+  return Either3<lsp.AnnotatedTextEdit, lsp.SnippetTextEdit, lsp.TextEdit>.t2(
       snippetTextEditWithSelection(lineInfo, edit,
           selectionOffsetRelative: selectionOffsetRelative,
           selectionLength: selectionLength));
@@ -1601,8 +1592,8 @@
   if (supportsDocumentChanges) {
     final supportsCreate = capabilities.createResourceOperations;
     final changes = <
-        Either4<lsp.TextDocumentEdit, lsp.CreateFile, lsp.RenameFile,
-            lsp.DeleteFile>>[];
+        Either4<lsp.CreateFile, lsp.DeleteFile, lsp.RenameFile,
+            lsp.TextDocumentEdit>>[];
 
     // Convert each SourceEdit to either a TextDocumentEdit or a
     // CreateFile + a TextDocumentEdit depending on whether it's a new
@@ -1610,23 +1601,23 @@
     for (final edit in edits) {
       if (supportsCreate && edit.newFile) {
         final create = lsp.CreateFile(uri: edit.doc.uri);
-        final createUnion = Either4<lsp.TextDocumentEdit, lsp.CreateFile,
-            lsp.RenameFile, lsp.DeleteFile>.t2(create);
+        final createUnion = Either4<lsp.CreateFile, lsp.DeleteFile,
+            lsp.RenameFile, lsp.TextDocumentEdit>.t1(create);
         changes.add(createUnion);
       }
 
       final textDocEdit = toTextDocumentEdit(capabilities, edit);
-      final textDocEditUnion = Either4<lsp.TextDocumentEdit, lsp.CreateFile,
-          lsp.RenameFile, lsp.DeleteFile>.t1(textDocEdit);
+      final textDocEditUnion = Either4<lsp.CreateFile, lsp.DeleteFile,
+          lsp.RenameFile, lsp.TextDocumentEdit>.t4(textDocEdit);
       changes.add(textDocEditUnion);
     }
 
     return lsp.WorkspaceEdit(
         documentChanges: Either2<
-            List<lsp.TextDocumentEdit>,
             List<
-                Either4<lsp.TextDocumentEdit, lsp.CreateFile, lsp.RenameFile,
-                    lsp.DeleteFile>>>.t2(changes));
+                Either4<lsp.CreateFile, lsp.DeleteFile, lsp.RenameFile,
+                    lsp.TextDocumentEdit>>,
+            List<lsp.TextDocumentEdit>>.t1(changes));
   } else {
     return lsp.WorkspaceEdit(changes: toWorkspaceEditChanges(edits));
   }
diff --git a/pkg/analysis_server/lib/src/lsp/notification_manager.dart b/pkg/analysis_server/lib/src/lsp/notification_manager.dart
index bae8def..46796d3 100644
--- a/pkg/analysis_server/lib/src/lsp/notification_manager.dart
+++ b/pkg/analysis_server/lib/src/lsp/notification_manager.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/channel/lsp_channel.dart';
 import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/progress.dart b/pkg/analysis_server/lib/src/lsp/progress.dart
index 398d0b0..370f54e 100644
--- a/pkg/analysis_server/lib/src/lsp/progress.dart
+++ b/pkg/analysis_server/lib/src/lsp/progress.dart
@@ -5,8 +5,7 @@
 import 'dart:async';
 import 'dart:math';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
 
 /// Reports progress of long-running operations to the LSP client.
diff --git a/pkg/analysis_server/lib/src/lsp/semantic_tokens/encoder.dart b/pkg/analysis_server/lib/src/lsp/semantic_tokens/encoder.dart
index 170ff22..9689ab2 100644
--- a/pkg/analysis_server/lib/src/lsp/semantic_tokens/encoder.dart
+++ b/pkg/analysis_server/lib/src/lsp/semantic_tokens/encoder.dart
@@ -5,7 +5,7 @@
 import 'dart:collection';
 import 'dart:math' as math;
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/semantic_tokens/legend.dart';
 import 'package:analysis_server/src/lsp/semantic_tokens/mapping.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/semantic_tokens/legend.dart b/pkg/analysis_server/lib/src/lsp/semantic_tokens/legend.dart
index 5106306..1a49ca3 100644
--- a/pkg/analysis_server/lib/src/lsp/semantic_tokens/legend.dart
+++ b/pkg/analysis_server/lib/src/lsp/semantic_tokens/legend.dart
@@ -4,7 +4,7 @@
 
 import 'dart:math' as math;
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/semantic_tokens/mapping.dart';
 import 'package:meta/meta.dart';
diff --git a/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart b/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart
index 68e43fd..5c9b19f 100644
--- a/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart
+++ b/pkg/analysis_server/lib/src/lsp/semantic_tokens/mapping.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 
diff --git a/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart b/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
index 7a67a93..7147ebd 100644
--- a/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
+++ b/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/client_capabilities.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
@@ -138,12 +137,12 @@
   Set<Registration> currentRegistrations = {};
   var _lastRegistrationId = 0;
 
-  final dartFiles = DocumentFilter(language: 'dart', scheme: 'file');
-  final pubspecFile = DocumentFilter(
+  final dartFiles = TextDocumentFilter(language: 'dart', scheme: 'file');
+  final pubspecFile = TextDocumentFilter(
       language: 'yaml', scheme: 'file', pattern: '**/pubspec.yaml');
-  final analysisOptionsFile = DocumentFilter(
+  final analysisOptionsFile = TextDocumentFilter(
       language: 'yaml', scheme: 'file', pattern: '**/analysis_options.yaml');
-  final fixDataFile = DocumentFilter(
+  final fixDataFile = TextDocumentFilter(
       language: 'yaml', scheme: 'file', pattern: '**/lib/fix_data.yaml');
 
   ServerCapabilitiesComputer(this._server);
@@ -168,7 +167,7 @@
     return ServerCapabilities(
       textDocumentSync: dynamicRegistrations.textSync
           ? null
-          : Either2<TextDocumentSyncOptions, TextDocumentSyncKind>.t1(
+          : Either2<TextDocumentSyncKind, TextDocumentSyncOptions>.t2(
               TextDocumentSyncOptions(
               // The open/close and sync kind flags are registered dynamically if the
               // client supports them, so these static registrations are based on whether
@@ -280,7 +279,7 @@
       workspace: ServerCapabilitiesWorkspace(
         workspaceFolders: WorkspaceFoldersServerCapabilities(
           supported: true,
-          changeNotifications: Either2<String, bool>.t2(true),
+          changeNotifications: Either2<bool, String>.t1(true),
         ),
         fileOperations: dynamicRegistrations.fileOperations
             ? null
@@ -304,7 +303,7 @@
         // All published plugins use something like `*.extension` as
         // interestingFiles. Prefix a `**/` so that the glob matches nested
         // folders as well.
-        .map((glob) => DocumentFilter(scheme: 'file', pattern: '**/$glob'));
+        .map((glob) => TextDocumentFilter(scheme: 'file', pattern: '**/$glob'));
     final pluginTypesExcludingDart =
         pluginTypes.where((filter) => filter.pattern != '**/*.dart');
 
diff --git a/pkg/analysis_server/lib/src/lsp/source_edits.dart b/pkg/analysis_server/lib/src/lsp/source_edits.dart
index 1e2b464..e41855e 100644
--- a/pkg/analysis_server/lib/src/lsp/source_edits.dart
+++ b/pkg/analysis_server/lib/src/lsp/source_edits.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/mapping.dart';
 import 'package:analysis_server/src/protocol_server.dart' as server
     show SourceEdit;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/fuzzy_filter_sort.dart b/pkg/analysis_server/lib/src/services/completion/dart/fuzzy_filter_sort.dart
index 69e49fe..1fbda62 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/fuzzy_filter_sort.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/fuzzy_filter_sort.dart
@@ -17,7 +17,7 @@
   var matcher = FuzzyMatcher(pattern, matchStyle: MatchStyle.SYMBOL);
 
   double score(CompletionSuggestionBuilder suggestion) {
-    var textToMatch = suggestion.completion;
+    var textToMatch = suggestion.textToMatch;
 
     if (suggestion.kind == CompletionSuggestionKind.KEYWORD ||
         suggestion.kind == CompletionSuggestionKind.NAMED_ARGUMENT) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index 74c2841..53e5e32 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -41,6 +41,9 @@
   /// See [CompletionSuggestion.relevance].
   int get relevance;
 
+  /// Return the text that should be matched against the filter.
+  String get textToMatch;
+
   CompletionSuggestion build();
 }
 
@@ -82,6 +85,9 @@
   }
 
   @override
+  String get textToMatch => completion;
+
+  @override
   CompletionSuggestion build() {
     return CompletionSuggestion(
       kind,
@@ -966,7 +972,10 @@
         displayText: displayText);
     suggestion.element = protocol.convertElement(element,
         withNullability: _isNonNullableByDefault);
-    _addSuggestion(suggestion);
+    _addSuggestion(
+      suggestion,
+      textToMatchOverride: element.displayName,
+    );
   }
 
   /// Add a suggestion for a [parameter].
@@ -1177,9 +1186,15 @@
 
   /// Add the given [suggestion] if it isn't shadowed by a previously added
   /// suggestion.
-  void _addSuggestion(protocol.CompletionSuggestion suggestion) {
+  void _addSuggestion(
+    protocol.CompletionSuggestion suggestion, {
+    String? textToMatchOverride,
+  }) {
     _addBuilder(
-      ValueCompletionSuggestionBuilder(suggestion),
+      ValueCompletionSuggestionBuilder(
+        suggestion,
+        textToMatchOverride: textToMatchOverride,
+      ),
     );
   }
 
@@ -1523,8 +1538,12 @@
 /// [CompletionSuggestionBuilder] that is based on a [CompletionSuggestion].
 class ValueCompletionSuggestionBuilder implements CompletionSuggestionBuilder {
   final CompletionSuggestion _suggestion;
+  final String? _textToMatchOverride;
 
-  ValueCompletionSuggestionBuilder(this._suggestion);
+  ValueCompletionSuggestionBuilder(
+    this._suggestion, {
+    String? textToMatchOverride,
+  }) : _textToMatchOverride = textToMatchOverride;
 
   @override
   String get completion => _suggestion.completion;
@@ -1539,6 +1558,9 @@
   int get relevance => _suggestion.relevance;
 
   @override
+  String get textToMatch => _textToMatchOverride ?? completion;
+
+  @override
   CompletionSuggestion build() {
     return _suggestion;
   }
diff --git a/pkg/analysis_server/test/integration/lsp_server/initialization_test.dart b/pkg/analysis_server/test/integration/lsp_server/initialization_test.dart
index 214cf6f..43dfdd4 100644
--- a/pkg/analysis_server/test/integration/lsp_server/initialization_test.dart
+++ b/pkg/analysis_server/test/integration/lsp_server/initialization_test.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart b/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart
index 2f6f70b..7d0ab6c 100644
--- a/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart
+++ b/pkg/analysis_server/test/integration/lsp_server/integration_tests.dart
@@ -5,7 +5,7 @@
 import 'dart:async';
 import 'dart:io';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/channel/lsp_byte_stream_channel.dart';
 import 'package:analysis_server/src/services/pub/pub_command.dart';
 import 'package:analyzer/instrumentation/instrumentation.dart';
diff --git a/pkg/analysis_server/test/lsp/analyzer_status_test.dart b/pkg/analysis_server/test/lsp/analyzer_status_test.dart
index b7c9b792..aed95e7 100644
--- a/pkg/analysis_server/test/lsp/analyzer_status_test.dart
+++ b/pkg/analysis_server/test/lsp/analyzer_status_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -33,7 +33,7 @@
 abstract class AnalyzerStatusTest extends AbstractLspAnalysisServerTest {
   bool get progressSupport;
 
-  ClientCapabilitiesWindow get _windowCapabilities => progressSupport
+  WindowClientCapabilities get _windowCapabilities => progressSupport
       ? withWorkDoneProgressSupport(emptyWindowClientCapabilities)
       : emptyWindowClientCapabilities;
 
diff --git a/pkg/analysis_server/test/lsp/cancel_request_test.dart b/pkg/analysis_server/test/lsp/cancel_request_test.dart
index f967928..0101b06 100644
--- a/pkg/analysis_server/test/lsp/cancel_request_test.dart
+++ b/pkg/analysis_server/test/lsp/cancel_request_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/code_actions_abstract.dart b/pkg/analysis_server/test/lsp/code_actions_abstract.dart
index cd29ba9..4eef36f 100644
--- a/pkg/analysis_server/test/lsp/code_actions_abstract.dart
+++ b/pkg/analysis_server/test/lsp/code_actions_abstract.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:collection/collection.dart';
 import 'package:test/test.dart';
 
diff --git a/pkg/analysis_server/test/lsp/code_actions_assists_test.dart b/pkg/analysis_server/test/lsp/code_actions_assists_test.dart
index 21685a5..ad18e28 100644
--- a/pkg/analysis_server/test/lsp/code_actions_assists_test.dart
+++ b/pkg/analysis_server/test/lsp/code_actions_assists_test.dart
@@ -4,9 +4,7 @@
 
 import 'dart:convert';
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
 import 'package:collection/collection.dart';
@@ -132,6 +130,9 @@
         "textDocument": {
           "uri": "${mainFileUri.toString()}"
         },
+        "context": {
+          "diagnostics": []
+        },
         "range": {
           "start": {
             "line": 3,
@@ -392,8 +393,8 @@
     final textEdits = _extractTextDocumentEdits(edit.documentChanges!)
         .expand((tde) => tde.edits)
         .map((edit) => edit.map(
-              (e) => e,
               (e) => throw 'Expected SnippetTextEdit, got AnnotatedTextEdit',
+              (e) => e,
               (e) => throw 'Expected SnippetTextEdit, got TextEdit',
             ))
         .toList();
@@ -537,8 +538,8 @@
     final textEdits = _extractTextDocumentEdits(edit.documentChanges!)
         .expand((tde) => tde.edits)
         .map((edit) => edit.map(
-              (e) => e,
               (e) => throw 'Expected SnippetTextEdit, got AnnotatedTextEdit',
+              (e) => e,
               (e) => throw 'Expected SnippetTextEdit, got TextEdit',
             ))
         .toList();
@@ -548,26 +549,26 @@
 
   List<TextDocumentEdit> _extractTextDocumentEdits(
           Either2<
-                  List<TextDocumentEdit>,
                   List<
-                      Either4<TextDocumentEdit, CreateFile, RenameFile,
-                          DeleteFile>>>
+                      Either4<CreateFile, DeleteFile, RenameFile,
+                          TextDocumentEdit>>,
+                  List<TextDocumentEdit>>
               documentChanges) =>
       documentChanges.map(
-        // Already TextDocumentEdits
-        (edits) => edits,
         // Extract TextDocumentEdits from union of resource changes
         (changes) => changes
             .map(
               (change) => change.map(
-                (textDocEdit) => textDocEdit,
                 (create) => null,
-                (rename) => null,
                 (delete) => null,
+                (rename) => null,
+                (textDocEdit) => textDocEdit,
               ),
             )
             .whereNotNull()
             .toList(),
+        // Already TextDocumentEdits
+        (edits) => edits,
       );
 }
 
diff --git a/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart b/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart
index 72ff233..d058b29 100644
--- a/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart
+++ b/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
 import 'package:linter/src/rules.dart';
diff --git a/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart b/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart
index 824d782..4fb647d 100644
--- a/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart
+++ b/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/json_parsing.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/lsp/code_actions_source_test.dart b/pkg/analysis_server/test/lsp/code_actions_source_test.dart
index 172c10f..0c364d5 100644
--- a/pkg/analysis_server/test/lsp/code_actions_source_test.dart
+++ b/pkg/analysis_server/test/lsp/code_actions_source_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:linter/src/rules.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/lsp/completion.dart b/pkg/analysis_server/test/lsp/completion.dart
index ea8d26b..6454ee9 100644
--- a/pkg/analysis_server/test/lsp/completion.dart
+++ b/pkg/analysis_server/test/lsp/completion.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 
 import 'server_abstract.dart';
diff --git a/pkg/analysis_server/test/lsp/completion_dart_test.dart b/pkg/analysis_server/test/lsp/completion_dart_test.dart
index 1ae1b51..40f2f70 100644
--- a/pkg/analysis_server/test/lsp/completion_dart_test.dart
+++ b/pkg/analysis_server/test/lsp/completion_dart_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
 import 'package:analysis_server/src/services/snippets/dart/dart_snippet_producers.dart';
diff --git a/pkg/analysis_server/test/lsp/configuration_test.dart b/pkg/analysis_server/test/lsp/configuration_test.dart
index a1bb699..c4d5b12 100644
--- a/pkg/analysis_server/test/lsp/configuration_test.dart
+++ b/pkg/analysis_server/test/lsp/configuration_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/definition_test.dart b/pkg/analysis_server/test/lsp/definition_test.dart
index 3eca8f3..6f574ca 100644
--- a/pkg/analysis_server/test/lsp/definition_test.dart
+++ b/pkg/analysis_server/test/lsp/definition_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart' as lsp;
+import 'package:analysis_server/lsp_protocol/protocol.dart' as lsp;
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/lsp/diagnostic_test.dart b/pkg/analysis_server/test/lsp/diagnostic_test.dart
index 553b8fe..a825b00 100644
--- a/pkg/analysis_server/test/lsp/diagnostic_test.dart
+++ b/pkg/analysis_server/test/lsp/diagnostic_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
 import 'package:linter/src/rules.dart';
diff --git a/pkg/analysis_server/test/lsp/document_changes_test.dart b/pkg/analysis_server/test/lsp/document_changes_test.dart
index ebdb22b..db37854 100644
--- a/pkg/analysis_server/test/lsp/document_changes_test.dart
+++ b/pkg/analysis_server/test/lsp/document_changes_test.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/protocol/protocol_internal.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Position;
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/lsp/document_color_test.dart b/pkg/analysis_server/test/lsp/document_color_test.dart
index 2bb92a0..5e3a80d 100644
--- a/pkg/analysis_server/test/lsp/document_color_test.dart
+++ b/pkg/analysis_server/test/lsp/document_color_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/document_highlights_test.dart b/pkg/analysis_server/test/lsp/document_highlights_test.dart
index d8df6ac..300b61e 100644
--- a/pkg/analysis_server/test/lsp/document_highlights_test.dart
+++ b/pkg/analysis_server/test/lsp/document_highlights_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/lsp/document_symbols_test.dart b/pkg/analysis_server/test/lsp/document_symbols_test.dart
index 43b129b..a64a535 100644
--- a/pkg/analysis_server/test/lsp/document_symbols_test.dart
+++ b/pkg/analysis_server/test/lsp/document_symbols_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/lsp/file_modification_test.dart b/pkg/analysis_server/test/lsp/file_modification_test.dart
index 10c4323..b4fc00a 100644
--- a/pkg/analysis_server/test/lsp/file_modification_test.dart
+++ b/pkg/analysis_server/test/lsp/file_modification_test.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/flutter_outline_test.dart b/pkg/analysis_server/test/lsp/flutter_outline_test.dart
index 2059de5..c400feb 100644
--- a/pkg/analysis_server/test/lsp/flutter_outline_test.dart
+++ b/pkg/analysis_server/test/lsp/flutter_outline_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/folding_test.dart b/pkg/analysis_server/test/lsp/folding_test.dart
index 7f17866a8..ecb3690 100644
--- a/pkg/analysis_server/test/lsp/folding_test.dart
+++ b/pkg/analysis_server/test/lsp/folding_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/lsp/format_test.dart b/pkg/analysis_server/test/lsp/format_test.dart
index 69932f3..238d141 100644
--- a/pkg/analysis_server/test/lsp/format_test.dart
+++ b/pkg/analysis_server/test/lsp/format_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/lsp/hover_test.dart b/pkg/analysis_server/test/lsp/hover_test.dart
index 9c06937..a20f335 100644
--- a/pkg/analysis_server/test/lsp/hover_test.dart
+++ b/pkg/analysis_server/test/lsp/hover_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -350,15 +350,15 @@
 
   MarkupContent _getMarkupContents(Hover hover) {
     return hover.contents.map(
-      (t1) => throw 'Hover contents were String, not MarkupContent',
-      (t2) => t2,
+      (t1) => t1,
+      (t2) => throw 'Hover contents were String, not MarkupContent',
     );
   }
 
   String _getStringContents(Hover hover) {
     return hover.contents.map(
-      (t1) => t1,
-      (t2) => throw 'Hover contents were MarkupContent, not String',
+      (t1) => throw 'Hover contents were MarkupContent, not String',
+      (t2) => t2,
     );
   }
 }
diff --git a/pkg/analysis_server/test/lsp/implementation_test.dart b/pkg/analysis_server/test/lsp/implementation_test.dart
index ace85a3..75ebbd0 100644
--- a/pkg/analysis_server/test/lsp/implementation_test.dart
+++ b/pkg/analysis_server/test/lsp/implementation_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/initialization_test.dart b/pkg/analysis_server/test/lsp/initialization_test.dart
index 94d60fa..a70a2db 100644
--- a/pkg/analysis_server/test/lsp/initialization_test.dart
+++ b/pkg/analysis_server/test/lsp/initialization_test.dart
@@ -4,8 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/json_parsing.dart';
 import 'package:analysis_server/src/lsp/server_capabilities_computer.dart';
@@ -321,12 +320,12 @@
     // request text document open/close and incremental updates.
     expect(initResult.capabilities.textDocumentSync, isNotNull);
     initResult.capabilities.textDocumentSync!.map(
+      (_) =>
+          throw 'Expected textDocumentSync capabilities to be a TextDocumentSyncOptions',
       (options) {
         expect(options.openClose, isTrue);
         expect(options.change, equals(TextDocumentSyncKind.Incremental));
       },
-      (_) =>
-          throw 'Expected textDocumentSync capabilities to be a $TextDocumentSyncOptions',
     );
     expect(initResult.capabilities.completionProvider, isNotNull);
     expect(initResult.capabilities.hoverProvider, isNotNull);
@@ -492,8 +491,9 @@
             .registrations;
 
     final documentFilterSql =
-        DocumentFilter(scheme: 'file', pattern: '**/*.sql');
-    final documentFilterDart = DocumentFilter(language: 'dart', scheme: 'file');
+        TextDocumentFilter(scheme: 'file', pattern: '**/*.sql');
+    final documentFilterDart =
+        TextDocumentFilter(language: 'dart', scheme: 'file');
 
     expect(
       registrations,
@@ -697,13 +697,13 @@
     // Check some basic capabilities that are unlikely to change.
     expect(result.capabilities.textDocumentSync, isNotNull);
     result.capabilities.textDocumentSync!.map(
+      (_) =>
+          throw 'Expected textDocumentSync capabilities to be a TextDocumentSyncOptions',
       (options) {
         // We'll always request open/closed notifications and incremental updates.
         expect(options.openClose, isTrue);
         expect(options.change, equals(TextDocumentSyncKind.Incremental));
       },
-      (_) =>
-          throw 'Expected textDocumentSync capabilities to be a $TextDocumentSyncOptions',
     );
   }
 
diff --git a/pkg/analysis_server/test/lsp/mapping_test.dart b/pkg/analysis_server/test/lsp/mapping_test.dart
index 196b547..46d86bf 100644
--- a/pkg/analysis_server/test/lsp/mapping_test.dart
+++ b/pkg/analysis_server/test/lsp/mapping_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart' as lsp;
+import 'package:analysis_server/lsp_protocol/protocol.dart' as lsp;
 import 'package:analysis_server/src/lsp/mapping.dart' as lsp;
 import 'package:analysis_server/src/protocol_server.dart' as server;
 import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/lsp/outline_test.dart b/pkg/analysis_server/test/lsp/outline_test.dart
index 4310ec9..7c630a2 100644
--- a/pkg/analysis_server/test/lsp/outline_test.dart
+++ b/pkg/analysis_server/test/lsp/outline_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/reanalyze_test.dart b/pkg/analysis_server/test/lsp/reanalyze_test.dart
index ca2de91..5d4c5c2 100644
--- a/pkg/analysis_server/test/lsp/reanalyze_test.dart
+++ b/pkg/analysis_server/test/lsp/reanalyze_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'server_abstract.dart';
diff --git a/pkg/analysis_server/test/lsp/references_test.dart b/pkg/analysis_server/test/lsp/references_test.dart
index 36c52bf..47bdd84 100644
--- a/pkg/analysis_server/test/lsp/references_test.dart
+++ b/pkg/analysis_server/test/lsp/references_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/rename_test.dart b/pkg/analysis_server/test/lsp/rename_test.dart
index ce69a25..ab9bf56 100644
--- a/pkg/analysis_server/test/lsp/rename_test.dart
+++ b/pkg/analysis_server/test/lsp/rename_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -719,7 +719,7 @@
     String? filePath,
     String? expectedFilePath,
     bool sendRenameVersion = true,
-    ClientCapabilitiesWorkspace? workspaceCapabilities,
+    WorkspaceClientCapabilities? workspaceCapabilities,
     Map<String, String>? contents,
   }) async {
     contents ??= {};
diff --git a/pkg/analysis_server/test/lsp/selection_range_test.dart b/pkg/analysis_server/test/lsp/selection_range_test.dart
index 2a4da46..74fb0b0 100644
--- a/pkg/analysis_server/test/lsp/selection_range_test.dart
+++ b/pkg/analysis_server/test/lsp/selection_range_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analyzer/source/line_info.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/lsp/semantic_tokens_test.dart b/pkg/analysis_server/test/lsp/semantic_tokens_test.dart
index 696b750..1acfef1 100644
--- a/pkg/analysis_server/test/lsp/semantic_tokens_test.dart
+++ b/pkg/analysis_server/test/lsp/semantic_tokens_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/semantic_tokens/legend.dart';
 import 'package:analysis_server/src/protocol/protocol_internal.dart';
diff --git a/pkg/analysis_server/test/lsp/server_abstract.dart b/pkg/analysis_server/test/lsp/server_abstract.dart
index 5c61998..273369b 100644
--- a/pkg/analysis_server/test/lsp/server_abstract.dart
+++ b/pkg/analysis_server/test/lsp/server_abstract.dart
@@ -4,9 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_custom_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/analysis_server.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:analysis_server/src/lsp/json_parsing.dart';
@@ -229,9 +227,9 @@
 mixin ClientCapabilitiesHelperMixin {
   final emptyTextDocumentClientCapabilities = TextDocumentClientCapabilities();
 
-  final emptyWorkspaceClientCapabilities = ClientCapabilitiesWorkspace();
+  final emptyWorkspaceClientCapabilities = WorkspaceClientCapabilities();
 
-  final emptyWindowClientCapabilities = ClientCapabilitiesWindow();
+  final emptyWindowClientCapabilities = WindowClientCapabilities();
 
   TextDocumentClientCapabilities extendTextDocumentCapabilities(
     TextDocumentClientCapabilities source,
@@ -242,22 +240,22 @@
     return TextDocumentClientCapabilities.fromJson(json);
   }
 
-  ClientCapabilitiesWindow extendWindowCapabilities(
-    ClientCapabilitiesWindow source,
+  WindowClientCapabilities extendWindowCapabilities(
+    WindowClientCapabilities source,
     Map<String, dynamic> windowCapabilities,
   ) {
     final json = source.toJson();
     mergeJson(windowCapabilities, json);
-    return ClientCapabilitiesWindow.fromJson(json);
+    return WindowClientCapabilities.fromJson(json);
   }
 
-  ClientCapabilitiesWorkspace extendWorkspaceCapabilities(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities extendWorkspaceCapabilities(
+    WorkspaceClientCapabilities source,
     Map<String, dynamic> workspaceCapabilities,
   ) {
     final json = source.toJson();
     mergeJson(workspaceCapabilities, json);
-    return ClientCapabilitiesWorkspace.fromJson(json);
+    return WorkspaceClientCapabilities.fromJson(json);
   }
 
   void mergeJson(Map<String, dynamic> source, Map<String, dynamic> dest) {
@@ -308,8 +306,8 @@
     });
   }
 
-  ClientCapabilitiesWorkspace withAllSupportedWorkspaceDynamicRegistrations(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities withAllSupportedWorkspaceDynamicRegistrations(
+    WorkspaceClientCapabilities source,
   ) {
     // This list (when combined with the textDocument list) should match all of
     // the fields listed in `ClientDynamicRegistrations.supported`.
@@ -318,8 +316,8 @@
     });
   }
 
-  ClientCapabilitiesWorkspace withApplyEditSupport(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities withApplyEditSupport(
+    WorkspaceClientCapabilities source,
   ) {
     return extendWorkspaceCapabilities(source, {'applyEdit': true});
   }
@@ -409,8 +407,8 @@
     });
   }
 
-  ClientCapabilitiesWorkspace withConfigurationSupport(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities withConfigurationSupport(
+    WorkspaceClientCapabilities source,
   ) {
     return extendWorkspaceCapabilities(source, {'configuration': true});
   }
@@ -436,16 +434,16 @@
     });
   }
 
-  ClientCapabilitiesWorkspace withDidChangeConfigurationDynamicRegistration(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities withDidChangeConfigurationDynamicRegistration(
+    WorkspaceClientCapabilities source,
   ) {
     return extendWorkspaceCapabilities(source, {
       'didChangeConfiguration': {'dynamicRegistration': true}
     });
   }
 
-  ClientCapabilitiesWorkspace withDocumentChangesSupport(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities withDocumentChangesSupport(
+    WorkspaceClientCapabilities source,
   ) {
     return extendWorkspaceCapabilities(source, {
       'workspaceEdit': {'documentChanges': true}
@@ -473,8 +471,8 @@
     });
   }
 
-  ClientCapabilitiesWorkspace withFileOperationDynamicRegistration(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities withFileOperationDynamicRegistration(
+    WorkspaceClientCapabilities source,
   ) {
     return extendWorkspaceCapabilities(source, {
       'fileOperations': {'dynamicRegistration': true}
@@ -516,8 +514,8 @@
     });
   }
 
-  ClientCapabilitiesWorkspace withResourceOperationKinds(
-    ClientCapabilitiesWorkspace source,
+  WorkspaceClientCapabilities withResourceOperationKinds(
+    WorkspaceClientCapabilities source,
     List<ResourceOperationKind> kinds,
   ) {
     return extendWorkspaceCapabilities(source, {
@@ -550,8 +548,8 @@
     });
   }
 
-  ClientCapabilitiesWindow withWorkDoneProgressSupport(
-      ClientCapabilitiesWindow source) {
+  WindowClientCapabilities withWorkDoneProgressSupport(
+      WindowClientCapabilities source) {
     return extendWindowCapabilities(source, {'workDoneProgress': true});
   }
 }
@@ -686,8 +684,8 @@
 
   void applyDocumentChanges(
     Map<String, String> fileContents,
-    Either2<List<TextDocumentEdit>,
-            List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>
+    Either2<List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>,
+            List<TextDocumentEdit>>
         documentChanges, {
     Map<String, int>? expectedVersions,
   }) {
@@ -697,21 +695,21 @@
       expectDocumentVersions(documentChanges, expectedVersions);
     }
     documentChanges.map(
-      (edits) => applyTextDocumentEdits(fileContents, edits),
       (changes) => applyResourceChanges(fileContents, changes),
+      (edits) => applyTextDocumentEdits(fileContents, edits),
     );
   }
 
   void applyResourceChanges(
     Map<String, String> oldFileContent,
-    List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>> changes,
+    List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>> changes,
   ) {
     for (final change in changes) {
       change.map(
-        (textDocEdit) => applyTextDocumentEdits(oldFileContent, [textDocEdit]),
         (create) => applyResourceCreate(oldFileContent, create),
-        (rename) => applyResourceRename(oldFileContent, rename),
         (delete) => throw 'applyResourceChanges:Delete not currently supported',
+        (rename) => applyResourceRename(oldFileContent, rename),
+        (textDocEdit) => applyTextDocumentEdits(oldFileContent, [textDocEdit]),
       );
     }
   }
@@ -753,7 +751,7 @@
   }
 
   String applyTextEdit(String content,
-      Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit> change) {
+      Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit> change) {
     // Both sites of the union can cast to TextEdit.
     final edit = change.map((e) => e, (e) => e, (e) => e);
     final startPos = edit.range.start;
@@ -817,7 +815,7 @@
 
     for (final change in sortedChanges) {
       newContent = applyTextEdit(newContent,
-          Either3<SnippetTextEdit, AnnotatedTextEdit, TextEdit>.t3(change));
+          Either3<AnnotatedTextEdit, SnippetTextEdit, TextEdit>.t3(change));
     }
 
     return newContent;
@@ -906,30 +904,30 @@
   /// Validates the document versions for a set of edits match the versions in
   /// the supplied map.
   void expectDocumentVersions(
-    Either2<List<TextDocumentEdit>,
-            List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>
+    Either2<List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>,
+            List<TextDocumentEdit>>
         documentChanges,
     Map<String, int> expectedVersions,
   ) {
     documentChanges.map(
-      // Validate versions on simple doc edits
-      (edits) {
-        for (var edit in edits) {
-          expectDocumentVersion(edit, expectedVersions);
-        }
-      },
       // For resource changes, we only need to validate changes since
       // creates/renames/deletes do not supply versions.
       (changes) {
         for (var change in changes) {
           change.map(
-            (edit) => expectDocumentVersion(edit, expectedVersions),
             (create) => {},
-            (rename) {},
             (delete) {},
+            (rename) {},
+            (edit) => expectDocumentVersion(edit, expectedVersions),
           );
         }
       },
+      // Validate versions on simple doc edits
+      (edits) {
+        for (var edit in edits) {
+          expectDocumentVersion(edit, expectedVersions);
+        }
+      },
     );
   }
 
@@ -1412,8 +1410,8 @@
     Uri? rootUri,
     List<Uri>? workspaceFolders,
     TextDocumentClientCapabilities? textDocumentCapabilities,
-    ClientCapabilitiesWorkspace? workspaceCapabilities,
-    ClientCapabilitiesWindow? windowCapabilities,
+    WorkspaceClientCapabilities? workspaceCapabilities,
+    WindowClientCapabilities? windowCapabilities,
     Map<String, Object?>? experimentalCapabilities,
     Map<String, Object?>? initializationOptions,
     bool throwOnFailure = true,
@@ -1785,22 +1783,22 @@
   }
 
   /// Creates a [TextEdit] using the `insert` range of a [InsertReplaceEdit].
-  TextEdit textEditForInsert(Either2<TextEdit, InsertReplaceEdit> edit) =>
+  TextEdit textEditForInsert(Either2<InsertReplaceEdit, TextEdit> edit) =>
       edit.map(
-        (_) => throw 'Expected InsertReplaceEdit, got TextEdit',
         (e) => TextEdit(range: e.insert, newText: e.newText),
+        (_) => throw 'Expected InsertReplaceEdit, got TextEdit',
       );
 
   /// Creates a [TextEdit] using the `replace` range of a [InsertReplaceEdit].
-  TextEdit textEditForReplace(Either2<TextEdit, InsertReplaceEdit> edit) =>
+  TextEdit textEditForReplace(Either2<InsertReplaceEdit, TextEdit> edit) =>
       edit.map(
-        (_) => throw 'Expected InsertReplaceEdit, got TextEdit',
         (e) => TextEdit(range: e.replace, newText: e.newText),
+        (_) => throw 'Expected InsertReplaceEdit, got TextEdit',
       );
 
-  TextEdit toTextEdit(Either2<TextEdit, InsertReplaceEdit> edit) => edit.map(
-        (e) => e,
+  TextEdit toTextEdit(Either2<InsertReplaceEdit, TextEdit> edit) => edit.map(
         (_) => throw 'Expected TextEdit, got InsertReplaceEdit',
+        (e) => e,
       );
 
   WorkspaceFolder toWorkspaceFolder(Uri uri) {
diff --git a/pkg/analysis_server/test/lsp/server_test.dart b/pkg/analysis_server/test/lsp/server_test.dart
index ec72020..b29f98e 100644
--- a/pkg/analysis_server/test/lsp/server_test.dart
+++ b/pkg/analysis_server/test/lsp/server_test.dart
@@ -4,8 +4,7 @@
 
 import 'dart:io';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/constants.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/lsp/signature_help_test.dart b/pkg/analysis_server/test/lsp/signature_help_test.dart
index d5add03..f7559fe 100644
--- a/pkg/analysis_server/test/lsp/signature_help_test.dart
+++ b/pkg/analysis_server/test/lsp/signature_help_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/super_test.dart b/pkg/analysis_server/test/lsp/super_test.dart
index b9192d9..e0609c4 100644
--- a/pkg/analysis_server/test/lsp/super_test.dart
+++ b/pkg/analysis_server/test/lsp/super_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/type_definition_test.dart b/pkg/analysis_server/test/lsp/type_definition_test.dart
index c2ad165..8d78416 100644
--- a/pkg/analysis_server/test/lsp/type_definition_test.dart
+++ b/pkg/analysis_server/test/lsp/type_definition_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/will_rename_files_test.dart b/pkg/analysis_server/test/lsp/will_rename_files_test.dart
index 9d88945..85688d2 100644
--- a/pkg/analysis_server/test/lsp/will_rename_files_test.dart
+++ b/pkg/analysis_server/test/lsp/will_rename_files_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:async';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/lsp/workspace_symbols_test.dart b/pkg/analysis_server/test/lsp/workspace_symbols_test.dart
index c617811..1bda682 100644
--- a/pkg/analysis_server/test/lsp/workspace_symbols_test.dart
+++ b/pkg/analysis_server/test/lsp/workspace_symbols_test.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/app_bar.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/app_bar.dart
index 2b447a3..f10cddf 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/app_bar.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/app_bar.dart
@@ -6,7 +6,7 @@
 
 class AppBar extends StatefulWidget {
   AppBar({
-    Key key,
+    Key? key,
     title,
     backgroundColor,
   });
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/scaffold.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/scaffold.dart
index 181ae90..fecb5da 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/scaffold.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/material/scaffold.dart
@@ -6,7 +6,7 @@
 
 class Scaffold extends StatefulWidget {
   const Scaffold({
-    Key key,
+    Key? key,
     Widget body,
   });
 }
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/async.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/async.dart
index f5b17e0..826aa7d 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/async.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/async.dart
@@ -10,8 +10,8 @@
 class AsyncSnapshot<T> {}
 
 class StreamBuilder<T> {
-  final T initialData;
+  final T? initialData;
   final AsyncWidgetBuilder<T> builder;
   const StreamBuilder(
-      {Key key, this.initialData, Stream<T> stream, @required this.builder});
+      {Key? key, this.initialData, Stream<T>? stream, @required this.builder});
 }
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/basic.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/basic.dart
index 020e8fd..83eb5d0 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/basic.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/basic.dart
@@ -32,22 +32,22 @@
   /// If non-null, sets its width to the child's width multiplied by this factor.
   ///
   /// Can be both greater and less than 1.0 but must be positive.
-  final double widthFactor;
+  final double? widthFactor;
 
   /// If non-null, sets its height to the child's height multiplied by this factor.
   ///
   /// Can be both greater and less than 1.0 but must be positive.
-  final double heightFactor;
+  final double? heightFactor;
 
   /// Creates an alignment widget.
   ///
   /// The alignment defaults to [Alignment.center].
   const Align({
-    Key key,
+    Key? key,
     this.alignment = Alignment.center,
     this.widthFactor,
     this.heightFactor,
-    Widget child,
+    Widget? child,
   })  : assert(alignment != null),
         assert(widthFactor == null || widthFactor >= 0.0),
         assert(heightFactor == null || heightFactor >= 0.0),
@@ -56,50 +56,51 @@
 
 class AspectRatio extends SingleChildRenderObjectWidget {
   const AspectRatio({
-    Key key,
+    Key? key,
     @required double aspectRatio,
-    Widget child,
+    Widget? child,
   });
 }
 
 class Center extends StatelessWidget {
-  const Center({Key key, double heightFactor, Widget child});
+  const Center({Key? key, double? heightFactor, Widget? child});
 }
 
 class SizedBox extends SingleChildRenderObjectWidget {
-  const SizedBox({Key key, this.width, this.height, Widget child})
+  const SizedBox({Key? key, this.width, this.height, Widget? child})
       : super(key: key, child: child);
 
-  const SizedBox.expand({Key key, Widget child})
+  const SizedBox.expand({Key? key, Widget? child})
       : width = double.infinity,
         height = double.infinity,
         super(key: key, child: child);
 
-  const SizedBox.shrink({Key key, Widget child})
+  const SizedBox.shrink({Key? key, Widget? child})
       : width = 0.0,
         height = 0.0,
         super(key: key, child: child);
 
-  SizedBox.fromSize({Key key, Widget child, Size size})
+  SizedBox.fromSize({Key? key, Widget? child, Size? size})
       : width = size?.width,
         height = size?.height,
         super(key: key, child: child);
 
-  final double width;
+  final double? width;
 
-  final double height;
+  final double? height;
 }
 
 class ClipRect extends SingleChildRenderObjectWidget {
-  const ClipRect({Key key, Widget child}) : super(key: key, child: child);
+  const ClipRect({Key? key, Widget? child}) : super(key: key, child: child);
 
   /// Does not actually exist in Flutter.
-  const ClipRect.rect({Key key, Widget child}) : super(key: key, child: child);
+  const ClipRect.rect({Key? key, Widget? child})
+      : super(key: key, child: child);
 }
 
 class Column extends Flex {
   Column({
-    Key key,
+    Key? key,
     MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
     MainAxisSize mainAxisSize = MainAxisSize.max,
     CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
@@ -112,7 +113,7 @@
 
 class Expanded extends StatelessWidget {
   const Expanded({
-    Key key,
+    Key? key,
     int flex = 1,
     @required Widget child,
   });
@@ -120,7 +121,7 @@
 
 class Flex extends Widget {
   Flex({
-    Key key,
+    Key? key,
     List<Widget> children = const <Widget>[],
   });
 }
@@ -129,15 +130,15 @@
   final EdgeInsetsGeometry padding;
 
   const Padding({
-    Key key,
+    Key? key,
     @required this.padding,
-    Widget child,
+    Widget? child,
   });
 }
 
 class Row extends Flex {
   Row({
-    Key key,
+    Key? key,
     MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
     MainAxisSize mainAxisSize = MainAxisSize.max,
     CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
@@ -150,12 +151,12 @@
 
 class Transform extends SingleChildRenderObjectWidget {
   const Transform({
-    Key key,
+    Key? key,
     @required transform,
     origin,
     alignment,
     transformHitTests = true,
-    Widget child,
+    Widget? child,
   });
 }
 
@@ -163,5 +164,5 @@
 
 class Builder {
   final WidgetBuilder builder;
-  const Builder({Key key, @required this.builder});
+  const Builder({Key? key, @required this.builder});
 }
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/container.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/container.dart
index ede265b..0b91346 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/container.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/container.dart
@@ -7,7 +7,7 @@
 import 'framework.dart';
 
 class Container extends StatelessWidget {
-  final Widget child;
+  final Widget? child;
 
   /// Align the [child] within the container.
   ///
@@ -23,14 +23,14 @@
   ///    specify an [AlignmentGeometry].
   ///  * [AlignmentDirectional], like [Alignment] for specifying alignments
   ///    relative to text direction.
-  final AlignmentGeometry alignment;
+  final AlignmentGeometry? alignment;
 
   /// Empty space to inscribe inside the [decoration]. The [child], if any, is
   /// placed inside this padding.
   ///
   /// This padding is in addition to any padding inherent in the [decoration];
   /// see [Decoration.padding].
-  final EdgeInsetsGeometry padding;
+  final EdgeInsetsGeometry? padding;
 
   /// The decoration to paint behind the [child].
   ///
@@ -40,23 +40,23 @@
   ///
   /// The [child] is not clipped to the decoration. To clip a child to the shape
   /// of a particular [ShapeDecoration], consider using a [ClipPath] widget.
-  final Decoration decoration;
+  final Decoration? decoration;
 
   /// The decoration to paint in front of the [child].
-  final Decoration foregroundDecoration;
+  final Decoration? foregroundDecoration;
 
   /// Empty space to surround the [decoration] and [child].
-  final EdgeInsetsGeometry margin;
+  final EdgeInsetsGeometry? margin;
 
   Container({
-    Key key,
+    Key? key,
     this.alignment,
     this.padding,
-    Color color,
-    Decoration decoration,
+    Color? color,
+    Decoration? decoration,
     this.foregroundDecoration,
-    double width,
-    double height,
+    double? width,
+    double? height,
     this.margin,
     this.child,
   })  : decoration = decoration,
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart
index bbe243f..587cdf7 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/framework.dart
@@ -14,13 +14,13 @@
 }
 
 abstract class RenderObjectWidget extends Widget {
-  const RenderObjectWidget({Key key}) : super(key: key);
+  const RenderObjectWidget({Key? key}) : super(key: key);
 }
 
 abstract class SingleChildRenderObjectWidget extends RenderObjectWidget {
-  final Widget child;
+  final Widget? child;
 
-  const SingleChildRenderObjectWidget({Key key, this.child}) : super(key: key);
+  const SingleChildRenderObjectWidget({Key? key, this.child}) : super(key: key);
 }
 
 abstract class State<T extends StatefulWidget> {
@@ -36,19 +36,19 @@
 }
 
 abstract class StatefulWidget extends Widget {
-  const StatefulWidget({Key key}) : super(key: key);
+  const StatefulWidget({Key? key}) : super(key: key);
 
   State createState() => null;
 }
 
 abstract class StatelessWidget extends Widget {
-  const StatelessWidget({Key key}) : super(key: key);
+  const StatelessWidget({Key? key}) : super(key: key);
 
   Widget build(BuildContext context) => null;
 }
 
 class Widget extends DiagnosticableTree {
-  final Key key;
+  final Key? key;
 
   const Widget({this.key});
 
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/gesture_detector.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/gesture_detector.dart
index 0e20e3d..0371893 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/gesture_detector.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/gesture_detector.dart
@@ -6,8 +6,8 @@
 
 class GestureDetector extends StatelessWidget {
   GestureDetector({
-    Key key,
-    Widget child,
+    Key? key,
+    Widget? child,
     onTap,
   });
 }
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/icon.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/icon.dart
index 53d7a16..0b33913 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/icon.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/icon.dart
@@ -5,17 +5,17 @@
 import 'framework.dart';
 
 class Icon extends StatelessWidget {
-  final IconData icon;
+  final IconData? icon;
 
   const Icon(
     this.icon, {
-    Key key,
+    Key? key,
   }) : super(key: key);
 }
 
 class IconData {
   final int codePoint;
-  final String fontFamily;
+  final String? fontFamily;
 
   const IconData(
     this.codePoint, {
diff --git a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/text.dart b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/text.dart
index a052b28..c7f319e 100644
--- a/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/text.dart
+++ b/pkg/analysis_server/test/mock_packages/flutter/lib/src/widgets/text.dart
@@ -16,17 +16,17 @@
   /// The text to display.
   ///
   /// This will be null if a [textSpan] is provided instead.
-  final String data;
+  final String? data;
 
   /// If non-null, the style to use for this text.
   ///
   /// If the style's "inherit" property is true, the style will be merged with
   /// the closest enclosing [DefaultTextStyle]. Otherwise, the style will
   /// replace the closest enclosing [DefaultTextStyle].
-  final TextStyle style;
+  final TextStyle? style;
 
   /// How the text should be aligned horizontally.
-  final TextAlign textAlign;
+  final TextAlign? textAlign;
 
   /// The directionality of the text.
   ///
@@ -41,15 +41,15 @@
   /// its left.
   ///
   /// Defaults to the ambient [Directionality], if any.
-  final TextDirection textDirection;
+  final TextDirection? textDirection;
 
   /// Whether the text should break at soft line breaks.
   ///
   /// If false, the glyphs in the text will be positioned as if there was unlimited horizontal space.
-  final bool softWrap;
+  final bool? softWrap;
 
   /// How visual overflow should be handled.
-  final TextOverflow overflow;
+  final TextOverflow? overflow;
 
   /// The number of font pixels for each logical pixel.
   ///
@@ -59,7 +59,7 @@
   /// The value given to the constructor as textScaleFactor. If null, will
   /// use the [MediaQueryData.textScaleFactor] obtained from the ambient
   /// [MediaQuery], or 1.0 if there is no [MediaQuery] in scope.
-  final double textScaleFactor;
+  final double? textScaleFactor;
 
   /// An optional maximum number of lines for the text to span, wrapping if necessary.
   /// If the text exceeds the given number of lines, it will be truncated according
@@ -72,7 +72,7 @@
   /// an explicit number for its [DefaultTextStyle.maxLines], then the
   /// [DefaultTextStyle] value will take precedence. You can use a [RichText]
   /// widget directly to entirely override the [DefaultTextStyle].
-  final int maxLines;
+  final int? maxLines;
 
   /// An alternative semantics label for this text.
   ///
@@ -86,10 +86,10 @@
   /// ```dart
   /// Text(r'$$', semanticsLabel: 'Double dollars')
   /// ```
-  final String semanticsLabel;
+  final String? semanticsLabel;
 
   /// {@macro flutter.dart:ui.text.TextWidthBasis}
-  final TextWidthBasis textWidthBasis;
+  final TextWidthBasis? textWidthBasis;
 
   /// Creates a text widget.
   ///
@@ -99,7 +99,7 @@
   /// The [data] parameter must not be null.
   const Text(
     this.data, {
-    Key key,
+    Key? key,
     this.style,
     this.textAlign,
     this.textDirection,
diff --git a/pkg/analysis_server/test/mocks_lsp.dart b/pkg/analysis_server/test/mocks_lsp.dart
index 45201cc..07358d8 100644
--- a/pkg/analysis_server/test/mocks_lsp.dart
+++ b/pkg/analysis_server/test/mocks_lsp.dart
@@ -5,8 +5,7 @@
 import 'dart:async';
 import 'dart:convert';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart' as lsp;
-import 'package:analysis_server/lsp_protocol/protocol_special.dart' as lsp;
+import 'package:analysis_server/lsp_protocol/protocol.dart' as lsp;
 import 'package:analysis_server/src/lsp/channel/lsp_channel.dart';
 
 const _jsonEncoder = JsonEncoder.withIndent('    ');
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_check.dart b/pkg/analysis_server/test/services/completion/dart/completion_check.dart
index a7094e8..ff98794 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_check.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_check.dart
@@ -154,6 +154,14 @@
   }
 
   @useResult
+  CheckTarget<String?> get displayText {
+    return nest(
+      value.suggestion.displayText,
+      (selected) => 'has displayText ${valueStr(selected)}',
+    );
+  }
+
+  @useResult
   CheckTarget<String?> get docComplete {
     return nest(
       value.suggestion.docComplete,
@@ -402,6 +410,18 @@
   }
 
   @useResult
+  CheckTarget<Iterable<CompletionSuggestionForTesting>> get overrides {
+    var result = value
+        .where((suggestion) =>
+            suggestion.suggestion.kind == CompletionSuggestionKind.OVERRIDE)
+        .toList();
+    return nest(
+      result,
+      (selected) => 'overrides ${valueStr(selected)}',
+    );
+  }
+
+  @useResult
   CheckTarget<Iterable<CompletionSuggestionForTesting>> get withElementClass {
     return nest(
       value.where((e) {
diff --git a/pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart b/pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart
index d473b9f..ca3535f 100644
--- a/pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart
@@ -18,14 +18,14 @@
 
 @reflectiveTest
 class ClassBodyTest1 extends AbstractCompletionDriverTest
-    with ClassBodyTestCases {
+    with ClassBodyTestCases, OverrideTestCases {
   @override
   TestingCompletionProtocol get protocol => TestingCompletionProtocol.version1;
 }
 
 @reflectiveTest
 class ClassBodyTest2 extends AbstractCompletionDriverTest
-    with ClassBodyTestCases {
+    with ClassBodyTestCases, OverrideTestCases {
   @override
   TestingCompletionProtocol get protocol => TestingCompletionProtocol.version2;
 }
@@ -311,6 +311,79 @@
   }
 }
 
+mixin OverrideTestCases on AbstractCompletionDriverTest {
+  Future<void> test_class_method_fromExtends() async {
+    final response = await getTestCodeSuggestions('''
+class A {
+  void foo01() {}
+}
+
+class B extends A {
+  foo^
+}
+''');
+
+    check(response).suggestions.overrides.includesAll([
+      (suggestion) => suggestion
+        ..displayText.isEqualTo('foo01() { … }')
+        ..hasSelection(offset: 60, length: 14)
+        ..completion.isEqualTo(r'''
+@override
+  void foo01() {
+    // TODO: implement foo01
+    super.foo01();
+  }'''),
+    ]);
+  }
+
+  Future<void> test_class_method_fromImplements() async {
+    final response = await getTestCodeSuggestions('''
+class A {
+  void foo01() {}
+}
+
+class B implements A {
+  foo^
+}
+''');
+
+    check(response).suggestions.overrides.includesAll([
+      (suggestion) => suggestion
+        ..displayText.isEqualTo('foo01() { … }')
+        ..hasSelection(offset: 55)
+        ..completion.isEqualTo(r'''
+@override
+  void foo01() {
+    // TODO: implement foo01
+  }'''),
+    ]);
+  }
+
+  Future<void> test_class_method_fromWith() async {
+    final response = await getTestCodeSuggestions('''
+mixin M {
+  void foo01() {}
+}
+
+class A with M {
+  foo^
+}
+''');
+
+    check(response).suggestions.overrides.includesAll([
+      (suggestion) => suggestion
+        ..displayText.isEqualTo('foo01() { … }')
+        ..hasSelection(offset: 60, length: 14)
+        ..completion.isEqualTo(r'''
+@override
+  void foo01() {
+    // TODO: implement foo01
+    super.foo01();
+  }'''),
+    ]);
+  }
+}
+
 class _Context {
   final bool isClass;
   final bool isMixin;
diff --git a/pkg/analysis_server/test/src/cider/document_symbols_test.dart b/pkg/analysis_server/test/src/cider/document_symbols_test.dart
index 7f59ea4..7d25c9e 100644
--- a/pkg/analysis_server/test/src/cider/document_symbols_test.dart
+++ b/pkg/analysis_server/test/src/cider/document_symbols_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/cider/document_symbols.dart';
 import 'package:test/expect.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/src/cider/signature_help_test.dart b/pkg/analysis_server/test/src/cider/signature_help_test.dart
index ca6c2ca..356b1cf 100644
--- a/pkg/analysis_server/test/src/cider/signature_help_test.dart
+++ b/pkg/analysis_server/test/src/cider/signature_help_test.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/cider/signature_help.dart';
 import 'package:analyzer/source/line_info.dart';
 import 'package:collection/collection.dart';
diff --git a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart
index 48dc9e0..7e676fc 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart
@@ -64,10 +64,7 @@
     await assertNoAssist();
   }
 
-  @failingTest
   Future<void> test_inConstantContext() async {
-    // TODO(brianwilkerson) Get this test to pass again. Not clear whether it's
-    //  a problem with the test code or the mock flutter package.
     await resolveTestCode('''
 import 'package:flutter/widgets.dart';
 class FakeFlutter {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart
index cc18b0b..6eabd61 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart
@@ -4,7 +4,6 @@
 
 import 'package:analysis_server/src/services/correction/fix.dart';
 import 'package:analysis_server/src/services/linter/lint_names.dart';
-import 'package:analyzer/src/dart/error/lint_codes.dart';
 import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -211,7 +210,7 @@
 class MyWidget extends A {
   MyWidget({super.key}) : super(text: '');
 }
-''', errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void>
@@ -241,7 +240,7 @@
 class MyWidget extends A {
   MyWidget({super.key}) : super(text: '',);
 }
-''', errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void>
@@ -271,9 +270,7 @@
 class B extends A {
   B({super.key}) : super(const Text(''),);
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_initializer_final_constant() async {
@@ -292,9 +289,7 @@
 
   const MyWidget({super.key});
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_initializer_final_not_constant() async {
@@ -332,9 +327,7 @@
 
   MyWidget({super.key});
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_initializer_not_final_not_constant() async {
@@ -372,9 +365,7 @@
 
   const MyWidget({super.key});
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_super_not_constant() async {
@@ -402,7 +393,7 @@
 class MyWidget extends ParentWidget {
   MyWidget({super.key});
 }
-''', errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 }
 
@@ -452,9 +443,7 @@
 class B extends A {
   B({Key? key}) : super(const Text(''), key: key);
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 }
 
@@ -637,7 +626,7 @@
 class MyWidget extends A {
   MyWidget({Key? key}) : super(key: key, text: '');
 }
-''', errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void>
@@ -667,7 +656,7 @@
 class MyWidget extends A {
   MyWidget({Key? key}) : super(key: key, text: '',);
 }
-''', errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void>
@@ -697,9 +686,7 @@
 class B extends A {
   B({Key? key}) : super(const Text(''), key: key,);
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_initializer_final_constant() async {
@@ -718,9 +705,7 @@
 
   const MyWidget({Key? key}) : super(key: key);
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_initializer_final_not_constant() async {
@@ -758,9 +743,7 @@
 
   MyWidget({Key? key}) : super(key: key);
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_initializer_not_final_not_constant() async {
@@ -798,9 +781,7 @@
 
   const MyWidget({Key? key}) : super(key: key);
 }
-''',
-        //TODO(asashour) there should be no other errors
-        errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 
   Future<void> test_super_not_constant() async {
@@ -828,6 +809,6 @@
 class MyWidget extends ParentWidget {
   MyWidget({Key? key}) : super(key: key);
 }
-''', errorFilter: (error) => error.errorCode is LintCode);
+''');
   }
 }
diff --git a/pkg/analysis_server/test/tool/lsp_spec/dart_test.dart b/pkg/analysis_server/test/tool/lsp_spec/dart_test.dart
index 4e7b051..0093cff 100644
--- a/pkg/analysis_server/test/tool/lsp_spec/dart_test.dart
+++ b/pkg/analysis_server/test/tool/lsp_spec/dart_test.dart
@@ -19,7 +19,7 @@
 
     test('handles union types', () {
       expect(_union(['string', 'int']).dartTypeWithTypeArgs,
-          equals('Either2<String, int>'));
+          equals('Either2<int, String>'));
     });
 
     test('handles arrays', () {
diff --git a/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart b/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart
index a506de9..4661b5c 100644
--- a/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart
+++ b/pkg/analysis_server/test/tool/lsp_spec/generated_classes_test.dart
@@ -2,8 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:test/test.dart';
 
 void main() {
@@ -29,10 +28,12 @@
     });
 
     test('with aliased list fields can be checked for equality', () {
-      final a = TextDocumentRegistrationOptions(
-          documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
-      final b = TextDocumentRegistrationOptions(
-          documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
+      final a = TextDocumentRegistrationOptions(documentSelector: [
+        TextDocumentFilter(language: 'dart', scheme: 'file')
+      ]);
+      final b = TextDocumentRegistrationOptions(documentSelector: [
+        TextDocumentFilter(language: 'dart', scheme: 'file')
+      ]);
 
       expect(a, equals(b));
       expect(a.hashCode, equals(b.hashCode));
@@ -73,11 +74,11 @@
     test('with union fields can be checked for equality', () {
       final a = SignatureInformation(
           label: 'a',
-          documentation: Either2<String, MarkupContent>.t1('a'),
+          documentation: Either2<MarkupContent, String>.t2('a'),
           parameters: []);
       final b = SignatureInformation(
           label: 'a',
-          documentation: Either2<String, MarkupContent>.t1('a'),
+          documentation: Either2<MarkupContent, String>.t2('a'),
           parameters: []);
 
       expect(a, equals(b));
@@ -85,11 +86,14 @@
     });
 
     test('consider subclasses when checking for equality', () {
-      final a = TextDocumentRegistrationOptions(
-          documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
+      final a = TextDocumentRegistrationOptions(documentSelector: [
+        TextDocumentFilter(language: 'dart', scheme: 'file')
+      ]);
       final b = TextDocumentSaveRegistrationOptions(
           includeText: true,
-          documentSelector: [DocumentFilter(language: 'dart', scheme: 'file')]);
+          documentSelector: [
+            TextDocumentFilter(language: 'dart', scheme: 'file')
+          ]);
 
       expect(a, isNot(equals(b)));
       expect(b, isNot(equals(a)));
diff --git a/pkg/analysis_server/test/tool/lsp_spec/json_test.dart b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
index 7b8ab8b..52a6859 100644
--- a/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
+++ b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
@@ -4,8 +4,7 @@
 
 import 'dart:convert';
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
-import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:analysis_server/src/lsp/json_parsing.dart';
 import 'package:test/test.dart';
 
@@ -24,7 +23,7 @@
           method: Method.shutdown,
           jsonrpc: 'test');
       final output = json.encode(message.toJson());
-      expect(output, equals('{"id":1,"method":"shutdown","jsonrpc":"test"}'));
+      expect(output, equals('{"id":1,"jsonrpc":"test","method":"shutdown"}'));
     });
 
     test('returns correct output for union types containing interface types',
@@ -35,7 +34,7 @@
       expect(
           output,
           equals(
-              '{"uri":"!uri","languageId":"!language","version":1,"text":"!text"}'));
+              '{"languageId":"!language","text":"!text","uri":"!uri","version":1}'));
     });
 
     test('returns correct output for types with lists', () {
@@ -55,26 +54,26 @@
       );
       final output = json.encode(codeAction.toJson());
       final expected = '''{
-        "range":{
-            "start":{"line":1,"character":1},
-            "end":{"line":2,"character":2}
-        },
-        "severity":1,
         "code":"test_err",
-        "source":"/tmp/source.dart",
         "message":"err!!",
+        "range":{
+            "end":{"character":2,"line":2},
+            "start":{"character":1,"line":1}
+        },
         "relatedInformation":[
             {
               "location":{
-                  "uri":"y-uri",
                   "range":{
-                    "start":{"line":1,"character":1},
-                    "end":{"line":2,"character":2}
-                  }
+                    "end":{"character":2,"line":2},
+                    "start":{"character":1,"line":1}
+                  },
+                  "uri":"y-uri"
               },
               "message":"message"
             }
-        ]
+        ],
+        "severity":1,
+        "source":"/tmp/source.dart"
       }'''
           .replaceAll(RegExp('[ \n]'), '');
       expect(output, equals(expected));
@@ -102,11 +101,11 @@
           kind: FoldingRangeKind.Comment);
       final output = json.encode(foldingRange.toJson());
       final expected = '''{
-        "startLine":1,
-        "startCharacter":2,
-        "endLine":3,
         "endCharacter":4,
-        "kind":"comment"
+        "endLine":3,
+        "kind":"comment",
+        "startCharacter":2,
+        "startLine":1
       }'''
           .replaceAll(RegExp('[ \n]'), '');
       expect(output, equals(expected));
@@ -254,9 +253,12 @@
     test('canParse records nested undefined fields', () {
       final reporter = LspJsonReporter('params');
       expect(
-          CompletionParams.canParse(
-              {'textDocument': <String, dynamic>{}}, reporter),
-          isFalse);
+        CompletionParams.canParse({
+          'position': {'line': 1, 'character': 1},
+          'textDocument': <String, dynamic>{},
+        }, reporter),
+        isFalse,
+      );
       expect(reporter.errors, hasLength(greaterThanOrEqualTo(1)));
       expect(reporter.errors.first,
           equals('params.textDocument.uri must not be undefined'));
@@ -265,10 +267,12 @@
     test('canParse records nested null fields', () {
       final reporter = LspJsonReporter('params');
       expect(
-          CompletionParams.canParse({
-            'textDocument': {'uri': null}
-          }, reporter),
-          isFalse);
+        CompletionParams.canParse({
+          'position': {'line': 1, 'character': 1},
+          'textDocument': {'uri': null},
+        }, reporter),
+        isFalse,
+      );
       expect(reporter.errors, hasLength(greaterThanOrEqualTo(1)));
       expect(reporter.errors.first,
           equals('params.textDocument.uri must not be null'));
@@ -277,10 +281,12 @@
     test('canParse records nested fields of the wrong type', () {
       final reporter = LspJsonReporter('params');
       expect(
-          CompletionParams.canParse({
-            'textDocument': {'uri': 1}
-          }, reporter),
-          isFalse);
+        CompletionParams.canParse({
+          'position': {'line': 1, 'character': 1},
+          'textDocument': {'uri': 1},
+        }, reporter),
+        isFalse,
+      );
       expect(reporter.errors, hasLength(greaterThanOrEqualTo(1)));
       expect(reporter.errors.first,
           equals('params.textDocument.uri must be of type String'));
@@ -291,15 +297,16 @@
         () {
       final reporter = LspJsonReporter('params');
       expect(
-          WorkspaceEdit.canParse({
-            'documentChanges': {'uri': 1}
-          }, reporter),
-          isFalse);
+        WorkspaceEdit.canParse({
+          'documentChanges': {'uri': 1}
+        }, reporter),
+        isFalse,
+      );
       expect(reporter.errors, hasLength(greaterThanOrEqualTo(1)));
       expect(
           reporter.errors.first,
           equals(
-              'params.documentChanges must be of type Either2<List<TextDocumentEdit>, List<Either4<TextDocumentEdit, CreateFile, RenameFile, DeleteFile>>>'));
+              'params.documentChanges must be of type Either2<List<Either4<CreateFile, DeleteFile, RenameFile, TextDocumentEdit>>, List<TextDocumentEdit>>'));
     });
 
     test('ResponseMessage can include a null result', () {
diff --git a/pkg/analysis_server/test/tool/lsp_spec/matchers.dart b/pkg/analysis_server/test/tool/lsp_spec/matchers.dart
index 65bb7ae..64731c3 100644
--- a/pkg/analysis_server/test/tool/lsp_spec/matchers.dart
+++ b/pkg/analysis_server/test/tool/lsp_spec/matchers.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol.dart';
 import 'package:matcher/matcher.dart';
 
 import '../../../tool/lsp_spec/typescript_parser.dart';
diff --git a/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart b/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart
index 990d952..ebc92f9 100644
--- a/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart
+++ b/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart
@@ -356,8 +356,8 @@
       expect(field.type, const TypeMatcher<UnionType>());
       final union = field.type as UnionType;
       expect(union.types, hasLength(2));
-      expect(union.types[0], isSimpleType('string'));
-      expect(union.types[1], isArrayOf(isSimpleType('number')));
+      expect(union.types[0], isArrayOf(isSimpleType('number')));
+      expect(union.types[1], isSimpleType('string'));
     });
 
     test('parses an union including Object into a single type', () {
diff --git a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
index b8e03a0..e2463db 100644
--- a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
+++ b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
@@ -65,6 +65,41 @@
       .forEach((namespace) => _namespaces[namespace.name] = namespace);
 }
 
+/// Renames types that may have been generated with bad names.
+Iterable<AstNode> renameTypes(List<AstNode> types) sync* {
+  const renames = {
+    // TODO(dantup): These entries can be removed after the
+    //   the migration to JSON meta_model.
+    'ClientCapabilitiesWindow': 'WindowClientCapabilities',
+    'ClientCapabilitiesWorkspace': 'WorkspaceClientCapabilities',
+    'DocumentFilter': 'TextDocumentFilter',
+  };
+
+  for (final type in types) {
+    if (type is Interface) {
+      final newName = renames[type.name];
+      if (newName != null) {
+        // Replace with renamed interface.
+        yield Interface(
+          type.commentNode,
+          Token.identifier(newName),
+          type.typeArgs,
+          type.baseTypes,
+          type.members,
+        );
+        // Plus a TypeAlias for the old name.
+        yield TypeAlias(
+          type.commentNode,
+          Token.identifier(type.name),
+          Type.identifier(newName),
+        );
+        continue;
+      }
+    }
+    yield type;
+  }
+}
+
 TypeBase resolveTypeAlias(TypeBase type, {bool resolveEnumClasses = false}) {
   if (type is Type) {
     // The LSP spec contains type aliases for `integer` and `uinteger` that map
@@ -101,13 +136,16 @@
   if (interface == null) {
     return [];
   }
-  return interface.members
+
+  final allFields = interface.members
       .whereType<Field>()
       .followedBy(interface.baseTypes
           // This cast is safe because base types are always real types.
           .map((type) => _getAllFields(_interfaces[(type as Type).name]))
           .expand((ts) => ts))
       .toList();
+
+  return _getSortedUnique(allFields);
 }
 
 /// Returns a copy of the list sorted by name with duplicates (by name+type) removed.
@@ -153,6 +191,7 @@
 }
 
 bool _isSpecType(TypeBase type) {
+  type = resolveTypeAlias(type);
   return type is Type &&
       (_interfaces.containsKey(type.name) ||
           (_namespaces.containsKey(type.name)));
diff --git a/pkg/analysis_server/tool/lsp_spec/generate_all.dart b/pkg/analysis_server/tool/lsp_spec/generate_all.dart
index 115f15a..86764dc 100644
--- a/pkg/analysis_server/tool/lsp_spec/generate_all.dart
+++ b/pkg/analysis_server/tool/lsp_spec/generate_all.dart
@@ -29,8 +29,13 @@
   Directory(outFolder).createSync();
 
   // Collect definitions for types in the spec and our custom extensions.
-  final specTypes = await getSpecClasses(args);
-  final customTypes = getCustomClasses();
+  var specTypes = await getSpecClasses(args);
+  var customTypes = getCustomClasses();
+
+  // Handle some renames of types where we generate names that might not be
+  // ideal.
+  specTypes = renameTypes(specTypes).toList();
+  customTypes = renameTypes(customTypes).toList();
 
   // Record both sets of types in dictionaries for faster lookups, but also so
   // they can reference each other and we can find the definitions during
diff --git a/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart b/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart
index 57c9bb3..e4415a8 100644
--- a/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart
+++ b/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart
@@ -5,6 +5,7 @@
 import 'dart:math';
 
 import 'package:analysis_server/src/utilities/strings.dart' show capitalize;
+import 'package:collection/collection.dart';
 
 import 'codegen_dart.dart';
 import 'typescript.dart';
@@ -1011,7 +1012,11 @@
 class UnionType extends TypeBase {
   final List<TypeBase> types;
 
-  UnionType(this.types);
+  UnionType(this.types) {
+    // Ensure types are always sorted alphabetically to simplify sharing code
+    // because `Either2<A, B>` and `Either2<B, A>` are not the same.
+    types.sortBy((type) => type.dartTypeWithTypeArgs.toLowerCase());
+  }
 
   @override
   String get dartType {
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index a1acd97..53a072f 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -39,6 +39,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/generated/source.dart' show LineInfo, Source;
+import 'package:meta/meta.dart';
 
 /// Two or more string literals that are implicitly concatenated because of
 /// being adjacent (separated only by whitespace).
@@ -504,6 +505,8 @@
 
   R? visitLabeledStatement(LabeledStatement node);
 
+  R? visitLibraryAugmentationDirective(LibraryAugmentationDirective node);
+
   R? visitLibraryDirective(LibraryDirective node);
 
   R? visitLibraryIdentifier(LibraryIdentifier node);
@@ -3111,6 +3114,24 @@
   Statement get statement;
 }
 
+/// A library augmentation directive.
+///
+///    libraryAugmentationDirective ::=
+///        [metadata] 'library' 'augment' [StringLiteral] ';'
+///
+/// Clients may not extend, implement or mix-in this class.
+@experimental
+abstract class LibraryAugmentationDirective implements UriBasedDirective {
+  /// Return the token representing the 'augment' keyword.
+  Token get augmentKeyword;
+
+  /// Return the token representing the 'library' keyword.
+  Token get libraryKeyword;
+
+  /// Return the semicolon terminating the directive.
+  Token get semicolon;
+}
+
 /// A library directive.
 ///
 ///    libraryDirective ::=
@@ -4473,6 +4494,7 @@
 /// A directive that references a URI.
 ///
 ///    uriBasedDirective ::=
+///        [LibraryAugmentationDirective]
 ///        [ExportDirective]
 ///      | [ImportDirective]
 ///      | [PartDirective]
diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart
index 364355a..92ab86a 100644
--- a/pkg/analyzer/lib/dart/ast/visitor.dart
+++ b/pkg/analyzer/lib/dart/ast/visitor.dart
@@ -426,6 +426,11 @@
   R? visitLabeledStatement(LabeledStatement node) => visitStatement(node);
 
   @override
+  R? visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    return visitUriBasedDirective(node);
+  }
+
+  @override
   R? visitLibraryDirective(LibraryDirective node) => visitDirective(node);
 
   @override
@@ -1113,6 +1118,12 @@
   }
 
   @override
+  R? visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    node.visitChildren(this);
+    return null;
+  }
+
+  @override
   R? visitLibraryDirective(LibraryDirective node) {
     node.visitChildren(this);
     return null;
@@ -1683,6 +1694,11 @@
   R? visitLabeledStatement(LabeledStatement node) => null;
 
   @override
+  R? visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    return null;
+  }
+
+  @override
   R? visitLibraryDirective(LibraryDirective node) => null;
 
   @override
@@ -2099,6 +2115,11 @@
   R? visitLabeledStatement(LabeledStatement node) => _throw(node);
 
   @override
+  R? visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    _throw(node);
+  }
+
+  @override
   R? visitLibraryDirective(LibraryDirective node) => _throw(node);
 
   @override
@@ -2265,7 +2286,7 @@
   @override
   R? visitYieldStatement(YieldStatement node) => _throw(node);
 
-  R _throw(AstNode node) {
+  Never _throw(AstNode node) {
     throw Exception('Missing implementation of visit${node.runtimeType}');
   }
 }
@@ -2902,6 +2923,14 @@
   }
 
   @override
+  T? visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    stopwatch.start();
+    T? result = _baseVisitor.visitLibraryAugmentationDirective(node);
+    stopwatch.stop();
+    return result;
+  }
+
+  @override
   T? visitLibraryDirective(LibraryDirective node) {
     stopwatch.start();
     T? result = _baseVisitor.visitLibraryDirective(node);
@@ -3596,6 +3625,11 @@
   R? visitLabeledStatement(LabeledStatement node) => visitNode(node);
 
   @override
+  R? visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    return visitNode(node);
+  }
+
+  @override
   R? visitLibraryDirective(LibraryDirective node) => visitNode(node);
 
   @override
diff --git a/pkg/analyzer/lib/src/context/package_config_json.dart b/pkg/analyzer/lib/src/context/package_config_json.dart
deleted file mode 100644
index cfda8b6..0000000
--- a/pkg/analyzer/lib/src/context/package_config_json.dart
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:convert';
-
-import 'package:pub_semver/pub_semver.dart';
-
-/// Parse the content of a `package_config.json` file located at the [uri].
-PackageConfigJson parsePackageConfigJson(Uri uri, String content) {
-  assert(uri.isAbsolute);
-  return _PackageConfigJsonParser(uri, content).parse();
-}
-
-class LanguageVersion {
-  final int major;
-  final int minor;
-
-  const LanguageVersion(this.major, this.minor);
-
-  @override
-  bool operator ==(Object other) {
-    return other is LanguageVersion &&
-        other.major == major &&
-        other.minor == minor;
-  }
-
-  @override
-  String toString() => '$major.$minor';
-}
-
-/// Information about packages used by a Pub package.
-///
-/// It represents a parsed and processed `package_config.json` file.
-class PackageConfigJson {
-  /// The absolute URI of the file.
-  final Uri uri;
-
-  /// The version of the format.
-  final int configVersion;
-
-  /// The list of packages.
-  final List<PackageConfigJsonPackage> packages;
-
-  /// The timestamp for when the file was generated.
-  ///
-  /// Might be `null`.
-  final DateTime? generated;
-
-  /// The generator which created the file, typically "pub".
-  ///
-  /// Might be `null`.
-  final String? generator;
-
-  /// The version of the generator, if the generator wants to remember that
-  /// information. The version must be a Semantic Version. Pub can use the
-  /// SDK version.
-  ///
-  /// Might be `null`.
-  final Version? generatorVersion;
-
-  PackageConfigJson({
-    required this.uri,
-    required this.configVersion,
-    required this.packages,
-    required this.generated,
-    required this.generator,
-    required this.generatorVersion,
-  });
-}
-
-/// Description of a single package in [PackageConfigJson].
-class PackageConfigJsonPackage {
-  /// The name of the package.
-  final String name;
-
-  /// The root directory of the package. All files inside this directory,
-  /// including any  subdirectories, are considered to belong to the package.
-  final Uri rootUri;
-
-  /// The package directory, containing files available to Dart programs
-  /// using `package:packageName/...` URIs. It is either the [rootUri], or a
-  /// sub-directory of the [rootUri].
-  final Uri packageUri;
-
-  /// The language version for the package, or `null` if not specified.
-  final LanguageVersion? languageVersion;
-
-  PackageConfigJsonPackage({
-    required this.name,
-    required this.rootUri,
-    required this.packageUri,
-    required this.languageVersion,
-  });
-}
-
-class _PackageConfigJsonParser {
-  final RegExp _languageVersionRegExp = RegExp(r'(0|[1-9]\d*)\.(0|[1-9]\d*)');
-
-  final Uri uri;
-  final String content;
-
-  late int version;
-  List<PackageConfigJsonPackage> packages = [];
-  DateTime? generated;
-  String? generator;
-  Version? generatorVersion;
-
-  _PackageConfigJsonParser(this.uri, this.content);
-
-  PackageConfigJson parse() {
-    var contentObject = json.decode(content);
-    if (contentObject is Map<String, dynamic>) {
-      _parseVersion(contentObject);
-      _parsePackages(contentObject);
-      _parseGenerated(contentObject);
-      return PackageConfigJson(
-        uri: uri,
-        configVersion: version,
-        packages: packages,
-        generated: generated,
-        generator: generator,
-        generatorVersion: generatorVersion,
-      );
-    } else {
-      throw FormatException("Expected a JSON object.", content);
-    }
-  }
-
-  T? _getOptionalField<T>(Map<String, dynamic> map, String name) {
-    var object = map[name];
-    if (object is T?) {
-      return object;
-    } else {
-      var actualType = object.runtimeType;
-      throw FormatException(
-        "Expected '$T' value for the '$name' field, found '$actualType'.",
-        content,
-      );
-    }
-  }
-
-  T _getRequiredField<T>(Map<String, dynamic> map, String name) {
-    var object = map[name];
-    if (object is T) {
-      return object;
-    } else if (object == null) {
-      throw FormatException("Missing the '$name' field.", content);
-    } else {
-      var actualType = object.runtimeType;
-      throw FormatException(
-        "Expected '$T' value for the '$name' field, found '$actualType'.",
-        content,
-      );
-    }
-  }
-
-  void _parseGenerated(Map<String, dynamic> map) {
-    var generatedStr = _getOptionalField<String>(map, 'generated');
-    if (generatedStr != null) {
-      generated = DateTime.parse(generatedStr);
-    }
-
-    generator = _getOptionalField<String>(map, 'generator');
-
-    var generatorVersionStr = _getOptionalField<String>(
-      map,
-      'generatorVersion',
-    );
-    if (generatorVersionStr != null) {
-      generatorVersion = Version.parse(generatorVersionStr);
-    }
-  }
-
-  void _parsePackage(Map<String, Object?> map) {
-    var name = _getRequiredField<String>(map, 'name');
-
-    var rootUriStr = _getRequiredField<String>(map, 'rootUri');
-    var rootUri = uri.resolve(rootUriStr);
-    rootUri = _ensureDirectoryUri(rootUri);
-
-    var packageUri = rootUri;
-    var packageUriStr = _getOptionalField<String>(map, 'packageUri');
-    if (packageUriStr != null) {
-      var packageUriRel = Uri.parse(packageUriStr);
-      if (packageUriRel.isAbsolute) {
-        throw FormatException(
-          "The value of the field 'packageUri' must be relative, "
-          "actually '$packageUriStr', for the package '$name'.",
-          content,
-        );
-      }
-
-      packageUri = rootUri.resolveUri(packageUriRel);
-      packageUri = _ensureDirectoryUri(packageUri);
-
-      if (!_isNestedUri(packageUri, rootUri)) {
-        throw FormatException(
-          "The resolved 'packageUri' must be inside the rootUri, "
-          "actually '$packageUri' is not in '$rootUri', "
-          "for the package '$name'.",
-          content,
-        );
-      }
-    }
-
-    var languageVersion = _parsePackageLanguageVersion(map);
-
-    packages.add(
-      PackageConfigJsonPackage(
-        name: name,
-        rootUri: rootUri,
-        packageUri: packageUri,
-        languageVersion: languageVersion,
-      ),
-    );
-  }
-
-  LanguageVersion? _parsePackageLanguageVersion(Map<String, Object?> map) {
-    var versionStr = _getOptionalField<String>(map, 'languageVersion');
-    if (versionStr == null) {
-      return null;
-    }
-
-    var match = _languageVersionRegExp.matchAsPrefix(versionStr);
-    if (match != null && match.end == versionStr.length) {
-      var major = int.parse(match.group(1)!);
-      var minor = int.parse(match.group(2)!);
-      return LanguageVersion(major, minor);
-    } else {
-      throw FormatException(
-        "Invalid 'languageVersion' format '$versionStr'.",
-        content,
-      );
-    }
-  }
-
-  void _parsePackages(Map<String, Object?> map) {
-    var packagesObject = _getRequiredField<List<Object?>>(map, 'packages');
-    for (var packageObject in packagesObject) {
-      if (packageObject is Map<String, dynamic>) {
-        _parsePackage(packageObject);
-      }
-    }
-  }
-
-  void _parseVersion(Map<String, Object?> map) {
-    version = _getRequiredField(map, 'configVersion');
-    if (version != 2) {
-      throw FormatException("Unsupported config version: $version");
-    }
-  }
-
-  static Uri _ensureDirectoryUri(Uri uri) {
-    var path = uri.path;
-    if (path.endsWith('/')) {
-      return uri;
-    } else {
-      return uri.replace(path: '$path/');
-    }
-  }
-
-  /// Return `true` if the [nested] is the [enclosing], or is in it.
-  static bool _isNestedUri(Uri nested, Uri enclosing) {
-    var nestedStr = '$nested';
-    var enclosingStr = '$enclosing';
-    return nestedStr.contains(enclosingStr);
-  }
-}
diff --git a/pkg/analyzer/lib/src/context/packages.dart b/pkg/analyzer/lib/src/context/packages.dart
index 78f5bb5..6369690 100644
--- a/pkg/analyzer/lib/src/context/packages.dart
+++ b/pkg/analyzer/lib/src/context/packages.dart
@@ -3,8 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/context/package_config_json.dart';
 import 'package:analyzer/src/util/uri.dart';
+import 'package:package_config/package_config_types.dart';
 import 'package:package_config/src/packages_file.dart'
     as package_config_packages_file;
 import 'package:pub_semver/pub_semver.dart';
@@ -74,7 +74,7 @@
 Packages parsePackageConfigJsonFile(ResourceProvider provider, File file) {
   var uri = file.toUri();
   var content = file.readAsStringSync();
-  var jsonConfig = parsePackageConfigJson(uri, content);
+  var jsonConfig = PackageConfig.parseString(content, uri);
 
   var map = <String, Package>{};
   for (var jsonPackage in jsonConfig.packages) {
@@ -82,12 +82,12 @@
 
     var rootPath = fileUriToNormalizedPath(
       provider.pathContext,
-      jsonPackage.rootUri,
+      jsonPackage.root,
     );
 
     var libPath = fileUriToNormalizedPath(
       provider.pathContext,
-      jsonPackage.packageUri,
+      jsonPackage.packageUriRoot,
     );
 
     Version? languageVersion;
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index b4ff5c0..1f4cdab 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -977,6 +977,15 @@
 
       // We have a contributor that looks at the type, but it is syntactic.
       if (parent is VariableDeclaration && parent.name == node) {
+        final parent2 = parent.parent;
+        final parent3 = parent2?.parent;
+        // `class A { foo^ }` looks like `class A { <noType> foo; }`.
+        if (parent2 is VariableDeclarationList &&
+            parent2.type == null &&
+            parent3 is FieldDeclaration &&
+            parent3.semicolon.isSynthetic) {
+          return false;
+        }
         return true;
       }
     }
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index a4fbc57..524586d 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -20,6 +20,7 @@
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/source.dart' show LineInfo, Source;
 import 'package:analyzer/src/generated/utilities_dart.dart';
+import 'package:meta/meta.dart';
 
 /// Two or more string literals that are implicitly concatenated because of
 /// being adjacent (separated only by whitespace).
@@ -7138,6 +7139,60 @@
 
 /// A library directive.
 ///
+///    libraryAugmentationDirective ::=
+///        [metadata] 'library' 'augment' [StringLiteral] ';'
+@experimental
+class LibraryAugmentationDirectiveImpl extends UriBasedDirectiveImpl
+    implements LibraryAugmentationDirective {
+  @override
+  Token libraryKeyword;
+
+  @override
+  Token augmentKeyword;
+
+  @override
+  Token semicolon;
+
+  LibraryAugmentationDirectiveImpl({
+    required CommentImpl? comment,
+    required List<Annotation>? metadata,
+    required this.libraryKeyword,
+    required this.augmentKeyword,
+    required StringLiteralImpl uri,
+    required this.semicolon,
+  }) : super(comment, metadata, uri);
+
+  @override
+  Token get endToken => semicolon;
+
+  @override
+  Token get firstTokenAfterCommentAndMetadata => libraryKeyword;
+
+  @override
+  Token get keyword => libraryKeyword;
+
+  @override
+  LibraryElement? get uriElement {
+    // TODO(scheglov) Implement it.
+    throw UnimplementedError();
+    // return element?.importedLibrary;
+  }
+
+  @override
+  ChildEntities get _childEntities => super._childEntities
+    ..addToken('libraryKeyword', libraryKeyword)
+    ..addToken('augmentKeyword', augmentKeyword)
+    ..addNode('uri', uri)
+    ..addToken('semicolon', semicolon);
+
+  @override
+  E? accept<E>(AstVisitor<E> visitor) {
+    return visitor.visitLibraryAugmentationDirective(this);
+  }
+}
+
+/// A library directive.
+///
 ///    libraryDirective ::=
 ///        [Annotation] 'library' [Identifier] ';'
 class LibraryDirectiveImpl extends DirectiveImpl implements LibraryDirective {
diff --git a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
index df44e47..becc0af 100644
--- a/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart
@@ -713,6 +713,15 @@
   }
 
   @override
+  void visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
+    sink.write('library ');
+    sink.write('augment ');
+    _visitNode(node.uri);
+    sink.write(';');
+  }
+
+  @override
   void visitLibraryDirective(LibraryDirective node) {
     _visitNodeList(node.metadata, separator: ' ', suffix: ' ');
     sink.write('library ');
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index 263dcde..65a3293 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -822,6 +822,18 @@
   }
 
   @override
+  bool? visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    final other = _other as LibraryAugmentationDirective;
+    return isEqualNodes(
+            node.documentationComment, other.documentationComment) &&
+        _isEqualNodeLists(node.metadata, other.metadata) &&
+        isEqualTokens(node.libraryKeyword, other.libraryKeyword) &&
+        isEqualTokens(node.augmentKeyword, other.augmentKeyword) &&
+        isEqualNodes(node.uri, other.uri) &&
+        isEqualTokens(node.semicolon, other.semicolon);
+  }
+
+  @override
   bool visitLibraryDirective(LibraryDirective node) {
     LibraryDirective other = _other as LibraryDirective;
     return isEqualNodes(
@@ -2503,6 +2515,13 @@
   }
 
   @override
+  bool? visitLibraryAugmentationDirective(
+    covariant LibraryAugmentationDirectiveImpl node,
+  ) {
+    return visitUriBasedDirective(node);
+  }
+
+  @override
   bool visitLibraryDirective(covariant LibraryDirectiveImpl node) {
     if (identical(node.name, _oldNode)) {
       node.name = _newNode as LibraryIdentifier;
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index d6491fa..878abf5 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -331,6 +331,9 @@
   void beginIsOperatorType(Token asOperator) {}
 
   @override
+  void beginLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {}
+
+  @override
   void beginLiteralString(Token literalString) {
     assert(identical(literalString.kind, STRING_TOKEN));
     debugEvent("beginLiteralString");
@@ -1925,6 +1928,24 @@
   }
 
   @override
+  void endLibraryAugmentation(
+      Token libraryKeyword, Token augmentKeyword, Token semicolon) {
+    final uri = pop() as StringLiteralImpl;
+    final metadata = pop() as List<Annotation>?;
+    final comment = _findComment(metadata, libraryKeyword);
+    directives.add(
+      LibraryAugmentationDirectiveImpl(
+        comment: comment,
+        metadata: metadata,
+        libraryKeyword: libraryKeyword,
+        augmentKeyword: augmentKeyword,
+        uri: uri,
+        semicolon: semicolon,
+      ),
+    );
+  }
+
+  @override
   void endLibraryName(Token libraryKeyword, Token semicolon) {
     assert(optional('library', libraryKeyword));
     assert(optional(';', semicolon));
@@ -4200,7 +4221,8 @@
     }
   }
 
-  Comment? _findComment(List<Annotation>? metadata, Token tokenAfterMetadata) {
+  CommentImpl? _findComment(
+      List<Annotation>? metadata, Token tokenAfterMetadata) {
     // Find the dartdoc tokens
     var dartdoc = parser.findDartDoc(tokenAfterMetadata);
     if (dartdoc == null) {
diff --git a/pkg/analyzer/lib/src/test_utilities/find_node.dart b/pkg/analyzer/lib/src/test_utilities/find_node.dart
index 674c573..2c0aee8 100644
--- a/pkg/analyzer/lib/src/test_utilities/find_node.dart
+++ b/pkg/analyzer/lib/src/test_utilities/find_node.dart
@@ -315,6 +315,10 @@
     return _node(search, (n) => n is LibraryDirective);
   }
 
+  LibraryAugmentationDirective libraryAugmentation(String search) {
+    return _node(search, (n) => n is LibraryAugmentationDirective);
+  }
+
   LibraryIdentifier libraryIdentifier(String search) {
     return _node(search, (n) => n is LibraryIdentifier);
   }
diff --git a/pkg/analyzer/test/src/context/package_config_json_test.dart b/pkg/analyzer/test/src/context/package_config_json_test.dart
deleted file mode 100644
index 3f2061d..0000000
--- a/pkg/analyzer/test/src/context/package_config_json_test.dart
+++ /dev/null
@@ -1,332 +0,0 @@
-// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:analyzer/src/context/package_config_json.dart';
-import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:test/test.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-main() {
-  defineReflectiveSuite(() {
-    defineReflectiveTests(PackageConfigJsonTest);
-  });
-}
-
-@reflectiveTest
-class PackageConfigJsonTest with ResourceProviderMixin {
-  void assertPackage(
-      PackageConfigJsonPackage actual, _ExpectedPackage expected) {
-    expect(actual.name, expected.name);
-    expect(actual.rootUri, toUri(expected.rootUriPath));
-    expect(actual.packageUri, toUri(expected.packageUriPath));
-    expect(actual.languageVersion, expected.languageVersion);
-  }
-
-  void setUp() {
-    newFile('/test/lib/test.dart', '');
-  }
-
-  test_configVersion_2() {
-    var config = _parse('''
-{
-  "configVersion": 2,
-  "packages": []
-}
-''');
-    expect(config.configVersion, 2);
-    expect(config.packages, isEmpty);
-  }
-
-  test_configVersion_3() {
-    _throwsFormatException('''
-{
-  "configVersion": 3,
-  "packages": []
-}
-''', 'config version');
-  }
-
-  test_configVersion_missing() {
-    _throwsFormatException('''
-{
-  "packages": []
-}
-''', 'configVersion');
-  }
-
-  test_configVersion_notInt() {
-    _throwsFormatException('''
-{
-  "configVersion": "2",
-  "packages": []
-}
-''', 'configVersion');
-  }
-
-  test_format_notMap() {
-    _throwsFormatException('42', 'JSON object');
-  }
-
-  test_generated() {
-    var config = _parse('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "../",
-      "packageUri": "lib/",
-      "languageVersion": "2.6"
-    }
-  ],
-  "generated": "2019-12-10T18:29:14.336160Z",
-  "generator": "pub",
-  "generatorVersion": "2.8.0-edge.28b0f1839726c0743e25a2765c5322a24f6e2afa"
-}
-''');
-    var generated = config.generated!;
-    expect(generated.year, 2019);
-    expect(generated.month, 12);
-    expect(generated.day, 10);
-    expect(generated.hour, 18);
-    expect(generated.minute, 29);
-    expect(generated.second, 14);
-
-    expect(config.generator, 'pub');
-
-    var generatorVersion = config.generatorVersion!;
-    expect(generatorVersion.major, 2);
-    expect(generatorVersion.minor, 8);
-    expect(generatorVersion.patch, 0);
-  }
-
-  test_packages() {
-    var config = _parse('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "../",
-      "packageUri": "lib/",
-      "languageVersion": "2.6"
-    },
-    {
-      "name": "aaa",
-      "rootUri": "${toUriStr('/packages/aaa')}",
-      "packageUri": "lib/",
-      "languageVersion": "2.0"
-    },
-    {
-      "name": "bbb",
-      "rootUri": "${toUriStr('/packages/bbb/lib')}",
-      "languageVersion": "2.1"
-    }
-  ]
-}
-''');
-    assertPackage(
-      config.packages[0],
-      _ExpectedPackage(
-        name: 'test',
-        rootUriPath: '/test/',
-        packageUriPath: '/test/lib/',
-        languageVersion: LanguageVersion(2, 6),
-      ),
-    );
-    assertPackage(
-      config.packages[1],
-      _ExpectedPackage(
-        name: 'aaa',
-        rootUriPath: '/packages/aaa/',
-        packageUriPath: '/packages/aaa/lib/',
-        languageVersion: LanguageVersion(2, 0),
-      ),
-    );
-    assertPackage(
-      config.packages[2],
-      _ExpectedPackage(
-        name: 'bbb',
-        rootUriPath: '/packages/bbb/lib/',
-        packageUriPath: '/packages/bbb/lib/',
-        languageVersion: LanguageVersion(2, 1),
-      ),
-    );
-  }
-
-  test_packages_languageVersion_default() {
-    var config = _parse('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "../",
-      "packageUri": "lib/"
-    }
-  ]
-}
-''');
-    assertPackage(
-      config.packages[0],
-      _ExpectedPackage(
-        name: 'test',
-        rootUriPath: '/test/',
-        packageUriPath: '/test/lib/',
-        languageVersion: null,
-      ),
-    );
-  }
-
-  test_packages_languageVersion_invalidPrefix() {
-    _throwsFormatException('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "../",
-      "packageUri": "lib/",
-      "languageVersion": " 2.6"
-    }
-  ]
-}
-''', 'languageVersion');
-  }
-
-  test_packages_languageVersion_invalidSuffix() {
-    _throwsFormatException('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "../",
-      "packageUri": "lib/",
-      "languageVersion": "2.6 "
-    }
-  ]
-}
-''', 'languageVersion');
-  }
-
-  test_packages_missing() {
-    _throwsFormatException('''
-{
-  "configVersion": 2
-}
-''', 'packages');
-  }
-
-  test_packages_packageUri_absolute() {
-    _throwsFormatException('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "../",
-      "packageUri": "${toUriStr('/test/lib')}",
-      "languageVersion": "2.6"
-    }
-  ]
-}
-''', 'packageUri');
-  }
-
-  test_packages_packageUri_empty() {
-    var config = _parse('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "../",
-      "packageUri": ""
-    }
-  ]
-}
-''');
-    assertPackage(
-      config.packages[0],
-      _ExpectedPackage(
-        name: 'test',
-        rootUriPath: '/test/',
-        packageUriPath: '/test/',
-        languageVersion: null,
-      ),
-    );
-  }
-
-  test_packages_packageUri_notInRootUri() {
-    _throwsFormatException('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "aaa",
-      "rootUri": "${toUriStr('/packages/aaa')}",
-      "packageUri": "..",
-      "languageVersion": "2.6"
-    }
-  ]
-}
-''', 'packageUri');
-  }
-
-  test_packages_rootUri_doesNotEndWithSlash() {
-    var config = _parse('''
-{
-  "configVersion": 2,
-  "packages": [
-    {
-      "name": "test",
-      "rootUri": "..",
-      "packageUri": "lib"
-    }
-  ]
-}
-''');
-    assertPackage(
-      config.packages[0],
-      _ExpectedPackage(
-        name: 'test',
-        rootUriPath: '/test/',
-        packageUriPath: '/test/lib/',
-        languageVersion: null,
-      ),
-    );
-  }
-
-  PackageConfigJson _parse(String content) {
-    var path = '/test/.dart_tool/package_config.json';
-    newFile(path, content);
-
-    var uri = toUri(path);
-    return parsePackageConfigJson(uri, content);
-  }
-
-  void _throwsFormatException(String content, String expectedSubString) {
-    try {
-      _parse(content);
-      fail('Expected to throw FormatException');
-    } on FormatException catch (e) {
-      expect(e.message, contains(expectedSubString));
-    }
-  }
-}
-
-class _ExpectedPackage {
-  final String name;
-  final String rootUriPath;
-  final String packageUriPath;
-  final LanguageVersion? languageVersion;
-
-  _ExpectedPackage({
-    required this.name,
-    required this.rootUriPath,
-    required this.packageUriPath,
-    required this.languageVersion,
-  });
-}
diff --git a/pkg/analyzer/test/src/context/test_all.dart b/pkg/analyzer/test/src/context/test_all.dart
index 83971d1..c56a5c5 100644
--- a/pkg/analyzer/test/src/context/test_all.dart
+++ b/pkg/analyzer/test/src/context/test_all.dart
@@ -5,14 +5,12 @@
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'builder_test.dart' as builder_test;
-import 'package_config_json_test.dart' as package_config_json_test;
 import 'packages_test.dart' as packages_test;
 
 /// Utility for manually running all tests.
 main() {
   defineReflectiveSuite(() {
     builder_test.main();
-    package_config_json_test.main();
     packages_test.main();
   }, name: 'context');
 }
diff --git a/pkg/analyzer/test/src/dart/analysis/resolve_for_completion_test.dart b/pkg/analyzer/test/src/dart/analysis/resolve_for_completion_test.dart
index a677d49..f0f8f69 100644
--- a/pkg/analyzer/test/src/dart/analysis/resolve_for_completion_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/resolve_for_completion_test.dart
@@ -130,6 +130,22 @@
     result.assertResolvedNodes([]);
   }
 
+  test_classDeclaration_body_identifier() async {
+    var result = await _resolveTestCode(r'''
+class A {}
+
+class B {
+  void foo() {}
+
+  bar^
+}
+''');
+
+    result.assertResolvedNodes([
+      'bar;',
+    ]);
+  }
+
   test_constructorDeclaration_body() async {
     var result = await _resolveTestCode(r'''
 class A {}
diff --git a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
index 7a1569f..9a9a099 100644
--- a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
@@ -2353,6 +2353,16 @@
             [AstTestFactory.label2("a")], AstTestFactory.returnStatement()));
   }
 
+  void test_visitLibraryAugmentationDirective() {
+    var findNode = _parseStringToFindNode(r'''
+library augment 'a.dart';
+''');
+    _assertSource(
+      "library augment 'a.dart';",
+      findNode.libraryAugmentation('library'),
+    );
+  }
+
   void test_visitLibraryDirective() {
     _assertSource("library l;", AstTestFactory.libraryDirective2("l"));
   }
diff --git a/pkg/analyzer/test/src/fasta/ast_builder_test.dart b/pkg/analyzer/test/src/fasta/ast_builder_test.dart
index b1cbcbd..32fbc78 100644
--- a/pkg/analyzer/test/src/fasta/ast_builder_test.dart
+++ b/pkg/analyzer/test/src/fasta/ast_builder_test.dart
@@ -385,6 +385,23 @@
 ''');
   }
 
+  void test_library_augment() {
+    var parseResult = parseStringWithErrors(r'''
+library augment 'a.dart';
+''');
+    parseResult.assertNoErrors();
+
+    var node = parseResult.findNode.libraryAugmentation('library');
+    assertParsedNodeText(node, r'''
+LibraryAugmentationDirective
+  libraryKeyword: library
+  augmentKeyword: augment
+  uri: SimpleStringLiteral
+    literal: 'a.dart'
+  semicolon: ;
+''');
+  }
+
   void test_superFormalParameter() {
     var parseResult = parseStringWithErrors(r'''
 class A {
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index 0b4c9bc..638d321 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -720,6 +720,19 @@
   }
 
   @override
+  void visitLibraryAugmentationDirective(LibraryAugmentationDirective node) {
+    _writeln('LibraryAugmentationDirective');
+    _withIndent(() {
+      _writeNamedChildEntities(node);
+      // TODO(scheglov) Implement.
+      // _writeElement('element', node.element);
+      // _writeRaw('uriContent', node.uriContent);
+      // _writeElement('uriElement', node.uriElement);
+      // _writeSource('uriSource', node.uriSource);
+    });
+  }
+
+  @override
   void visitLibraryDirective(LibraryDirective node) {
     _writeln('LibraryDirective');
     _withIndent(() {
diff --git a/pkg/compiler/pubspec.yaml b/pkg/compiler/pubspec.yaml
index cb44cf3..d2e8bbb 100644
--- a/pkg/compiler/pubspec.yaml
+++ b/pkg/compiler/pubspec.yaml
@@ -98,9 +98,9 @@
   protobuf:
     path: ../../third_party/pkg/protobuf/protobuf
   shelf:
-    path: ../../third_party/pkg/shelf
+    path: ../../third_party/pkg/shelf/pkgs/shelf
   shelf_static:
-    path: ../../third_party/pkg/shelf_static
+    path: ../../third_party/pkg/shelf/pkgs/shelf_static
   source_span:
     path: ../../third_party/pkg/source_span
   stack_trace:
diff --git a/pkg/compiler/test/end_to_end/dill_loader_test.dart b/pkg/compiler/test/end_to_end/dill_loader_test.dart
index fe24e88..8cfe81a 100644
--- a/pkg/compiler/test/end_to_end/dill_loader_test.dart
+++ b/pkg/compiler/test/end_to_end/dill_loader_test.dart
@@ -28,7 +28,7 @@
     var options = CompilerOptions()
       ..target = Dart2jsTarget("dart2js", TargetFlags(enableNullSafety: true))
       ..nnbdMode = NnbdMode.Strong
-      ..packagesFileUri = Uri.base.resolve('.packages')
+      ..packagesFileUri = Uri.base.resolve('.dart_tool/package_config.json')
       ..additionalDills = <Uri>[
         computePlatformBinariesLocation().resolve("dart2js_platform.dill"),
       ]
diff --git a/pkg/compiler/test/end_to_end/no_platform_test.dart b/pkg/compiler/test/end_to_end/no_platform_test.dart
index e786f3f..349b129 100644
--- a/pkg/compiler/test/end_to_end/no_platform_test.dart
+++ b/pkg/compiler/test/end_to_end/no_platform_test.dart
@@ -22,7 +22,8 @@
             new Dart2jsTarget('dart2js', new TargetFlags()),
             sdkLibrariesSpecificationUri,
             [], // additionalDills
-            Uri.base.resolve('.packages'), // packagesFileUri
+            Uri.base
+                .resolve('.dart_tool/package_config.json'), // packagesFileUri
             explicitExperimentalFlags: experimentalFlags,
             verify: true);
     ir.Component component = await fe.compile(
diff --git a/pkg/compiler/test/helpers/memory_compiler.dart b/pkg/compiler/test/helpers/memory_compiler.dart
index 04ec18c..310120a 100644
--- a/pkg/compiler/test/helpers/memory_compiler.dart
+++ b/pkg/compiler/test/helpers/memory_compiler.dart
@@ -133,8 +133,8 @@
       packageConfig = Uri.base.resolve(Platform.packageConfig);
     } else {
       // The tests are run with the base directory as the SDK root
-      // so just use the .packages file there.
-      packageConfig = Uri.base.resolve('.packages');
+      // so just use the package config there.
+      packageConfig = Uri.base.resolve('.dart_tool/package_config.json');
     }
   }
 
diff --git a/pkg/dartdev/test/commands/create_integration_test.dart b/pkg/dartdev/test/commands/create_integration_test.dart
index 05d0bf0..fe8b203 100644
--- a/pkg/dartdev/test/commands/create_integration_test.dart
+++ b/pkg/dartdev/test/commands/create_integration_test.dart
@@ -33,6 +33,7 @@
       final p = proj!;
       final templateGenerator = getGenerator(templateId)!;
 
+      print('$templateId: creating template');
       ProcessResult createResult = await p.run([
         'create',
         '--force',
@@ -43,6 +44,7 @@
       expect(createResult.exitCode, 0, reason: createResult.stderr);
 
       // Validate that the project analyzes cleanly.
+      print('$templateId: analyzing generated project');
       ProcessResult analyzeResult = await p.run(
         ['analyze', '--fatal-infos', projectName],
         workingDir: p.dir.path,
@@ -50,6 +52,7 @@
       expect(analyzeResult.exitCode, 0, reason: analyzeResult.stdout);
 
       // Validate that the code is well formatted.
+      print('$templateId: checking formatting');
       ProcessResult formatResult = await p.run([
         'format',
         '--output',
@@ -77,6 +80,11 @@
         return commandParts;
       }).toList();
 
+      print('$templateId: running the following commands:');
+      for (final command in runCommands) {
+        print('  $command');
+      }
+
       final isServerTemplate = templateGenerator.categories.contains('server');
       final isWebTemplate = templateGenerator.categories.contains('web');
       final workingDir = path.join(p.dirPath, projectName);
@@ -88,7 +96,7 @@
         final isLastCommand = i == runCommands.length - 1;
         final command = runCommands[i];
         Process process;
-
+        print('[${i + 1} / ${runCommands.length}] Running "$command"...');
         if (isLastCommand && isWebTemplate) {
           // The web template uses `webdev` to execute, not `dart`, so don't
           // run the test through the project utility method.
@@ -148,6 +156,7 @@
           // an exit code of 0.
           expect(await process.exitCode, 0);
         }
+        print('[${i + 1} / ${runCommands.length}] Done "$command".');
       }
     });
   }
diff --git a/pkg/dev_compiler/pubspec.yaml b/pkg/dev_compiler/pubspec.yaml
index 90c1a69..9ff430c 100644
--- a/pkg/dev_compiler/pubspec.yaml
+++ b/pkg/dev_compiler/pubspec.yaml
@@ -52,6 +52,6 @@
   meta:
     path: ../meta
   shelf:
-    path: ../../third_party/pkg/shelf
+    path: ../../third_party/pkg/shelf/pkgs/shelf
   http_multi_server:
     path: ../../third_party/pkg/http_multi_server
diff --git a/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart b/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart
index ea96e19..e75d3d0 100644
--- a/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart
+++ b/pkg/dev_compiler/test/sourcemap/sourcemaps_ddk_suite.dart
@@ -59,8 +59,10 @@
 
     var ddcSdkSummary = findInOutDir('ddc_outline.dill');
 
+    var packageConfigPath =
+        sdkRoot.uri.resolve('.dart_tool/package_config.json').toFilePath();
     var args = <String>[
-      "--packages=${sdkRoot.uri.resolve(".packages").toFilePath()}",
+      '--packages=$packageConfigPath',
       '--modules=es6',
       '--dart-sdk-summary=${ddcSdkSummary.path}',
       '-o',
diff --git a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
index b18526f..8b992bf 100644
--- a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
@@ -692,6 +692,17 @@
   }
 
   @override
+  void beginLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {
+    _unexpected();
+  }
+
+  @override
+  void endLibraryAugmentation(
+      Token libraryKeyword, Token augmentKeyword, Token semicolon) {
+    _unexpected();
+  }
+
+  @override
   void beginLibraryName(Token token) {
     _unexpected();
   }
diff --git a/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
index b691d1c..5137b17 100644
--- a/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
@@ -1249,6 +1249,25 @@
   }
 
   @override
+  void beginLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {
+    LibraryAugmentationBegin data = new LibraryAugmentationBegin(
+        ParserAstType.BEGIN,
+        libraryKeyword: libraryKeyword,
+        augmentKeyword: augmentKeyword);
+    seen(data);
+  }
+
+  @override
+  void endLibraryAugmentation(
+      Token libraryKeyword, Token augmentKeyword, Token semicolon) {
+    LibraryAugmentationEnd data = new LibraryAugmentationEnd(ParserAstType.END,
+        libraryKeyword: libraryKeyword,
+        augmentKeyword: augmentKeyword,
+        semicolon: semicolon);
+    seen(data);
+  }
+
+  @override
   void beginLibraryName(Token token) {
     LibraryNameBegin data =
         new LibraryNameBegin(ParserAstType.BEGIN, token: token);
@@ -4812,6 +4831,40 @@
       };
 }
 
+class LibraryAugmentationBegin extends ParserAstNode {
+  final Token libraryKeyword;
+  final Token augmentKeyword;
+
+  LibraryAugmentationBegin(ParserAstType type,
+      {required this.libraryKeyword, required this.augmentKeyword})
+      : super("LibraryAugmentation", type);
+
+  @override
+  Map<String, Object?> get deprecatedArguments => {
+        "libraryKeyword": libraryKeyword,
+        "augmentKeyword": augmentKeyword,
+      };
+}
+
+class LibraryAugmentationEnd extends ParserAstNode {
+  final Token libraryKeyword;
+  final Token augmentKeyword;
+  final Token semicolon;
+
+  LibraryAugmentationEnd(ParserAstType type,
+      {required this.libraryKeyword,
+      required this.augmentKeyword,
+      required this.semicolon})
+      : super("LibraryAugmentation", type);
+
+  @override
+  Map<String, Object?> get deprecatedArguments => {
+        "libraryKeyword": libraryKeyword,
+        "augmentKeyword": augmentKeyword,
+        "semicolon": semicolon,
+      };
+}
+
 class LibraryNameBegin extends ParserAstNode {
   final Token token;
 
diff --git a/pkg/front_end/test/async_but_no_await_git_test.dart b/pkg/front_end/test/async_but_no_await_git_test.dart
index 6721ee1..fb27bc2 100644
--- a/pkg/front_end/test/async_but_no_await_git_test.dart
+++ b/pkg/front_end/test/async_but_no_await_git_test.dart
@@ -31,11 +31,11 @@
 Future<void> main(List<String> args) async {
   api.CompilerOptions compilerOptions = getOptions();
 
-  Uri dotPackagesUri = repoDir.resolve(".packages");
-  if (!new File.fromUri(dotPackagesUri).existsSync()) {
+  Uri packageConfigUri = repoDir.resolve(".dart_tool/package_config.json");
+  if (!new File.fromUri(packageConfigUri).existsSync()) {
     throw "Couldn't find .packages";
   }
-  compilerOptions.packagesFileUri = dotPackagesUri;
+  compilerOptions.packagesFileUri = packageConfigUri;
 
   ProcessedOptions options = new ProcessedOptions(options: compilerOptions);
 
diff --git a/pkg/front_end/test/comments_on_certain_arguments_tool.dart b/pkg/front_end/test/comments_on_certain_arguments_tool.dart
index 3607cc2..c588afc 100644
--- a/pkg/front_end/test/comments_on_certain_arguments_tool.dart
+++ b/pkg/front_end/test/comments_on_certain_arguments_tool.dart
@@ -61,11 +61,11 @@
 Future<void> main(List<String> args) async {
   api.CompilerOptions compilerOptions = getOptions();
 
-  Uri dotPackagesUri = repoDir.resolve(".packages");
-  if (!new File.fromUri(dotPackagesUri).existsSync()) {
-    throw "Couldn't find .packages";
+  Uri packageConfigUri = repoDir.resolve(".dart_tool/package_config.json");
+  if (!new File.fromUri(packageConfigUri).existsSync()) {
+    throw "Couldn't find .dart_tool/package_config.json";
   }
-  compilerOptions.packagesFileUri = dotPackagesUri;
+  compilerOptions.packagesFileUri = packageConfigUri;
 
   ProcessedOptions options = new ProcessedOptions(options: compilerOptions);
 
diff --git a/pkg/front_end/test/deps_git_test.dart b/pkg/front_end/test/deps_git_test.dart
index 2017352..e123def 100644
--- a/pkg/front_end/test/deps_git_test.dart
+++ b/pkg/front_end/test/deps_git_test.dart
@@ -49,11 +49,11 @@
   Ticker ticker = new Ticker(isVerbose: false);
   CompilerOptions compilerOptions = getOptions();
 
-  Uri dotPackagesUri = repoDir.resolve(".packages");
-  if (!new File.fromUri(dotPackagesUri).existsSync()) {
-    throw "Couldn't find .packages";
+  Uri packageConfigUri = repoDir.resolve(".dart_tool/package_config.json");
+  if (!new File.fromUri(packageConfigUri).existsSync()) {
+    throw "Couldn't find .dart_tool/package_config.json";
   }
-  compilerOptions.packagesFileUri = dotPackagesUri;
+  compilerOptions.packagesFileUri = packageConfigUri;
 
   ProcessedOptions options = new ProcessedOptions(options: compilerOptions);
 
@@ -123,7 +123,7 @@
   // * Everything else is an error.
 
   // Remove white-listed non-dart files.
-  otherNonDartUris.remove(dotPackagesUri);
+  otherNonDartUris.remove(packageConfigUri);
   otherNonDartUris.remove(repoDir.resolve("sdk/lib/libraries.json"));
   otherNonDartUris.remove(repoDir.resolve(".dart_tool/package_config.json"));
 
diff --git a/pkg/front_end/test/explicit_creation_git_test.dart b/pkg/front_end/test/explicit_creation_git_test.dart
index 3200635..9a6676c 100644
--- a/pkg/front_end/test/explicit_creation_git_test.dart
+++ b/pkg/front_end/test/explicit_creation_git_test.dart
@@ -49,11 +49,11 @@
   Ticker ticker = new Ticker(isVerbose: false);
   api.CompilerOptions compilerOptions = getOptions();
 
-  Uri dotPackagesUri = repoDir.resolve(".packages");
-  if (!new File.fromUri(dotPackagesUri).existsSync()) {
-    throw "Couldn't find .packages";
+  Uri packageConfigUri = repoDir.resolve(".dart_tool/package_config.json");
+  if (!new File.fromUri(packageConfigUri).existsSync()) {
+    throw "Couldn't find .dart_tool/package_config.json";
   }
-  compilerOptions.packagesFileUri = dotPackagesUri;
+  compilerOptions.packagesFileUri = packageConfigUri;
 
   ProcessedOptions options = new ProcessedOptions(options: compilerOptions);
 
diff --git a/pkg/front_end/test/fasta/incremental_hello_test.dart b/pkg/front_end/test/fasta/incremental_hello_test.dart
index 125ef12..6a6daac 100644
--- a/pkg/front_end/test/fasta/incremental_hello_test.dart
+++ b/pkg/front_end/test/fasta/incremental_hello_test.dart
@@ -37,7 +37,7 @@
 
 Future<void> test({required bool sdkFromSource}) async {
   final CompilerOptions optionBuilder = new CompilerOptions()
-    ..packagesFileUri = Uri.base.resolve(".packages")
+    ..packagesFileUri = Uri.base.resolve(".dart_tool/package_config.json")
     ..target = new VmTarget(new TargetFlags())
     ..omitPlatform = true
     ..onDiagnostic = diagnosticMessageHandler
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index 65269dd..bbbcbc6b 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -537,7 +537,7 @@
     UriTranslator? uriTranslator = _uriTranslators[uriConfiguration];
     if (uriTranslator == null) {
       Uri sdk = Uri.base.resolve("sdk/");
-      Uri packages = Uri.base.resolve(".packages");
+      Uri packages = Uri.base.resolve(".dart_tool/package_config.json");
       FolderOptions folderOptions = computeFolderOptions(description);
       CompilerOptions compilerOptions = new CompilerOptions()
         ..onDiagnostic = (DiagnosticMessage message) {
diff --git a/pkg/front_end/test/fasta/types/dill_hierarchy_test.dart b/pkg/front_end/test/fasta/types/dill_hierarchy_test.dart
index a1c2094..193d734 100644
--- a/pkg/front_end/test/fasta/types/dill_hierarchy_test.dart
+++ b/pkg/front_end/test/fasta/types/dill_hierarchy_test.dart
@@ -86,7 +86,8 @@
 
   final CompilerContext context = new CompilerContext(new ProcessedOptions(
       options: new CompilerOptions()
-        ..packagesFileUri = Uri.base.resolve(".packages")));
+        ..packagesFileUri =
+            Uri.base.resolve(".dart_tool/package_config.json")));
 
   asyncTest(() => context.runInContext<void>((_) async {
         DillTarget target = new DillTarget(
diff --git a/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart b/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart
index 618c014..e4466af 100644
--- a/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart
+++ b/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart
@@ -66,7 +66,8 @@
   final Ticker ticker = new Ticker();
   final CompilerContext context = new CompilerContext(new ProcessedOptions(
       options: new CompilerOptions()
-        ..packagesFileUri = Uri.base.resolve(".packages")));
+        ..packagesFileUri =
+            Uri.base.resolve(".dart_tool/package_config.json")));
   context.runInContext<void>(
       (_) => new FastaLegacyUpperBoundTest(ticker, context).test());
 }
diff --git a/pkg/front_end/test/fasta/types/fasta_types_test.dart b/pkg/front_end/test/fasta/types/fasta_types_test.dart
index 55095c7..efbfacc 100644
--- a/pkg/front_end/test/fasta/types/fasta_types_test.dart
+++ b/pkg/front_end/test/fasta/types/fasta_types_test.dart
@@ -42,7 +42,8 @@
   final Ticker ticker = new Ticker(isVerbose: false);
   final CompilerContext context = new CompilerContext(new ProcessedOptions(
       options: new CompilerOptions()
-        ..packagesFileUri = Uri.base.resolve(".packages")));
+        ..packagesFileUri =
+            Uri.base.resolve(".dart_tool/package_config.json")));
   final Uri uri = Uri.parse("dart:core");
   final TypeParserEnvironment environment = new TypeParserEnvironment(uri, uri);
   final Component sdk = parseSdk(uri, environment);
diff --git a/pkg/front_end/test/fasta/types/subtypes_benchmark.dart b/pkg/front_end/test/fasta/types/subtypes_benchmark.dart
index 165313e..d1f1428 100644
--- a/pkg/front_end/test/fasta/types/subtypes_benchmark.dart
+++ b/pkg/front_end/test/fasta/types/subtypes_benchmark.dart
@@ -138,7 +138,8 @@
 
   final CompilerContext context = new CompilerContext(new ProcessedOptions(
       options: new CompilerOptions()
-        ..packagesFileUri = Uri.base.resolve(".packages")));
+        ..packagesFileUri =
+            Uri.base.resolve(".dart_tool/package_config.json")));
   await context.runInContext<void>((_) async {
     DillTarget target = new DillTarget(
         ticker,
diff --git a/pkg/front_end/test/outline_extractor_suite.dart b/pkg/front_end/test/outline_extractor_suite.dart
index 80754c7..02be7f5 100644
--- a/pkg/front_end/test/outline_extractor_suite.dart
+++ b/pkg/front_end/test/outline_extractor_suite.dart
@@ -100,7 +100,7 @@
   @override
   Future<Result<TestDescription>> run(
       TestDescription description, Context context) async {
-    Uri? packages = description.uri.resolve(".packages");
+    Uri? packages = description.uri.resolve(".dart_tool/package_config.json");
     if (!new File.fromUri(packages).existsSync()) {
       packages = null;
     }
@@ -142,7 +142,7 @@
   @override
   Future<Result<TestDescription>> run(
       TestDescription description, Context context) async {
-    Uri? packages = description.uri.resolve(".packages");
+    Uri? packages = description.uri.resolve(".dart_tool/package_config.json");
     if (!new File.fromUri(packages).existsSync()) {
       packages = null;
     }
diff --git a/pkg/front_end/test/outline_extractor_tester.dart b/pkg/front_end/test/outline_extractor_tester.dart
index 941b5c0..01fbca9 100644
--- a/pkg/front_end/test/outline_extractor_tester.dart
+++ b/pkg/front_end/test/outline_extractor_tester.dart
@@ -18,7 +18,7 @@
 Future<void> main(List<String> args) async {
   if (args.length != 1) throw "Wants 1 argument.";
   Uri input = Uri.base.resolve(args.single);
-  Uri packageUri = input.resolve(".packages");
+  Uri packageUri = input.resolve(".dart_tool/package_config.json");
   Stopwatch stopwatch = new Stopwatch()..start();
   PackageConfig packageFile = await loadPackageConfigUri(packageUri);
   print("Read packages file in ${stopwatch.elapsedMilliseconds} ms");
diff --git a/pkg/front_end/test/packages_format_error_test.dart b/pkg/front_end/test/packages_format_error_test.dart
index a19551f..593e1bd 100644
--- a/pkg/front_end/test/packages_format_error_test.dart
+++ b/pkg/front_end/test/packages_format_error_test.dart
@@ -26,7 +26,7 @@
 void main() {
   Uri root = Uri.parse("org-dartlang-test:///");
   MemoryFileSystem fs = new MemoryFileSystem(root);
-  Uri packages = root.resolve(".packages");
+  Uri packages = root.resolve(".dart_tool/package_config.json");
   fs.entityForUri(packages).writeAsStringSync("bad\n");
   List<DiagnosticMessage> messages = <DiagnosticMessage>[];
   CompilerContext c = new CompilerContext(new ProcessedOptions(
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index 92bd9ea..0e1788a 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -1359,6 +1359,27 @@
   }
 
   @override
+  void beginLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {
+    seen(libraryKeyword);
+    seen(augmentKeyword);
+    doPrint('beginLibraryAugmentation(' '$libraryKeyword, ' '$augmentKeyword)');
+    indent++;
+  }
+
+  @override
+  void endLibraryAugmentation(
+      Token libraryKeyword, Token augmentKeyword, Token semicolon) {
+    indent--;
+    seen(libraryKeyword);
+    seen(augmentKeyword);
+    seen(semicolon);
+    doPrint('endLibraryAugmentation('
+        '$libraryKeyword, '
+        '$augmentKeyword, '
+        '$semicolon)');
+  }
+
+  @override
   void beginLibraryName(Token token) {
     seen(token);
     doPrint('beginLibraryName(' '$token)');
diff --git a/pkg/front_end/test/parser_test_parser.dart b/pkg/front_end/test/parser_test_parser.dart
index 0e24107..c270e56 100644
--- a/pkg/front_end/test/parser_test_parser.dart
+++ b/pkg/front_end/test/parser_test_parser.dart
@@ -177,6 +177,15 @@
   }
 
   @override
+  Token parseLibraryAugmentation(Token libraryKeyword, Token augmentKeyword) {
+    doPrint('parseLibraryAugmentation(' '$libraryKeyword, ' '$augmentKeyword)');
+    indent++;
+    var result = super.parseLibraryAugmentation(libraryKeyword, augmentKeyword);
+    indent--;
+    return result;
+  }
+
+  @override
   Token parseLibraryName(Token libraryKeyword) {
     doPrint('parseLibraryName(' '$libraryKeyword)');
     indent++;
diff --git a/pkg/front_end/test/parts/parts_test.dart b/pkg/front_end/test/parts/parts_test.dart
index 9bfe8ff..3e42c00 100644
--- a/pkg/front_end/test/parts/parts_test.dart
+++ b/pkg/front_end/test/parts/parts_test.dart
@@ -13,7 +13,7 @@
   Directory dataDir = new Directory.fromUri(Platform.script.resolve('data'));
   CompilerOptions options = new CompilerOptions()
     ..sdkRoot = computePlatformBinariesLocation()
-    ..packagesFileUri = Uri.base.resolve('.packages');
+    ..packagesFileUri = Uri.base.resolve('.dart_tool/package_config.json');
   for (FileSystemEntity dir in dataDir.listSync()) {
     if (dir is Directory) {
       print('Compiling ${dir.path}');
diff --git a/pkg/testing/lib/src/discover.dart b/pkg/testing/lib/src/discover.dart
index 6b761ab..193590b 100644
--- a/pkg/testing/lib/src/discover.dart
+++ b/pkg/testing/lib/src/discover.dart
@@ -62,7 +62,7 @@
 Uri computePackageConfig() {
   String? path = Platform.packageConfig;
   if (path != null) return Uri.base.resolve(path);
-  return Uri.base.resolve(".packages");
+  return Uri.base.resolve(".dart_tool/package_config.json");
 }
 
 // TODO(eernst): Use `bool.hasEnvironment` below when possible;
diff --git a/runtime/lib/simd128.cc b/runtime/lib/simd128.cc
index 9adf5c3..92aee8a 100644
--- a/runtime/lib/simd128.cc
+++ b/runtime/lib/simd128.cc
@@ -195,7 +195,8 @@
   float _w;
   // ARM semantics are different from X86/X64 at an instruction level. Ensure
   // that we match the semantics of the architecture in the C version.
-#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
+#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) ||                   \
+    defined(USING_SIMULATOR)
   _x = self.x() < hi.x() ? self.x() : hi.x();
   _y = self.y() < hi.y() ? self.y() : hi.y();
   _z = self.z() < hi.z() ? self.z() : hi.z();
@@ -741,7 +742,8 @@
 
   // ARM semantics are different from X86/X64 at an instruction level. Ensure
   // that we match the semantics of the architecture in the C version.
-#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
+#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64) ||                   \
+    defined(USING_SIMULATOR)
   _x = self.x() < hi.x() ? self.x() : hi.x();
   _y = self.y() < hi.y() ? self.y() : hi.y();
   _x = lo.x() < _x ? _x : lo.x();
diff --git a/runtime/vm/compiler/assembler/assembler_arm64_test.cc b/runtime/vm/compiler/assembler/assembler_arm64_test.cc
index 0010aba..9daefc3 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64_test.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64_test.cc
@@ -6732,6 +6732,25 @@
       "ret\n");
 }
 
+// Verify that vmaxs(-0.0, 0.0) = 0.0
+ASSEMBLER_TEST_GENERATE(Vmaxs_zero, assembler) {
+  __ veor(V1, V1, V1);
+  __ vnegd(V2, V1);
+  __ vmaxs(V0, V2, V1);
+  __ ret();
+}
+
+ASSEMBLER_TEST_RUN(Vmaxs_zero, test) {
+  typedef double (*DoubleReturn)() DART_UNUSED;
+  double d = EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry());
+  EXPECT_EQ(true, !signbit(d) && (d == 0.0));
+  EXPECT_DISASSEMBLY(
+      "veor v1, v1, v1\n"
+      "vnegd v2, v1\n"
+      "vmaxs v0, v2, v1\n"
+      "ret\n");
+}
+
 ASSEMBLER_TEST_GENERATE(Vmaxs, assembler) {
   __ LoadDImmediate(V0, 10.5);
   __ LoadDImmediate(V1, 10.0);
@@ -6791,6 +6810,25 @@
       "ret\n");
 }
 
+// Verify that vmaxd(-0.0, 0.0) = 0.0
+ASSEMBLER_TEST_GENERATE(Vmaxd_zero, assembler) {
+  __ veor(V1, V1, V1);
+  __ vnegd(V2, V1);
+  __ vmaxd(V0, V2, V1);
+  __ ret();
+}
+
+ASSEMBLER_TEST_RUN(Vmaxd_zero, test) {
+  typedef double (*DoubleReturn)() DART_UNUSED;
+  double d = EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry());
+  EXPECT_EQ(true, !signbit(d) && (d == 0.0));
+  EXPECT_DISASSEMBLY(
+      "veor v1, v1, v1\n"
+      "vnegd v2, v1\n"
+      "vmaxd v0, v2, v1\n"
+      "ret\n");
+}
+
 ASSEMBLER_TEST_GENERATE(Vmaxd, assembler) {
   __ LoadDImmediate(V0, 21.0);
   __ LoadDImmediate(V1, 20.5);
@@ -6826,6 +6864,26 @@
       "ret\n");
 }
 
+// Verify that vmins(-0.0, 0.0) = -0.0
+ASSEMBLER_TEST_GENERATE(Vmins_zero, assembler) {
+  __ veor(V1, V1, V1);
+  __ vnegd(V2, V1);
+  __ vmins(V0, V1, V2);
+  __ ret();
+}
+
+ASSEMBLER_TEST_RUN(Vmins_zero, test) {
+  typedef double (*DoubleReturn)() DART_UNUSED;
+  double d = EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry());
+  fprintf(stderr, "d: %f\n", d);
+  EXPECT_EQ(true, signbit(d) && (d == 0.0));
+  EXPECT_DISASSEMBLY(
+      "veor v1, v1, v1\n"
+      "vnegd v2, v1\n"
+      "vmins v0, v1, v2\n"
+      "ret\n");
+}
+
 ASSEMBLER_TEST_GENERATE(Vmins, assembler) {
   __ LoadDImmediate(V0, 10.5);
   __ LoadDImmediate(V1, 11.0);
@@ -6885,6 +6943,26 @@
       "ret\n");
 }
 
+// Verify that vmind(-0.0, 0.0) = -0.0
+ASSEMBLER_TEST_GENERATE(Vmind_zero, assembler) {
+  __ veor(V1, V1, V1);
+  __ vnegd(V2, V1);
+  __ vmind(V0, V1, V2);
+  __ ret();
+}
+
+ASSEMBLER_TEST_RUN(Vmind_zero, test) {
+  typedef double (*DoubleReturn)() DART_UNUSED;
+  double d = EXECUTE_TEST_CODE_DOUBLE(DoubleReturn, test->entry());
+  fprintf(stderr, "d: %f\n", d);
+  EXPECT_EQ(true, signbit(d) && (d == 0.0));
+  EXPECT_DISASSEMBLY(
+      "veor v1, v1, v1\n"
+      "vnegd v2, v1\n"
+      "vmind v0, v1, v2\n"
+      "ret\n");
+}
+
 ASSEMBLER_TEST_GENERATE(Vmind, assembler) {
   __ LoadDImmediate(V0, 21.0);
   __ LoadDImmediate(V1, 21.5);
diff --git a/runtime/vm/compiler/assembler/assembler_arm_test.cc b/runtime/vm/compiler/assembler/assembler_arm_test.cc
index 11adcf2..be8de03 100644
--- a/runtime/vm/compiler/assembler/assembler_arm_test.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm_test.cc
@@ -3409,6 +3409,25 @@
   }
 }
 
+// Verify that vmins(-0.0, 0.0) = -0.0
+ASSEMBLER_TEST_GENERATE(Vminqs_zero, assembler) {
+  if (TargetCPUFeatures::neon_supported()) {
+    __ veorq(Q1, Q1, Q1);
+    __ vnegqs(Q2, Q1);
+    __ vminqs(Q0, Q1, Q2);
+  }
+  __ Ret();
+}
+
+ASSEMBLER_TEST_RUN(Vminqs_zero, test) {
+  EXPECT(test != NULL);
+  if (TargetCPUFeatures::neon_supported()) {
+    typedef int (*Tst)() DART_UNUSED;
+    float res = EXECUTE_TEST_CODE_FLOAT(Tst, test->entry());
+    EXPECT_EQ(true, signbit(res) && (res == 0.0));
+  }
+}
+
 ASSEMBLER_TEST_GENERATE(Vminqs, assembler) {
   if (TargetCPUFeatures::neon_supported()) {
     __ LoadSImmediate(S0, 1.0);
@@ -3441,6 +3460,25 @@
   }
 }
 
+ASSEMBLER_TEST_GENERATE(Vmaxqs_zero, assembler) {
+  if (TargetCPUFeatures::neon_supported()) {
+    __ veorq(Q1, Q1, Q1);
+    __ vnegqs(Q2, Q1);
+    __ vmaxqs(Q0, Q2, Q1);
+  }
+  __ Ret();
+}
+
+// Verify that vmaxqs(-0.0, 0.0) = 0.0
+ASSEMBLER_TEST_RUN(Vmaxqs_zero, test) {
+  EXPECT(test != NULL);
+  if (TargetCPUFeatures::neon_supported()) {
+    typedef int (*Tst)() DART_UNUSED;
+    float res = EXECUTE_TEST_CODE_FLOAT(Tst, test->entry());
+    EXPECT_EQ(true, !signbit(res) && (res == 0.0));
+  }
+}
+
 ASSEMBLER_TEST_GENERATE(Vmaxqs, assembler) {
   if (TargetCPUFeatures::neon_supported()) {
     __ LoadSImmediate(S0, 1.0);
diff --git a/runtime/vm/instructions.cc b/runtime/vm/instructions.cc
new file mode 100644
index 0000000..b265420
--- /dev/null
+++ b/runtime/vm/instructions.cc
@@ -0,0 +1,41 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+#include "vm/instructions.h"
+
+#include "vm/object.h"
+#if defined(DART_PRECOMPILER)
+#include "vm/compiler/aot/precompiler.h"
+#endif
+
+namespace dart {
+
+bool ObjectAtPoolIndex(const Code& code, intptr_t index, Object* obj) {
+#if defined(DART_PRECOMPILER)
+  if (FLAG_precompiled_mode) {
+    Precompiler* precompiler = Precompiler::Instance();
+    if (precompiler != nullptr) {
+      compiler::ObjectPoolBuilder* pool =
+          precompiler->global_object_pool_builder();
+      if (index < pool->CurrentLength()) {
+        compiler::ObjectPoolBuilderEntry& entry = pool->EntryAt(index);
+        if (entry.type() == compiler::ObjectPoolBuilderEntry::kTaggedObject) {
+          *obj = entry.obj_->ptr();
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+#endif
+  const ObjectPool& pool = ObjectPool::Handle(code.GetObjectPool());
+  if (!pool.IsNull() && (index < pool.Length()) &&
+      (pool.TypeAt(index) == ObjectPool::EntryType::kTaggedObject)) {
+    *obj = pool.ObjectAt(index);
+    return true;
+  }
+  return false;
+}
+
+}  // namespace dart
diff --git a/runtime/vm/instructions.h b/runtime/vm/instructions.h
index 5dbe5d6..3ddb87d 100644
--- a/runtime/vm/instructions.h
+++ b/runtime/vm/instructions.h
@@ -26,6 +26,7 @@
 class Object;
 class Code;
 
+bool ObjectAtPoolIndex(const Code& code, intptr_t index, Object* obj);
 bool DecodeLoadObjectFromPoolOrThread(uword pc, const Code& code, Object* obj);
 
 #if !defined(TARGET_ARCH_IA32)
diff --git a/runtime/vm/instructions_arm.cc b/runtime/vm/instructions_arm.cc
index ecacd45..9a3f92f 100644
--- a/runtime/vm/instructions_arm.cc
+++ b/runtime/vm/instructions_arm.cc
@@ -197,12 +197,7 @@
   Register dst;
   if (IsLoadWithOffset(instr, PP, &offset, &dst)) {
     intptr_t index = ObjectPool::IndexFromOffset(offset);
-    const ObjectPool& pool = ObjectPool::Handle(code.GetObjectPool());
-    if (!pool.IsNull() && (index < pool.Length()) &&
-        (pool.TypeAt(index) == ObjectPool::EntryType::kTaggedObject)) {
-      *obj = pool.ObjectAt(index);
-      return true;
-    }
+    return ObjectAtPoolIndex(code, index, obj);
   } else if (IsLoadWithOffset(instr, THR, &offset, &dst)) {
     return Thread::ObjectAtOffset(offset, obj);
   }
diff --git a/runtime/vm/instructions_arm64.cc b/runtime/vm/instructions_arm64.cc
index 0c64963..d78c779 100644
--- a/runtime/vm/instructions_arm64.cc
+++ b/runtime/vm/instructions_arm64.cc
@@ -304,17 +304,27 @@
       // PP is untagged on ARM64.
       ASSERT(Utils::IsAligned(offset, 8));
       intptr_t index = ObjectPool::IndexFromOffset(offset - kHeapObjectTag);
-      const ObjectPool& pool = ObjectPool::Handle(code.GetObjectPool());
-      if (!pool.IsNull() && (index < pool.Length()) &&
-          (pool.TypeAt(index) == ObjectPool::EntryType::kTaggedObject)) {
-        *obj = pool.ObjectAt(index);
-        return true;
-      }
+      return ObjectAtPoolIndex(code, index, obj);
     } else if (instr->RnField() == THR) {
       return Thread::ObjectAtOffset(offset, obj);
     }
+    if (instr->RnField() == instr->RtField()) {
+      Instr* add = Instr::At(pc - Instr::kInstrSize);
+      if (add->IsAddSubImmOp() && add->SFField() && (instr->Bit(22) == 1) &&
+          (add->RdField() == add->RtField())) {
+        offset = (add->Imm12Field() << 12) + offset;
+        if (add->RnField() == PP) {
+          // PP is untagged on ARM64.
+          ASSERT(Utils::IsAligned(offset, 8));
+          intptr_t index = ObjectPool::IndexFromOffset(offset - kHeapObjectTag);
+          return ObjectAtPoolIndex(code, index, obj);
+        } else if (add->RnField() == THR) {
+          return Thread::ObjectAtOffset(offset, obj);
+        }
+      }
+    }
+    // TODO(rmacnak): Loads with offsets beyond 24 bits.
   }
-  // TODO(rmacnak): Loads with offsets beyond 12 bits.
 
   if (instr->IsAddSubImmOp() && instr->SFField() &&
       (instr->RnField() == NULL_REG)) {
diff --git a/runtime/vm/instructions_riscv.cc b/runtime/vm/instructions_riscv.cc
index cabe480..3a7d2a8 100644
--- a/runtime/vm/instructions_riscv.cc
+++ b/runtime/vm/instructions_riscv.cc
@@ -231,12 +231,7 @@
           return false;  // Being used as argument register A5.
         }
         intptr_t index = ObjectPool::IndexFromOffset(offset - kHeapObjectTag);
-        const ObjectPool& pool = ObjectPool::Handle(code.GetObjectPool());
-        if (!pool.IsNull() && (index < pool.Length()) &&
-            (pool.TypeAt(index) == ObjectPool::EntryType::kTaggedObject)) {
-          *obj = pool.ObjectAt(index);
-          return true;
-        }
+        return ObjectAtPoolIndex(code, index, obj);
       } else if (instr.rs1p() == THR) {
         return Thread::ObjectAtOffset(offset, obj);
       }
@@ -255,12 +250,7 @@
           return false;  // Being used as argument register A5.
         }
         intptr_t index = ObjectPool::IndexFromOffset(offset - kHeapObjectTag);
-        const ObjectPool& pool = ObjectPool::Handle(code.GetObjectPool());
-        if (!pool.IsNull() && (index < pool.Length()) &&
-            (pool.TypeAt(index) == ObjectPool::EntryType::kTaggedObject)) {
-          *obj = pool.ObjectAt(index);
-          return true;
-        }
+        return ObjectAtPoolIndex(code, index, obj);
       } else if (instr.rs1() == THR) {
         return Thread::ObjectAtOffset(offset, obj);
       }
diff --git a/runtime/vm/instructions_x64.cc b/runtime/vm/instructions_x64.cc
index 30d7ed7..e2a6403 100644
--- a/runtime/vm/instructions_x64.cc
+++ b/runtime/vm/instructions_x64.cc
@@ -59,21 +59,11 @@
     if ((bytes[1] == 0x8b) || (bytes[1] == 0x3b)) {  // movq, cmpq
       if ((bytes[2] & 0xc7) == (0x80 | (PP & 7))) {  // [r15+disp32]
         intptr_t index = IndexFromPPLoadDisp32(pc + 3);
-        const ObjectPool& pool = ObjectPool::Handle(code.GetObjectPool());
-        if (!pool.IsNull() && (index < pool.Length()) &&
-            (pool.TypeAt(index) == ObjectPool::EntryType::kTaggedObject)) {
-          *obj = pool.ObjectAt(index);
-          return true;
-        }
+        return ObjectAtPoolIndex(code, index, obj);
       }
       if ((bytes[2] & 0xc7) == (0x40 | (PP & 7))) {  // [r15+disp8]
         intptr_t index = IndexFromPPLoadDisp8(pc + 3);
-        const ObjectPool& pool = ObjectPool::Handle(code.GetObjectPool());
-        if (!pool.IsNull() && (index < pool.Length()) &&
-            (pool.TypeAt(index) == ObjectPool::EntryType::kTaggedObject)) {
-          *obj = pool.ObjectAt(index);
-          return true;
-        }
+        return ObjectAtPoolIndex(code, index, obj);
       }
     }
   }
diff --git a/runtime/vm/log.cc b/runtime/vm/log.cc
index 809df77..70669b3 100644
--- a/runtime/vm/log.cc
+++ b/runtime/vm/log.cc
@@ -161,8 +161,11 @@
 
 bool Log::ShouldLogForIsolateGroup(const IsolateGroup* isolate_group) {
   if (FLAG_isolate_log_filter == nullptr) {
+    // By default, do not log for the service or kernel isolates.
+    if (isolate_group == Dart::vm_isolate_group()) {
+      return true;
+    }
     if (IsolateGroup::IsSystemIsolateGroup(isolate_group)) {
-      // By default, do not log for the service or kernel isolates.
       return false;
     }
     return true;
diff --git a/runtime/vm/simulator_arm.cc b/runtime/vm/simulator_arm.cc
index 8dd8013..e6381eb 100644
--- a/runtime/vm/simulator_arm.cc
+++ b/runtime/vm/simulator_arm.cc
@@ -2893,6 +2893,22 @@
   s2->data_[i2].u = tmp;
 }
 
+static float vminf(float f1, float f2) {
+  if (f1 == f2) {
+    // take care of (-0.0) < 0.0, (they are equal according to minss)
+    return signbit(f1) ? f1 : f2;
+  }
+  return f1 > f2 ? f2 : f1;
+}
+
+static float vmaxf(float f1, float f2) {
+  if (f1 == f2) {
+    // take care of (-0.0) < 0.0, (they are equal according to minss)
+    return signbit(f1) ? f2 : f1;
+  }
+  return f1 < f2 ? f2 : f1;
+}
+
 void Simulator::DecodeSIMDDataProcessing(Instr* instr) {
   ASSERT(instr->ConditionField() == kSpecialCondition);
 
@@ -3118,13 +3134,13 @@
                (instr->Bits(20, 2) == 2) && (instr->Bits(23, 2) == 0)) {
       // Format(instr, "vminqs 'qd, 'qn, 'qm");
       for (int i = 0; i < 4; i++) {
-        s8d.data_[i].f = fminf(s8n.data_[i].f, s8m.data_[i].f);
+        s8d.data_[i].f = vminf(s8n.data_[i].f, s8m.data_[i].f);
       }
     } else if ((instr->Bits(8, 4) == 15) && (instr->Bit(4) == 0) &&
                (instr->Bits(20, 2) == 0) && (instr->Bits(23, 2) == 0)) {
       // Format(instr, "vmaxqs 'qd, 'qn, 'qm");
       for (int i = 0; i < 4; i++) {
-        s8d.data_[i].f = fmaxf(s8n.data_[i].f, s8m.data_[i].f);
+        s8d.data_[i].f = vmaxf(s8n.data_[i].f, s8m.data_[i].f);
       }
     } else if ((instr->Bits(8, 4) == 7) && (instr->Bit(4) == 0) &&
                (instr->Bits(20, 2) == 3) && (instr->Bits(23, 2) == 3) &&
diff --git a/runtime/vm/simulator_arm64.cc b/runtime/vm/simulator_arm64.cc
index 4f34a91..fbb9df4 100644
--- a/runtime/vm/simulator_arm64.cc
+++ b/runtime/vm/simulator_arm64.cc
@@ -3003,6 +3003,38 @@
   }
 }
 
+static float vminf(float f1, float f2) {
+  if (f1 == f2) {
+    // take care of (-0.0) < 0.0, (they are equal according to minss)
+    return signbit(f1) ? f1 : f2;
+  }
+  return f1 > f2 ? f2 : f1;
+}
+
+static float vmaxf(float f1, float f2) {
+  if (f1 == f2) {
+    // take care of (-0.0) < 0.0, (they are equal according to minss)
+    return signbit(f1) ? f2 : f1;
+  }
+  return f1 < f2 ? f2 : f1;
+}
+
+static double vmind(double f1, double f2) {
+  if (f1 == f2) {
+    // take care of (-0.0) < 0.0, (they are equal according to minss)
+    return signbit(f1) ? f1 : f2;
+  }
+  return f1 > f2 ? f2 : f1;
+}
+
+static double vmaxd(double f1, double f2) {
+  if (f1 == f2) {
+    // take care of (-0.0) < 0.0, (they are equal according to minss)
+    return signbit(f1) ? f2 : f1;
+  }
+  return f1 < f2 ? f2 : f1;
+}
+
 void Simulator::DecodeSIMDThreeSame(Instr* instr) {
   const int Q = instr->Bit(30);
   const int U = instr->Bit(29);
@@ -3069,11 +3101,11 @@
       } else if ((U == 0) && (opcode == 0x1e)) {
         if (instr->Bit(23) == 1) {
           // Format(instr, "vmin'vsz 'vd, 'vn, 'vm");
-          const float m = fminf(vn_flt, vm_flt);
+          const float m = vminf(vn_flt, vm_flt);
           res = bit_cast<int32_t, float>(m);
         } else {
           // Format(instr, "vmax'vsz 'vd, 'vn, 'vm");
-          const float m = fmaxf(vn_flt, vm_flt);
+          const float m = vmaxf(vn_flt, vm_flt);
           res = bit_cast<int32_t, float>(m);
         }
       } else if ((U == 0) && (opcode == 0x1f)) {
@@ -3143,11 +3175,11 @@
       } else if ((U == 0) && (opcode == 0x1e)) {
         if (instr->Bit(23) == 1) {
           // Format(instr, "vmin'vsz 'vd, 'vn, 'vm");
-          const double m = fmin(vn_dbl, vm_dbl);
+          const double m = vmind(vn_dbl, vm_dbl);
           res = bit_cast<int64_t, double>(m);
         } else {
           // Format(instr, "vmax'vsz 'vd, 'vn, 'vm");
-          const double m = fmax(vn_dbl, vm_dbl);
+          const double m = vmaxd(vn_dbl, vm_dbl);
           res = bit_cast<int64_t, double>(m);
         }
       } else {
diff --git a/runtime/vm/vm_sources.gni b/runtime/vm/vm_sources.gni
index 0a2264a..b7a9c01 100644
--- a/runtime/vm/vm_sources.gni
+++ b/runtime/vm/vm_sources.gni
@@ -126,6 +126,7 @@
   "hash_table.h",
   "image_snapshot.cc",
   "image_snapshot.h",
+  "instructions.cc",
   "instructions.h",
   "instructions_arm.cc",
   "instructions_arm.h",
diff --git a/sdk/lib/async/zone.dart b/sdk/lib/async/zone.dart
index e17cc71..b9bcd19 100644
--- a/sdk/lib/async/zone.dart
+++ b/sdk/lib/async/zone.dart
@@ -299,42 +299,6 @@
   const _ZoneFunction(this.zone, this.function);
 }
 
-class _RunNullaryZoneFunction {
-  final _Zone zone;
-  final RunHandler function;
-  const _RunNullaryZoneFunction(this.zone, this.function);
-}
-
-class _RunUnaryZoneFunction {
-  final _Zone zone;
-  final RunUnaryHandler function;
-  const _RunUnaryZoneFunction(this.zone, this.function);
-}
-
-class _RunBinaryZoneFunction {
-  final _Zone zone;
-  final RunBinaryHandler function;
-  const _RunBinaryZoneFunction(this.zone, this.function);
-}
-
-class _RegisterNullaryZoneFunction {
-  final _Zone zone;
-  final RegisterCallbackHandler function;
-  const _RegisterNullaryZoneFunction(this.zone, this.function);
-}
-
-class _RegisterUnaryZoneFunction {
-  final _Zone zone;
-  final RegisterUnaryCallbackHandler function;
-  const _RegisterUnaryZoneFunction(this.zone, this.function);
-}
-
-class _RegisterBinaryZoneFunction {
-  final _Zone zone;
-  final RegisterBinaryCallbackHandler function;
-  const _RegisterBinaryZoneFunction(this.zone, this.function);
-}
-
 /// A parameter object with custom zone function handlers for [Zone.fork].
 ///
 /// A zone specification is a parameter object passed to [Zone.fork]
@@ -1069,12 +1033,12 @@
 
   // TODO(floitsch): the types of the `_ZoneFunction`s should have a type for
   // all fields.
-  _RunNullaryZoneFunction get _run;
-  _RunUnaryZoneFunction get _runUnary;
-  _RunBinaryZoneFunction get _runBinary;
-  _RegisterNullaryZoneFunction get _registerCallback;
-  _RegisterUnaryZoneFunction get _registerUnaryCallback;
-  _RegisterBinaryZoneFunction get _registerBinaryCallback;
+  _ZoneFunction<RunHandler> get _run;
+  _ZoneFunction<RunUnaryHandler> get _runUnary;
+  _ZoneFunction<RunBinaryHandler> get _runBinary;
+  _ZoneFunction<RegisterCallbackHandler> get _registerCallback;
+  _ZoneFunction<RegisterUnaryCallbackHandler> get _registerUnaryCallback;
+  _ZoneFunction<RegisterBinaryCallbackHandler> get _registerBinaryCallback;
   _ZoneFunction<ErrorCallbackHandler> get _errorCallback;
   _ZoneFunction<ScheduleMicrotaskHandler> get _scheduleMicrotask;
   _ZoneFunction<CreateTimerHandler> get _createTimer;
@@ -1121,12 +1085,12 @@
   // inheritable zone functions.
   // TODO(floitsch): the types of the `_ZoneFunction`s should have a type for
   // all fields, but we can't use generic function types as type arguments.
-  _RunNullaryZoneFunction _run;
-  _RunUnaryZoneFunction _runUnary;
-  _RunBinaryZoneFunction _runBinary;
-  _RegisterNullaryZoneFunction _registerCallback;
-  _RegisterUnaryZoneFunction _registerUnaryCallback;
-  _RegisterBinaryZoneFunction _registerBinaryCallback;
+  _ZoneFunction<RunHandler> _run;
+  _ZoneFunction<RunUnaryHandler> _runUnary;
+  _ZoneFunction<RunBinaryHandler> _runBinary;
+  _ZoneFunction<RegisterCallbackHandler> _registerCallback;
+  _ZoneFunction<RegisterUnaryCallbackHandler> _registerUnaryCallback;
+  _ZoneFunction<RegisterBinaryCallbackHandler> _registerBinaryCallback;
   _ZoneFunction<ErrorCallbackHandler> _errorCallback;
   _ZoneFunction<ScheduleMicrotaskHandler> _scheduleMicrotask;
   _ZoneFunction<CreateTimerHandler> _createTimer;
@@ -1168,29 +1132,30 @@
     // All other zones have a non-null parent.
     var run = specification.run;
     if (run != null) {
-      _run = _RunNullaryZoneFunction(this, run);
+      _run = _ZoneFunction<RunHandler>(this, run);
     }
     var runUnary = specification.runUnary;
     if (runUnary != null) {
-      _runUnary = _RunUnaryZoneFunction(this, runUnary);
+      _runUnary = _ZoneFunction<RunUnaryHandler>(this, runUnary);
     }
     var runBinary = specification.runBinary;
     if (runBinary != null) {
-      _runBinary = _RunBinaryZoneFunction(this, runBinary);
+      _runBinary = _ZoneFunction<RunBinaryHandler>(this, runBinary);
     }
     var registerCallback = specification.registerCallback;
     if (registerCallback != null) {
-      _registerCallback = _RegisterNullaryZoneFunction(this, registerCallback);
+      _registerCallback =
+          _ZoneFunction<RegisterCallbackHandler>(this, registerCallback);
     }
     var registerUnaryCallback = specification.registerUnaryCallback;
     if (registerUnaryCallback != null) {
-      _registerUnaryCallback =
-          _RegisterUnaryZoneFunction(this, registerUnaryCallback);
+      _registerUnaryCallback = _ZoneFunction<RegisterUnaryCallbackHandler>(
+          this, registerUnaryCallback);
     }
     var registerBinaryCallback = specification.registerBinaryCallback;
     if (registerBinaryCallback != null) {
-      _registerBinaryCallback =
-          _RegisterBinaryZoneFunction(this, registerBinaryCallback);
+      _registerBinaryCallback = _ZoneFunction<RegisterBinaryCallbackHandler>(
+          this, registerBinaryCallback);
     }
     var errorCallback = specification.errorCallback;
     if (errorCallback != null) {
@@ -1546,18 +1511,21 @@
 class _RootZone extends _Zone {
   const _RootZone();
 
-  _RunNullaryZoneFunction get _run =>
-      const _RunNullaryZoneFunction(_rootZone, _rootRun);
-  _RunUnaryZoneFunction get _runUnary =>
-      const _RunUnaryZoneFunction(_rootZone, _rootRunUnary);
-  _RunBinaryZoneFunction get _runBinary =>
-      const _RunBinaryZoneFunction(_rootZone, _rootRunBinary);
-  _RegisterNullaryZoneFunction get _registerCallback =>
-      const _RegisterNullaryZoneFunction(_rootZone, _rootRegisterCallback);
-  _RegisterUnaryZoneFunction get _registerUnaryCallback =>
-      const _RegisterUnaryZoneFunction(_rootZone, _rootRegisterUnaryCallback);
-  _RegisterBinaryZoneFunction get _registerBinaryCallback =>
-      const _RegisterBinaryZoneFunction(_rootZone, _rootRegisterBinaryCallback);
+  _ZoneFunction<RunHandler> get _run =>
+      const _ZoneFunction<RunHandler>(_rootZone, _rootRun);
+  _ZoneFunction<RunUnaryHandler> get _runUnary =>
+      const _ZoneFunction<RunUnaryHandler>(_rootZone, _rootRunUnary);
+  _ZoneFunction<RunBinaryHandler> get _runBinary =>
+      const _ZoneFunction<RunBinaryHandler>(_rootZone, _rootRunBinary);
+  _ZoneFunction<RegisterCallbackHandler> get _registerCallback =>
+      const _ZoneFunction<RegisterCallbackHandler>(
+          _rootZone, _rootRegisterCallback);
+  _ZoneFunction<RegisterUnaryCallbackHandler> get _registerUnaryCallback =>
+      const _ZoneFunction<RegisterUnaryCallbackHandler>(
+          _rootZone, _rootRegisterUnaryCallback);
+  _ZoneFunction<RegisterBinaryCallbackHandler> get _registerBinaryCallback =>
+      const _ZoneFunction<RegisterBinaryCallbackHandler>(
+          _rootZone, _rootRegisterBinaryCallback);
   _ZoneFunction<ErrorCallbackHandler> get _errorCallback =>
       const _ZoneFunction<ErrorCallbackHandler>(_rootZone, _rootErrorCallback);
   _ZoneFunction<ScheduleMicrotaskHandler> get _scheduleMicrotask =>
diff --git a/tests/lib_2/typed_data/float64x2_clamp_test.dart b/tests/lib_2/typed_data/float64x2_clamp_test.dart
index 3bbe32f..ea028d0 100644
--- a/tests/lib_2/typed_data/float64x2_clamp_test.dart
+++ b/tests/lib_2/typed_data/float64x2_clamp_test.dart
@@ -1,7 +1,8 @@
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
+// VMOptions=--intrinsify --optimization-counter-threshold=10 --no-background-compilation
+// VMOptions=--no-intrinsify --optimization-counter-threshold=10 --no-background-compilation
 
 // @dart = 2.9
 
diff --git a/tools/VERSION b/tools/VERSION
index ed908bd..05f1cda 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 106
+PRERELEASE 107
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/generate_package_config.dart b/tools/generate_package_config.dart
index 150f06f..3553d41 100644
--- a/tools/generate_package_config.dart
+++ b/tools/generate_package_config.dart
@@ -20,6 +20,7 @@
     ...listSubdirectories(platform('third_party/pkg')),
     ...listSubdirectories(platform('third_party/pkg/file/packages')),
     ...listSubdirectories(platform('third_party/pkg/test/pkgs')),
+    ...listSubdirectories(platform('third_party/pkg/shelf/pkgs')),
     platform('pkg/vm_service/test/test_package'),
     platform('runtime/observatory_2'),
     platform(
@@ -36,6 +37,12 @@
   // Remove the package at the top-level of the package:file monorepo.
   packageDirs.remove(platform('third_party/pkg/file'));
 
+  // Temporarily ignored copies of shelf mono repo package
+  packageDirs.remove(platform('third_party/pkg/shelf_packages_handler'));
+  packageDirs.remove(platform('third_party/pkg/shelf_proxy'));
+  packageDirs.remove(platform('third_party/pkg/shelf_static'));
+  packageDirs.remove(platform('third_party/pkg/shelf_web_socket'));
+
   var cfePackageDirs = [
     platform('pkg/front_end/testcases'),
   ];