[analysis_server] Fix LSP class name generation for nested inline types + minor renames

Change-Id: Ia8321eedeb783ffe5e91a508e258a87aa9efcf31
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/245372
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
index 736dda0..4d212ef 100644
--- a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
@@ -1365,8 +1365,8 @@
   static CallHierarchyRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -1381,7 +1381,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -1411,9 +1411,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -1450,8 +1451,12 @@
   bool operator ==(Object other) {
     if (other is CallHierarchyRegistrationOptions &&
         other.runtimeType == CallHierarchyRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -3192,8 +3197,8 @@
         .toList();
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
@@ -3215,7 +3220,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The server provides support to resolve additional information for a code
   /// action.
@@ -3263,9 +3268,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -3304,8 +3310,12 @@
         other.runtimeType == CodeActionRegistrationOptions) {
       return listEqual(codeActionKinds, other.codeActionKinds,
               (CodeActionKind a, CodeActionKind b) => a == b) &&
-          listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+          listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           resolveProvider == other.resolveProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -3841,8 +3851,8 @@
   static CodeLensRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
@@ -3857,7 +3867,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// Code lens has a resolve provider as well.
   final bool? resolveProvider;
@@ -3886,9 +3896,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -3925,8 +3936,12 @@
   bool operator ==(Object other) {
     if (other is CodeLensRegistrationOptions &&
         other.runtimeType == CodeLensRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           resolveProvider == other.resolveProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -6071,6 +6086,101 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
+class CompletionItemEditRange implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    CompletionItemEditRange.canParse,
+    CompletionItemEditRange.fromJson,
+  );
+
+  CompletionItemEditRange({
+    required this.insert,
+    required this.replace,
+  });
+  static CompletionItemEditRange fromJson(Map<String, Object?> json) {
+    final insertJson = json['insert'];
+    final insert = Range.fromJson(insertJson as Map<String, Object?>);
+    final replaceJson = json['replace'];
+    final replace = Range.fromJson(replaceJson as Map<String, Object?>);
+    return CompletionItemEditRange(
+      insert: insert,
+      replace: replace,
+    );
+  }
+
+  final Range insert;
+  final Range replace;
+
+  Map<String, Object?> toJson() {
+    var result = <String, Object?>{};
+    result['insert'] = insert.toJson();
+    result['replace'] = replace.toJson();
+    return result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
+      reporter.push('insert');
+      try {
+        if (!obj.containsKey('insert')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final insert = obj['insert'];
+        if (insert == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(insert, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('replace');
+      try {
+        if (!obj.containsKey('replace')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final replace = obj['replace'];
+        if (replace == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(Range.canParse(replace, reporter))) {
+          reporter.reportError('must be of type Range');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      return true;
+    } else {
+      reporter.reportError('must be of type CompletionItemEditRange');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is CompletionItemEditRange &&
+        other.runtimeType == CompletionItemEditRange) {
+      return insert == other.insert && replace == other.replace && true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => Object.hash(
+        insert,
+        replace,
+      );
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
 class CompletionItemInsertTextModeSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
     CompletionItemInsertTextModeSupport.canParse,
@@ -6611,101 +6721,6 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class CompletionListEditRange implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    CompletionListEditRange.canParse,
-    CompletionListEditRange.fromJson,
-  );
-
-  CompletionListEditRange({
-    required this.insert,
-    required this.replace,
-  });
-  static CompletionListEditRange fromJson(Map<String, Object?> json) {
-    final insertJson = json['insert'];
-    final insert = Range.fromJson(insertJson as Map<String, Object?>);
-    final replaceJson = json['replace'];
-    final replace = Range.fromJson(replaceJson as Map<String, Object?>);
-    return CompletionListEditRange(
-      insert: insert,
-      replace: replace,
-    );
-  }
-
-  final Range insert;
-  final Range replace;
-
-  Map<String, Object?> toJson() {
-    var result = <String, Object?>{};
-    result['insert'] = insert.toJson();
-    result['replace'] = replace.toJson();
-    return result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
-      reporter.push('insert');
-      try {
-        if (!obj.containsKey('insert')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final insert = obj['insert'];
-        if (insert == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(insert, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      reporter.push('replace');
-      try {
-        if (!obj.containsKey('replace')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final replace = obj['replace'];
-        if (replace == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(Range.canParse(replace, reporter))) {
-          reporter.reportError('must be of type Range');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      return true;
-    } else {
-      reporter.reportError('must be of type CompletionListEditRange');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is CompletionListEditRange &&
-        other.runtimeType == CompletionListEditRange) {
-      return insert == other.insert && replace == other.replace && true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => Object.hash(
-        insert,
-        replace,
-      );
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
 class CompletionListItemDefaults implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
     CompletionListItemDefaults.canParse,
@@ -6726,14 +6741,14 @@
     final editRangeJson = json['editRange'];
     final editRange = editRangeJson == null
         ? null
-        : (CompletionListEditRange.canParse(editRangeJson, nullLspJsonReporter)
-            ? Either2<CompletionListEditRange, Range>.t1(
-                CompletionListEditRange.fromJson(
+        : (CompletionItemEditRange.canParse(editRangeJson, nullLspJsonReporter)
+            ? Either2<CompletionItemEditRange, Range>.t1(
+                CompletionItemEditRange.fromJson(
                     editRangeJson as Map<String, Object?>))
             : (Range.canParse(editRangeJson, nullLspJsonReporter)
-                ? Either2<CompletionListEditRange, Range>.t2(
+                ? Either2<CompletionItemEditRange, Range>.t2(
                     Range.fromJson(editRangeJson as Map<String, Object?>))
-                : (throw '''$editRangeJson was not one of (CompletionListEditRange, Range)''')));
+                : (throw '''$editRangeJson was not one of (CompletionItemEditRange, Range)''')));
     final insertTextFormatJson = json['insertTextFormat'];
     final insertTextFormat = insertTextFormatJson != null
         ? InsertTextFormat.fromJson(insertTextFormatJson as int)
@@ -6756,7 +6771,7 @@
 
   /// A default edit range
   ///  @since 3.17.0
-  final Either2<CompletionListEditRange, Range>? editRange;
+  final Either2<CompletionItemEditRange, Range>? editRange;
 
   /// A default insert text format
   ///  @since 3.17.0
@@ -6801,10 +6816,10 @@
       try {
         final editRange = obj['editRange'];
         if (editRange != null &&
-            !((CompletionListEditRange.canParse(editRange, reporter) ||
+            !((CompletionItemEditRange.canParse(editRange, reporter) ||
                 Range.canParse(editRange, reporter)))) {
           reporter.reportError(
-              'must be of type Either2<CompletionListEditRange, Range>');
+              'must be of type Either2<CompletionItemEditRange, Range>');
           return false;
         }
       } finally {
@@ -7337,8 +7352,8 @@
         : null;
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
@@ -7374,7 +7389,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The server provides support to resolve additional information for a
   /// completion item.
@@ -7450,9 +7465,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -7504,8 +7520,12 @@
       return listEqual(allCommitCharacters, other.allCommitCharacters,
               (String a, String b) => a == b) &&
           completionItem == other.completionItem &&
-          listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+          listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           resolveProvider == other.resolveProvider &&
           listEqual(triggerCharacters, other.triggerCharacters,
               (String a, String b) => a == b) &&
@@ -8382,8 +8402,8 @@
   static DeclarationRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -8398,7 +8418,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -8428,9 +8448,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -8467,8 +8488,12 @@
   bool operator ==(Object other) {
     if (other is DeclarationRegistrationOptions &&
         other.runtimeType == DeclarationRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -8818,8 +8843,8 @@
   static DefinitionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -8831,7 +8856,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -8854,9 +8879,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -8883,8 +8909,12 @@
   bool operator ==(Object other) {
     if (other is DefinitionRegistrationOptions &&
         other.runtimeType == DefinitionRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -9762,8 +9792,8 @@
   static DiagnosticRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -9787,7 +9817,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -9835,9 +9865,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -9920,8 +9951,12 @@
   bool operator ==(Object other) {
     if (other is DiagnosticRegistrationOptions &&
         other.runtimeType == DiagnosticRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           identifier == other.identifier &&
           interFileDependencies == other.interFileDependencies &&
@@ -11759,8 +11794,8 @@
   static DocumentColorRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -11775,7 +11810,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -11805,9 +11840,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -11844,8 +11880,12 @@
   bool operator ==(Object other) {
     if (other is DocumentColorRegistrationOptions &&
         other.runtimeType == DocumentColorRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -12457,8 +12497,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -12470,7 +12510,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -12493,9 +12533,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -12523,8 +12564,12 @@
   bool operator ==(Object other) {
     if (other is DocumentFormattingRegistrationOptions &&
         other.runtimeType == DocumentFormattingRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -12983,8 +13028,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -12996,7 +13041,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -13019,9 +13064,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -13049,8 +13095,12 @@
   bool operator ==(Object other) {
     if (other is DocumentHighlightRegistrationOptions &&
         other.runtimeType == DocumentHighlightRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -13532,8 +13582,8 @@
   static DocumentLinkRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final resolveProviderJson = json['resolveProvider'];
     final resolveProvider = resolveProviderJson as bool?;
@@ -13548,7 +13598,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// Document links have a resolve provider as well.
   final bool? resolveProvider;
@@ -13577,9 +13627,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -13616,8 +13667,12 @@
   bool operator ==(Object other) {
     if (other is DocumentLinkRegistrationOptions &&
         other.runtimeType == DocumentLinkRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           resolveProvider == other.resolveProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -13986,8 +14041,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final firstTriggerCharacterJson = json['firstTriggerCharacter'];
     final firstTriggerCharacter = firstTriggerCharacterJson as String;
@@ -14004,7 +14059,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// A character on which formatting should be triggered, like `{`.
   final String firstTriggerCharacter;
@@ -14033,9 +14088,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -14083,8 +14139,12 @@
   bool operator ==(Object other) {
     if (other is DocumentOnTypeFormattingRegistrationOptions &&
         other.runtimeType == DocumentOnTypeFormattingRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           firstTriggerCharacter == other.firstTriggerCharacter &&
           listEqual(moreTriggerCharacter, other.moreTriggerCharacter,
               (String a, String b) => a == b) &&
@@ -14414,8 +14474,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -14427,7 +14487,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -14450,9 +14510,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -14480,8 +14541,12 @@
   bool operator ==(Object other) {
     if (other is DocumentRangeFormattingRegistrationOptions &&
         other.runtimeType == DocumentRangeFormattingRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -15337,8 +15402,8 @@
   static DocumentSymbolRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final labelJson = json['label'];
     final label = labelJson as String?;
@@ -15353,7 +15418,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// A human-readable string that is shown when multiple outlines trees are
   /// shown for the same document.
@@ -15384,9 +15449,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -15423,8 +15489,12 @@
   bool operator ==(Object other) {
     if (other is DocumentSymbolRegistrationOptions &&
         other.runtimeType == DocumentSymbolRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           label == other.label &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -18101,8 +18171,8 @@
   static FoldingRangeRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -18117,7 +18187,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -18147,9 +18217,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -18186,8 +18257,12 @@
   bool operator ==(Object other) {
     if (other is FoldingRangeRegistrationOptions &&
         other.runtimeType == FoldingRangeRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -19205,8 +19280,8 @@
   static HoverRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -19218,7 +19293,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -19241,9 +19316,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -19270,8 +19346,12 @@
   bool operator ==(Object other) {
     if (other is HoverRegistrationOptions &&
         other.runtimeType == HoverRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -19628,8 +19708,8 @@
   static ImplementationRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -19644,7 +19724,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -19674,9 +19754,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -19713,8 +19794,12 @@
   bool operator ==(Object other) {
     if (other is ImplementationRegistrationOptions &&
         other.runtimeType == ImplementationRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -21248,8 +21333,8 @@
   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?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -21267,7 +21352,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -21304,9 +21389,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -21353,8 +21439,12 @@
   bool operator ==(Object other) {
     if (other is InlayHintRegistrationOptions &&
         other.runtimeType == InlayHintRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           resolveProvider == other.resolveProvider &&
           workDoneProgress == other.workDoneProgress &&
@@ -21966,8 +22056,8 @@
   static InlineValueRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -21982,7 +22072,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -22012,9 +22102,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -22051,8 +22142,12 @@
   bool operator ==(Object other) {
     if (other is InlineValueRegistrationOptions &&
         other.runtimeType == InlineValueRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -22865,8 +22960,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -22881,7 +22976,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -22911,9 +23006,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -22951,8 +23047,12 @@
   bool operator ==(Object other) {
     if (other is LinkedEditingRangeRegistrationOptions &&
         other.runtimeType == LinkedEditingRangeRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -24716,8 +24816,8 @@
   static MonikerRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -24729,7 +24829,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -24752,9 +24852,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -24781,8 +24882,12 @@
   bool operator ==(Object other) {
     if (other is MonikerRegistrationOptions &&
         other.runtimeType == MonikerRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -25503,7 +25608,7 @@
         : null;
     final textContentJson = json['textContent'];
     final textContent = (textContentJson as List<Object?>?)
-        ?.map((item) => NotebookDocumentChangeEventTextContent.fromJson(
+        ?.map((item) => NotebookDocumentChangeEventCellsTextContent.fromJson(
             item as Map<String, Object?>))
         .toList();
     return NotebookDocumentChangeEventCells(
@@ -25521,7 +25626,7 @@
   final NotebookDocumentChangeEventCellsStructure? structure;
 
   /// Changes to the text content of notebook cells.
-  final List<NotebookDocumentChangeEventTextContent>? textContent;
+  final List<NotebookDocumentChangeEventCellsTextContent>? textContent;
 
   Map<String, Object?> toJson() {
     var result = <String, Object?>{};
@@ -25572,10 +25677,10 @@
         if (textContent != null &&
             !((textContent is List<Object?> &&
                 (textContent.every((item) =>
-                    NotebookDocumentChangeEventTextContent.canParse(
+                    NotebookDocumentChangeEventCellsTextContent.canParse(
                         item, reporter)))))) {
           reporter.reportError(
-              'must be of type List<NotebookDocumentChangeEventTextContent>');
+              'must be of type List<NotebookDocumentChangeEventCellsTextContent>');
           return false;
         }
       } finally {
@@ -25598,8 +25703,8 @@
           listEqual(
               textContent,
               other.textContent,
-              (NotebookDocumentChangeEventTextContent a,
-                      NotebookDocumentChangeEventTextContent b) =>
+              (NotebookDocumentChangeEventCellsTextContent a,
+                      NotebookDocumentChangeEventCellsTextContent b) =>
                   a == b) &&
           true;
     }
@@ -25749,17 +25854,17 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class NotebookDocumentChangeEventTextContent implements ToJsonable {
+class NotebookDocumentChangeEventCellsTextContent implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-    NotebookDocumentChangeEventTextContent.canParse,
-    NotebookDocumentChangeEventTextContent.fromJson,
+    NotebookDocumentChangeEventCellsTextContent.canParse,
+    NotebookDocumentChangeEventCellsTextContent.fromJson,
   );
 
-  NotebookDocumentChangeEventTextContent({
+  NotebookDocumentChangeEventCellsTextContent({
     required this.changes,
     required this.document,
   });
-  static NotebookDocumentChangeEventTextContent fromJson(
+  static NotebookDocumentChangeEventCellsTextContent fromJson(
       Map<String, Object?> json) {
     final changesJson = json['changes'];
     final changes = (changesJson as List<Object?>)
@@ -25777,7 +25882,7 @@
     final documentJson = json['document'];
     final document = VersionedTextDocumentIdentifier.fromJson(
         documentJson as Map<String, Object?>);
-    return NotebookDocumentChangeEventTextContent(
+    return NotebookDocumentChangeEventCellsTextContent(
       changes: changes,
       document: document,
     );
@@ -25841,15 +25946,15 @@
       return true;
     } else {
       reporter.reportError(
-          'must be of type NotebookDocumentChangeEventTextContent');
+          'must be of type NotebookDocumentChangeEventCellsTextContent');
       return false;
     }
   }
 
   @override
   bool operator ==(Object other) {
-    if (other is NotebookDocumentChangeEventTextContent &&
-        other.runtimeType == NotebookDocumentChangeEventTextContent) {
+    if (other is NotebookDocumentChangeEventCellsTextContent &&
+        other.runtimeType == NotebookDocumentChangeEventCellsTextContent) {
       return listEqual(
               changes,
               other.changes,
@@ -26578,142 +26683,6 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class NotebookDocumentSyncOptionsCells implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    NotebookDocumentSyncOptionsCells.canParse,
-    NotebookDocumentSyncOptionsCells.fromJson,
-  );
-
-  NotebookDocumentSyncOptionsCells({
-    required this.language,
-  });
-  static NotebookDocumentSyncOptionsCells fromJson(Map<String, Object?> json) {
-    final languageJson = json['language'];
-    final language = languageJson as String;
-    return NotebookDocumentSyncOptionsCells(
-      language: language,
-    );
-  }
-
-  final String language;
-
-  Map<String, Object?> toJson() {
-    var result = <String, Object?>{};
-    result['language'] = language;
-    return result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
-      reporter.push('language');
-      try {
-        if (!obj.containsKey('language')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final language = obj['language'];
-        if (language == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(language is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      return true;
-    } else {
-      reporter.reportError('must be of type NotebookDocumentSyncOptionsCells');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is NotebookDocumentSyncOptionsCells &&
-        other.runtimeType == NotebookDocumentSyncOptionsCells) {
-      return language == other.language && true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => language.hashCode;
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
-class NotebookDocumentSyncOptionsCells2 implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    NotebookDocumentSyncOptionsCells2.canParse,
-    NotebookDocumentSyncOptionsCells2.fromJson,
-  );
-
-  NotebookDocumentSyncOptionsCells2({
-    required this.language,
-  });
-  static NotebookDocumentSyncOptionsCells2 fromJson(Map<String, Object?> json) {
-    final languageJson = json['language'];
-    final language = languageJson as String;
-    return NotebookDocumentSyncOptionsCells2(
-      language: language,
-    );
-  }
-
-  final String language;
-
-  Map<String, Object?> toJson() {
-    var result = <String, Object?>{};
-    result['language'] = language;
-    return result;
-  }
-
-  static bool canParse(Object? obj, LspJsonReporter reporter) {
-    if (obj is Map<String, Object?>) {
-      reporter.push('language');
-      try {
-        if (!obj.containsKey('language')) {
-          reporter.reportError('must not be undefined');
-          return false;
-        }
-        final language = obj['language'];
-        if (language == null) {
-          reporter.reportError('must not be null');
-          return false;
-        }
-        if (!(language is String)) {
-          reporter.reportError('must be of type String');
-          return false;
-        }
-      } finally {
-        reporter.pop();
-      }
-      return true;
-    } else {
-      reporter.reportError('must be of type NotebookDocumentSyncOptionsCells2');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is NotebookDocumentSyncOptionsCells2 &&
-        other.runtimeType == NotebookDocumentSyncOptionsCells2) {
-      return language == other.language && true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => language.hashCode;
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
 class NotebookDocumentSyncOptionsNotebookSelector implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
     NotebookDocumentSyncOptionsNotebookSelector.canParse,
@@ -26728,8 +26697,9 @@
       Map<String, Object?> json) {
     final cellsJson = json['cells'];
     final cells = (cellsJson as List<Object?>?)
-        ?.map((item) => NotebookDocumentSyncOptionsCells.fromJson(
-            item as Map<String, Object?>))
+        ?.map((item) =>
+            NotebookDocumentSyncOptionsNotebookSelectorCells.fromJson(
+                item as Map<String, Object?>))
         .toList();
     final notebookDocumentJson = json['notebookDocument'];
     final notebookDocument = (NotebookDocumentFilter1.canParse(
@@ -26755,7 +26725,7 @@
   }
 
   /// The cells of the matching notebook to be synced.
-  final List<NotebookDocumentSyncOptionsCells>? cells;
+  final List<NotebookDocumentSyncOptionsNotebookSelectorCells>? cells;
 
   /// The notebook to be synced If a string value is provided it matches against
   /// the notebook type. '*' matches every notebook.
@@ -26781,10 +26751,10 @@
         if (cells != null &&
             !((cells is List<Object?> &&
                 (cells.every((item) =>
-                    NotebookDocumentSyncOptionsCells.canParse(
+                    NotebookDocumentSyncOptionsNotebookSelectorCells.canParse(
                         item, reporter)))))) {
           reporter.reportError(
-              'must be of type List<NotebookDocumentSyncOptionsCells>');
+              'must be of type List<NotebookDocumentSyncOptionsNotebookSelectorCells>');
           return false;
         }
       } finally {
@@ -26827,8 +26797,8 @@
       return listEqual(
               cells,
               other.cells,
-              (NotebookDocumentSyncOptionsCells a,
-                      NotebookDocumentSyncOptionsCells b) =>
+              (NotebookDocumentSyncOptionsNotebookSelectorCells a,
+                      NotebookDocumentSyncOptionsNotebookSelectorCells b) =>
                   a == b) &&
           notebookDocument == other.notebookDocument &&
           true;
@@ -26860,8 +26830,9 @@
       Map<String, Object?> json) {
     final cellsJson = json['cells'];
     final cells = (cellsJson as List<Object?>)
-        .map((item) => NotebookDocumentSyncOptionsCells2.fromJson(
-            item as Map<String, Object?>))
+        .map((item) =>
+            NotebookDocumentSyncOptionsNotebookSelector2Cells.fromJson(
+                item as Map<String, Object?>))
         .toList();
     final notebookDocumentJson = json['notebookDocument'];
     final notebookDocument = notebookDocumentJson == null
@@ -26888,7 +26859,7 @@
   }
 
   /// The cells of the matching notebook to be synced.
-  final List<NotebookDocumentSyncOptionsCells2> cells;
+  final List<NotebookDocumentSyncOptionsNotebookSelector2Cells> cells;
 
   /// The notebook to be synced If a string value is provided it matches against
   /// the notebook type. '*' matches every notebook.
@@ -26920,10 +26891,11 @@
           return false;
         }
         if (!((cells is List<Object?> &&
-            (cells.every((item) => NotebookDocumentSyncOptionsCells2.canParse(
-                item, reporter)))))) {
+            (cells.every((item) =>
+                NotebookDocumentSyncOptionsNotebookSelector2Cells.canParse(
+                    item, reporter)))))) {
           reporter.reportError(
-              'must be of type List<NotebookDocumentSyncOptionsCells2>');
+              'must be of type List<NotebookDocumentSyncOptionsNotebookSelector2Cells>');
           return false;
         }
       } finally {
@@ -26961,8 +26933,8 @@
       return listEqual(
               cells,
               other.cells,
-              (NotebookDocumentSyncOptionsCells2 a,
-                      NotebookDocumentSyncOptionsCells2 b) =>
+              (NotebookDocumentSyncOptionsNotebookSelector2Cells a,
+                      NotebookDocumentSyncOptionsNotebookSelector2Cells b) =>
                   a == b) &&
           notebookDocument == other.notebookDocument &&
           true;
@@ -26980,6 +26952,147 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
+class NotebookDocumentSyncOptionsNotebookSelector2Cells implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    NotebookDocumentSyncOptionsNotebookSelector2Cells.canParse,
+    NotebookDocumentSyncOptionsNotebookSelector2Cells.fromJson,
+  );
+
+  NotebookDocumentSyncOptionsNotebookSelector2Cells({
+    required this.language,
+  });
+  static NotebookDocumentSyncOptionsNotebookSelector2Cells fromJson(
+      Map<String, Object?> json) {
+    final languageJson = json['language'];
+    final language = languageJson as String;
+    return NotebookDocumentSyncOptionsNotebookSelector2Cells(
+      language: language,
+    );
+  }
+
+  final String language;
+
+  Map<String, Object?> toJson() {
+    var result = <String, Object?>{};
+    result['language'] = language;
+    return result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
+      reporter.push('language');
+      try {
+        if (!obj.containsKey('language')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final language = obj['language'];
+        if (language == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(language is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      return true;
+    } else {
+      reporter.reportError(
+          'must be of type NotebookDocumentSyncOptionsNotebookSelector2Cells');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is NotebookDocumentSyncOptionsNotebookSelector2Cells &&
+        other.runtimeType ==
+            NotebookDocumentSyncOptionsNotebookSelector2Cells) {
+      return language == other.language && true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => language.hashCode;
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
+class NotebookDocumentSyncOptionsNotebookSelectorCells implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    NotebookDocumentSyncOptionsNotebookSelectorCells.canParse,
+    NotebookDocumentSyncOptionsNotebookSelectorCells.fromJson,
+  );
+
+  NotebookDocumentSyncOptionsNotebookSelectorCells({
+    required this.language,
+  });
+  static NotebookDocumentSyncOptionsNotebookSelectorCells fromJson(
+      Map<String, Object?> json) {
+    final languageJson = json['language'];
+    final language = languageJson as String;
+    return NotebookDocumentSyncOptionsNotebookSelectorCells(
+      language: language,
+    );
+  }
+
+  final String language;
+
+  Map<String, Object?> toJson() {
+    var result = <String, Object?>{};
+    result['language'] = language;
+    return result;
+  }
+
+  static bool canParse(Object? obj, LspJsonReporter reporter) {
+    if (obj is Map<String, Object?>) {
+      reporter.push('language');
+      try {
+        if (!obj.containsKey('language')) {
+          reporter.reportError('must not be undefined');
+          return false;
+        }
+        final language = obj['language'];
+        if (language == null) {
+          reporter.reportError('must not be null');
+          return false;
+        }
+        if (!(language is String)) {
+          reporter.reportError('must be of type String');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      return true;
+    } else {
+      reporter.reportError(
+          'must be of type NotebookDocumentSyncOptionsNotebookSelectorCells');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is NotebookDocumentSyncOptionsNotebookSelectorCells &&
+        other.runtimeType == NotebookDocumentSyncOptionsNotebookSelectorCells) {
+      return language == other.language && true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => language.hashCode;
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
 /// Registration options specific to a notebook.
 ///  @since 3.17.0
 class NotebookDocumentSyncRegistrationOptions
@@ -28923,8 +29036,8 @@
   static ReferenceRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -28936,7 +29049,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
   final bool? workDoneProgress;
 
   Map<String, Object?> toJson() {
@@ -28959,9 +29072,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -28988,8 +29102,12 @@
   bool operator ==(Object other) {
     if (other is ReferenceRegistrationOptions &&
         other.runtimeType == ReferenceRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           workDoneProgress == other.workDoneProgress &&
           true;
     }
@@ -30525,8 +30643,8 @@
   static RenameRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final prepareProviderJson = json['prepareProvider'];
     final prepareProvider = prepareProviderJson as bool?;
@@ -30541,7 +30659,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// Renames should be checked and tested before being executed.
   final bool? prepareProvider;
@@ -30570,9 +30688,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -30609,8 +30728,12 @@
   bool operator ==(Object other) {
     if (other is RenameRegistrationOptions &&
         other.runtimeType == RenameRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           prepareProvider == other.prepareProvider &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -31137,8 +31260,8 @@
   static SelectionRangeRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -31153,7 +31276,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -31183,9 +31306,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -31222,8 +31346,12 @@
   bool operator ==(Object other) {
     if (other is SelectionRangeRegistrationOptions &&
         other.runtimeType == SelectionRangeRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -31721,20 +31849,140 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class SemanticTokensClientCapabilitiesFull implements ToJsonable {
+class SemanticTokensClientCapabilitiesRequests implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-    SemanticTokensClientCapabilitiesFull.canParse,
-    SemanticTokensClientCapabilitiesFull.fromJson,
+    SemanticTokensClientCapabilitiesRequests.canParse,
+    SemanticTokensClientCapabilitiesRequests.fromJson,
   );
 
-  SemanticTokensClientCapabilitiesFull({
+  SemanticTokensClientCapabilitiesRequests({
+    this.full,
+    this.range,
+  });
+  static SemanticTokensClientCapabilitiesRequests fromJson(
+      Map<String, Object?> json) {
+    final fullJson = json['full'];
+    final full = fullJson == null
+        ? null
+        : (fullJson is bool
+            ? Either2<bool, SemanticTokensClientCapabilitiesRequestsFull>.t1(
+                fullJson)
+            : (SemanticTokensClientCapabilitiesRequestsFull.canParse(
+                    fullJson, nullLspJsonReporter)
+                ? Either2<bool,
+                        SemanticTokensClientCapabilitiesRequestsFull>.t2(
+                    SemanticTokensClientCapabilitiesRequestsFull.fromJson(
+                        fullJson as Map<String, Object?>))
+                : (throw '''$fullJson was not one of (bool, SemanticTokensClientCapabilitiesRequestsFull)''')));
+    final rangeJson = json['range'];
+    final range = rangeJson == null
+        ? null
+        : (rangeJson is bool
+            ? Either2<bool, SemanticTokensClientCapabilitiesRequestsRange>.t1(
+                rangeJson)
+            : (SemanticTokensClientCapabilitiesRequestsRange.canParse(
+                    rangeJson, nullLspJsonReporter)
+                ? Either2<bool,
+                        SemanticTokensClientCapabilitiesRequestsRange>.t2(
+                    SemanticTokensClientCapabilitiesRequestsRange.fromJson(
+                        rangeJson as Map<String, Object?>))
+                : (throw '''$rangeJson was not one of (bool, SemanticTokensClientCapabilitiesRequestsRange)''')));
+    return SemanticTokensClientCapabilitiesRequests(
+      full: full,
+      range: range,
+    );
+  }
+
+  /// The client will send the `textDocument/semanticTokens/full` request if the
+  /// server provides a corresponding handler.
+  final Either2<bool, SemanticTokensClientCapabilitiesRequestsFull>? full;
+
+  /// The client will send the `textDocument/semanticTokens/range` request if
+  /// the server provides a corresponding handler.
+  final Either2<bool, SemanticTokensClientCapabilitiesRequestsRange>? range;
+
+  Map<String, Object?> toJson() {
+    var result = <String, Object?>{};
+    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('full');
+      try {
+        final full = obj['full'];
+        if (full != null &&
+            !((full is bool ||
+                SemanticTokensClientCapabilitiesRequestsFull.canParse(
+                    full, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, SemanticTokensClientCapabilitiesRequestsFull>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      reporter.push('range');
+      try {
+        final range = obj['range'];
+        if (range != null &&
+            !((range is bool ||
+                SemanticTokensClientCapabilitiesRequestsRange.canParse(
+                    range, reporter)))) {
+          reporter.reportError(
+              'must be of type Either2<bool, SemanticTokensClientCapabilitiesRequestsRange>');
+          return false;
+        }
+      } finally {
+        reporter.pop();
+      }
+      return true;
+    } else {
+      reporter.reportError(
+          'must be of type SemanticTokensClientCapabilitiesRequests');
+      return false;
+    }
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (other is SemanticTokensClientCapabilitiesRequests &&
+        other.runtimeType == SemanticTokensClientCapabilitiesRequests) {
+      return full == other.full && range == other.range && true;
+    }
+    return false;
+  }
+
+  @override
+  int get hashCode => Object.hash(
+        full,
+        range,
+      );
+
+  @override
+  String toString() => jsonEncoder.convert(toJson());
+}
+
+class SemanticTokensClientCapabilitiesRequestsFull implements ToJsonable {
+  static const jsonHandler = LspJsonHandler(
+    SemanticTokensClientCapabilitiesRequestsFull.canParse,
+    SemanticTokensClientCapabilitiesRequestsFull.fromJson,
+  );
+
+  SemanticTokensClientCapabilitiesRequestsFull({
     this.delta,
   });
-  static SemanticTokensClientCapabilitiesFull fromJson(
+  static SemanticTokensClientCapabilitiesRequestsFull fromJson(
       Map<String, Object?> json) {
     final deltaJson = json['delta'];
     final delta = deltaJson as bool?;
-    return SemanticTokensClientCapabilitiesFull(
+    return SemanticTokensClientCapabilitiesRequestsFull(
       delta: delta,
     );
   }
@@ -31765,16 +32013,16 @@
       }
       return true;
     } else {
-      reporter
-          .reportError('must be of type SemanticTokensClientCapabilitiesFull');
+      reporter.reportError(
+          'must be of type SemanticTokensClientCapabilitiesRequestsFull');
       return false;
     }
   }
 
   @override
   bool operator ==(Object other) {
-    if (other is SemanticTokensClientCapabilitiesFull &&
-        other.runtimeType == SemanticTokensClientCapabilitiesFull) {
+    if (other is SemanticTokensClientCapabilitiesRequestsFull &&
+        other.runtimeType == SemanticTokensClientCapabilitiesRequestsFull) {
       return delta == other.delta && true;
     }
     return false;
@@ -31787,15 +32035,15 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class SemanticTokensClientCapabilitiesRange implements ToJsonable {
+class SemanticTokensClientCapabilitiesRequestsRange implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-    SemanticTokensClientCapabilitiesRange.canParse,
-    SemanticTokensClientCapabilitiesRange.fromJson,
+    SemanticTokensClientCapabilitiesRequestsRange.canParse,
+    SemanticTokensClientCapabilitiesRequestsRange.fromJson,
   );
 
-  static SemanticTokensClientCapabilitiesRange fromJson(
+  static SemanticTokensClientCapabilitiesRequestsRange fromJson(
       Map<String, Object?> json) {
-    return SemanticTokensClientCapabilitiesRange();
+    return SemanticTokensClientCapabilitiesRequestsRange();
   }
 
   Map<String, Object?> toJson() {
@@ -31807,16 +32055,16 @@
     if (obj is Map<String, Object?>) {
       return true;
     } else {
-      reporter
-          .reportError('must be of type SemanticTokensClientCapabilitiesRange');
+      reporter.reportError(
+          'must be of type SemanticTokensClientCapabilitiesRequestsRange');
       return false;
     }
   }
 
   @override
   bool operator ==(Object other) {
-    if (other is SemanticTokensClientCapabilitiesRange &&
-        other.runtimeType == SemanticTokensClientCapabilitiesRange) {
+    if (other is SemanticTokensClientCapabilitiesRequestsRange &&
+        other.runtimeType == SemanticTokensClientCapabilitiesRequestsRange) {
       return true;
     }
     return false;
@@ -31829,122 +32077,6 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class SemanticTokensClientCapabilitiesRequests implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(
-    SemanticTokensClientCapabilitiesRequests.canParse,
-    SemanticTokensClientCapabilitiesRequests.fromJson,
-  );
-
-  SemanticTokensClientCapabilitiesRequests({
-    this.full,
-    this.range,
-  });
-  static SemanticTokensClientCapabilitiesRequests fromJson(
-      Map<String, Object?> json) {
-    final fullJson = json['full'];
-    final full = fullJson == null
-        ? null
-        : (fullJson is bool
-            ? Either2<bool, SemanticTokensClientCapabilitiesFull>.t1(fullJson)
-            : (SemanticTokensClientCapabilitiesFull.canParse(
-                    fullJson, nullLspJsonReporter)
-                ? Either2<bool, SemanticTokensClientCapabilitiesFull>.t2(
-                    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(
-      full: full,
-      range: range,
-    );
-  }
-
-  /// The client will send the `textDocument/semanticTokens/full` request if the
-  /// server provides a corresponding handler.
-  final Either2<bool, SemanticTokensClientCapabilitiesFull>? full;
-
-  /// The client will send the `textDocument/semanticTokens/range` request if
-  /// the server provides a corresponding handler.
-  final Either2<bool, SemanticTokensClientCapabilitiesRange>? range;
-
-  Map<String, Object?> toJson() {
-    var result = <String, Object?>{};
-    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('full');
-      try {
-        final full = obj['full'];
-        if (full != null &&
-            !((full is bool ||
-                SemanticTokensClientCapabilitiesFull.canParse(
-                    full, reporter)))) {
-          reporter.reportError(
-              'must be of type Either2<bool, SemanticTokensClientCapabilitiesFull>');
-          return false;
-        }
-      } 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(
-          'must be of type SemanticTokensClientCapabilitiesRequests');
-      return false;
-    }
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (other is SemanticTokensClientCapabilitiesRequests &&
-        other.runtimeType == SemanticTokensClientCapabilitiesRequests) {
-      return full == other.full && range == other.range && true;
-    }
-    return false;
-  }
-
-  @override
-  int get hashCode => Object.hash(
-        full,
-        range,
-      );
-
-  @override
-  String toString() => jsonEncoder.convert(toJson());
-}
-
 class SemanticTokensDelta implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
     SemanticTokensDelta.canParse,
@@ -33164,8 +33296,8 @@
   static SemanticTokensRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final fullJson = json['full'];
     final full = fullJson == null
@@ -33207,7 +33339,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// Server supports providing semantic tokens for a full document.
   final Either2<bool, SemanticTokensOptionsFull>? full;
@@ -33254,9 +33386,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -33337,8 +33470,12 @@
   bool operator ==(Object other) {
     if (other is SemanticTokensRegistrationOptions &&
         other.runtimeType == SemanticTokensRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           full == other.full &&
           id == other.id &&
           legend == other.legend &&
@@ -36447,8 +36584,8 @@
   static SignatureHelpRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final retriggerCharactersJson = json['retriggerCharacters'];
     final retriggerCharacters = (retriggerCharactersJson as List<Object?>?)
@@ -36470,7 +36607,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// List of characters that re-trigger signature help.
   ///
@@ -36509,9 +36646,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -36562,8 +36700,12 @@
   bool operator ==(Object other) {
     if (other is SignatureHelpRegistrationOptions &&
         other.runtimeType == SignatureHelpRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           listEqual(retriggerCharacters, other.retriggerCharacters,
               (String a, String b) => a == b) &&
           listEqual(triggerCharacters, other.triggerCharacters,
@@ -37264,8 +37406,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final syncKindJson = json['syncKind'];
     final syncKind = TextDocumentSyncKind.fromJson(syncKindJson as int);
@@ -37277,7 +37419,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// How documents are synced to the server. See TextDocumentSyncKind.Full and
   /// TextDocumentSyncKind.Incremental.
@@ -37301,9 +37443,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -37339,8 +37482,12 @@
   bool operator ==(Object other) {
     if (other is TextDocumentChangeRegistrationOptions &&
         other.runtimeType == TextDocumentChangeRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           syncKind == other.syncKind &&
           true;
     }
@@ -37542,7 +37689,7 @@
         : null;
     final typeHierarchyJson = json['typeHierarchy'];
     final typeHierarchy = typeHierarchyJson != null
-        ? TypeHierarchyClientCapabilities1.fromJson(
+        ? TypeHierarchyClientCapabilities.fromJson(
             typeHierarchyJson as Map<String, Object?>)
         : null;
     return TextDocumentClientCapabilities(
@@ -37682,7 +37829,7 @@
 
   /// Capabilities specific to the various type hierarchy requests.
   ///  @since 3.17.0
-  final TypeHierarchyClientCapabilities1? typeHierarchy;
+  final TypeHierarchyClientCapabilities? typeHierarchy;
 
   Map<String, Object?> toJson() {
     var result = <String, Object?>{};
@@ -38138,10 +38285,10 @@
       try {
         final typeHierarchy = obj['typeHierarchy'];
         if (typeHierarchy != null &&
-            !(TypeHierarchyClientCapabilities1.canParse(
+            !(TypeHierarchyClientCapabilities.canParse(
                 typeHierarchy, reporter))) {
           reporter
-              .reportError('must be of type TypeHierarchyClientCapabilities1');
+              .reportError('must be of type TypeHierarchyClientCapabilities');
           return false;
         }
       } finally {
@@ -38549,25 +38696,25 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class TextDocumentFilter implements ToJsonable {
+class TextDocumentFilterWithScheme implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-    TextDocumentFilter.canParse,
-    TextDocumentFilter.fromJson,
+    TextDocumentFilterWithScheme.canParse,
+    TextDocumentFilterWithScheme.fromJson,
   );
 
-  TextDocumentFilter({
+  TextDocumentFilterWithScheme({
     this.language,
     this.pattern,
     this.scheme,
   });
-  static TextDocumentFilter fromJson(Map<String, Object?> json) {
+  static TextDocumentFilterWithScheme 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(
+    return TextDocumentFilterWithScheme(
       language: language,
       pattern: pattern,
       scheme: scheme,
@@ -38643,15 +38790,15 @@
       }
       return true;
     } else {
-      reporter.reportError('must be of type TextDocumentFilter');
+      reporter.reportError('must be of type TextDocumentFilterWithScheme');
       return false;
     }
   }
 
   @override
   bool operator ==(Object other) {
-    if (other is TextDocumentFilter &&
-        other.runtimeType == TextDocumentFilter) {
+    if (other is TextDocumentFilterWithScheme &&
+        other.runtimeType == TextDocumentFilterWithScheme) {
       return language == other.language &&
           pattern == other.pattern &&
           scheme == other.scheme &&
@@ -39159,8 +39306,8 @@
     }
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     return TextDocumentRegistrationOptions(
       documentSelector: documentSelector,
@@ -39169,7 +39316,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   Map<String, Object?> toJson() {
     var result = <String, Object?>{};
@@ -39188,9 +39335,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -39207,8 +39355,12 @@
   bool operator ==(Object other) {
     if (other is TextDocumentRegistrationOptions &&
         other.runtimeType == TextDocumentRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           true;
     }
     return false;
@@ -39269,8 +39421,8 @@
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final includeTextJson = json['includeText'];
     final includeText = includeTextJson as bool?;
@@ -39282,7 +39434,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The client is supposed to include the content on save.
   final bool? includeText;
@@ -39307,9 +39459,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -39337,8 +39490,12 @@
   bool operator ==(Object other) {
     if (other is TextDocumentSaveRegistrationOptions &&
         other.runtimeType == TextDocumentSaveRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           includeText == other.includeText &&
           true;
     }
@@ -40165,8 +40322,8 @@
   static TypeDefinitionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -40181,7 +40338,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -40211,9 +40368,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -40250,8 +40408,12 @@
   bool operator ==(Object other) {
     if (other is TypeDefinitionRegistrationOptions &&
         other.runtimeType == TypeDefinitionRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
@@ -40270,19 +40432,19 @@
   String toString() => jsonEncoder.convert(toJson());
 }
 
-class TypeHierarchyClientCapabilities1 implements ToJsonable {
+class TypeHierarchyClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-    TypeHierarchyClientCapabilities1.canParse,
-    TypeHierarchyClientCapabilities1.fromJson,
+    TypeHierarchyClientCapabilities.canParse,
+    TypeHierarchyClientCapabilities.fromJson,
   );
 
-  TypeHierarchyClientCapabilities1({
+  TypeHierarchyClientCapabilities({
     this.dynamicRegistration,
   });
-  static TypeHierarchyClientCapabilities1 fromJson(Map<String, Object?> json) {
+  static TypeHierarchyClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
-    return TypeHierarchyClientCapabilities1(
+    return TypeHierarchyClientCapabilities(
       dynamicRegistration: dynamicRegistration,
     );
   }
@@ -40315,15 +40477,15 @@
       }
       return true;
     } else {
-      reporter.reportError('must be of type TypeHierarchyClientCapabilities1');
+      reporter.reportError('must be of type TypeHierarchyClientCapabilities');
       return false;
     }
   }
 
   @override
   bool operator ==(Object other) {
-    if (other is TypeHierarchyClientCapabilities1 &&
-        other.runtimeType == TypeHierarchyClientCapabilities1) {
+    if (other is TypeHierarchyClientCapabilities &&
+        other.runtimeType == TypeHierarchyClientCapabilities) {
       return dynamicRegistration == other.dynamicRegistration && true;
     }
     return false;
@@ -40801,8 +40963,8 @@
   static TypeHierarchyRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
-        ?.map(
-            (item) => TextDocumentFilter.fromJson(item as Map<String, Object?>))
+        ?.map((item) =>
+            TextDocumentFilterWithScheme.fromJson(item as Map<String, Object?>))
         .toList();
     final idJson = json['id'];
     final id = idJson as String?;
@@ -40817,7 +40979,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<TextDocumentFilter>? documentSelector;
+  final List<TextDocumentFilterWithScheme>? documentSelector;
 
   /// The id used to register the request. The id can be used to deregister the
   /// request again. See also Registration#id.
@@ -40847,9 +41009,10 @@
         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>');
+                (documentSelector.every((item) =>
+                    TextDocumentFilterWithScheme.canParse(item, reporter)))))) {
+          reporter.reportError(
+              'must be of type List<TextDocumentFilterWithScheme>');
           return false;
         }
       } finally {
@@ -40886,8 +41049,12 @@
   bool operator ==(Object other) {
     if (other is TypeHierarchyRegistrationOptions &&
         other.runtimeType == TypeHierarchyRegistrationOptions) {
-      return listEqual(documentSelector, other.documentSelector,
-              (TextDocumentFilter a, TextDocumentFilter b) => a == b) &&
+      return listEqual(
+              documentSelector,
+              other.documentSelector,
+              (TextDocumentFilterWithScheme a,
+                      TextDocumentFilterWithScheme b) =>
+                  a == b) &&
           id == other.id &&
           workDoneProgress == other.workDoneProgress &&
           true;
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 5b47d0a..3d987f2 100644
--- a/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
+++ b/pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart
@@ -137,12 +137,13 @@
   Set<Registration> currentRegistrations = {};
   var _lastRegistrationId = 0;
 
-  final dartFiles = TextDocumentFilter(language: 'dart', scheme: 'file');
-  final pubspecFile = TextDocumentFilter(
+  final dartFiles =
+      TextDocumentFilterWithScheme(language: 'dart', scheme: 'file');
+  final pubspecFile = TextDocumentFilterWithScheme(
       language: 'yaml', scheme: 'file', pattern: '**/pubspec.yaml');
-  final analysisOptionsFile = TextDocumentFilter(
+  final analysisOptionsFile = TextDocumentFilterWithScheme(
       language: 'yaml', scheme: 'file', pattern: '**/analysis_options.yaml');
-  final fixDataFile = TextDocumentFilter(
+  final fixDataFile = TextDocumentFilterWithScheme(
       language: 'yaml', scheme: 'file', pattern: '**/lib/fix_data.yaml');
 
   ServerCapabilitiesComputer(this._server);
@@ -303,7 +304,8 @@
         // All published plugins use something like `*.extension` as
         // interestingFiles. Prefix a `**/` so that the glob matches nested
         // folders as well.
-        .map((glob) => TextDocumentFilter(scheme: 'file', pattern: '**/$glob'));
+        .map((glob) =>
+            TextDocumentFilterWithScheme(scheme: 'file', pattern: '**/$glob'));
     final pluginTypesExcludingDart =
         pluginTypes.where((filter) => filter.pattern != '**/*.dart');
 
diff --git a/pkg/analysis_server/test/lsp/initialization_test.dart b/pkg/analysis_server/test/lsp/initialization_test.dart
index a70a2db..e4a8ece 100644
--- a/pkg/analysis_server/test/lsp/initialization_test.dart
+++ b/pkg/analysis_server/test/lsp/initialization_test.dart
@@ -491,9 +491,9 @@
             .registrations;
 
     final documentFilterSql =
-        TextDocumentFilter(scheme: 'file', pattern: '**/*.sql');
+        TextDocumentFilterWithScheme(scheme: 'file', pattern: '**/*.sql');
     final documentFilterDart =
-        TextDocumentFilter(language: 'dart', scheme: 'file');
+        TextDocumentFilterWithScheme(language: 'dart', scheme: 'file');
 
     expect(
       registrations,
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 f10b8ce..772f091 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
@@ -29,10 +29,10 @@
 
     test('with aliased list fields can be checked for equality', () {
       final a = TextDocumentRegistrationOptions(documentSelector: [
-        TextDocumentFilter(language: 'dart', scheme: 'file')
+        TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
       ]);
       final b = TextDocumentRegistrationOptions(documentSelector: [
-        TextDocumentFilter(language: 'dart', scheme: 'file')
+        TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
       ]);
 
       expect(a, equals(b));
@@ -87,12 +87,12 @@
 
     test('consider subclasses when checking for equality', () {
       final a = TextDocumentRegistrationOptions(documentSelector: [
-        TextDocumentFilter(language: 'dart', scheme: 'file')
+        TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
       ]);
       final b = TextDocumentSaveRegistrationOptions(
           includeText: true,
           documentSelector: [
-            TextDocumentFilter(language: 'dart', scheme: 'file')
+            TextDocumentFilterWithScheme(language: 'dart', scheme: 'file')
           ]);
 
       expect(a, isNot(equals(b)));
diff --git a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
index 14e8620..784c74d 100644
--- a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
+++ b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
@@ -73,23 +73,26 @@
     //   the migration to JSON meta_model.
     'ClientCapabilitiesWindow': 'WindowClientCapabilities',
     'ClientCapabilitiesWorkspace': 'WorkspaceClientCapabilities',
-    'ClientCapabilitiesFileOperations': 'FileOperationClientCapabilities',
-    'ServerCapabilitiesFileOperations': 'FileOperationOptions',
+    'ClientCapabilitiesWorkspaceFileOperations':
+        'FileOperationClientCapabilities',
+    'ServerCapabilitiesWorkspaceFileOperations': 'FileOperationOptions',
     'ClientCapabilitiesGeneral': 'GeneralClientCapabilities',
-    'CompletionClientCapabilitiesInsertTextModeSupport':
+    'CompletionClientCapabilitiesCompletionItemInsertTextModeSupport':
         'CompletionItemInsertTextModeSupport',
-    'CompletionClientCapabilitiesResolveSupport':
+    'CompletionClientCapabilitiesCompletionItemResolveSupport':
         'CompletionItemResolveSupport',
-    'CompletionClientCapabilitiesTagSupport': 'CompletionItemTagSupport',
-    'CodeActionClientCapabilitiesCodeActionKind':
+    'CompletionClientCapabilitiesCompletionItemTagSupport':
+        'CompletionItemTagSupport',
+    'CodeActionClientCapabilitiesCodeActionLiteralSupportCodeActionKind':
         'CodeActionLiteralSupportCodeActionKind',
-    'DocumentFilter': 'TextDocumentFilter',
-    'ClientCapabilitiesStaleRequestSupport':
+    // In JSON model this becomes a union of literals which we assign improved
+    // names to (to avoid numeric suffixes).
+    'DocumentFilter': 'TextDocumentFilterWithScheme',
+    'ClientCapabilitiesGeneralStaleRequestSupport':
         'GeneralClientCapabilitiesStaleRequestSupport',
-    'SignatureHelpClientCapabilitiesParameterInformation':
+    'SignatureHelpClientCapabilitiesSignatureInformationParameterInformation':
         'SignatureInformationParameterInformation',
-    'NotebookDocumentChangeEventStructure':
-        'NotebookDocumentChangeEventCellsStructure',
+    'CompletionListItemDefaultsEditRange': 'CompletionItemEditRange',
   };
 
   for (final type in types) {
diff --git a/pkg/analysis_server/tool/lsp_spec/lsp_specification.md b/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
index 55fd7f4..e2f0775 100644
--- a/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
+++ b/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
@@ -4735,7 +4735,7 @@
 <div class="anchorHolder"><a href="#typeHierarchyClientCapabilities" name="typeHierarchyClientCapabilities" class="linkableAnchor"></a></div>
 
 ```typescript
-type TypeHierarchyClientCapabilities = {
+export interface TypeHierarchyClientCapabilities {
 	/**
 	 * Whether implementation supports dynamic registration. If this is set to
 	 * `true` the client supports the new `(TextDocumentRegistrationOptions &
diff --git a/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart b/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart
index d074460..3f790e3 100644
--- a/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart
+++ b/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart
@@ -623,9 +623,10 @@
       TypeBase type;
       if (_match([TokenType.LEFT_BRACE])) {
         // Inline interfaces.
+        final generatedName = _getAvailableName(containerName, fieldName);
         final members = <Member>[];
         while (!_check(TokenType.RIGHT_BRACE)) {
-          members.add(_member(containerName));
+          members.add(_member(generatedName));
         }
 
         _consume(TokenType.RIGHT_BRACE, 'Expected }');
@@ -638,7 +639,6 @@
           type = MapType(indexer.indexType, indexer.valueType);
         } else {
           // Add a synthetic interface to the parsers list of nodes to represent this type.
-          final generatedName = _getAvailableName(containerName, fieldName);
           _addNode(InlineInterface(generatedName, members));
           // Record the type as a simple type that references this interface.
           type = Type.identifier(generatedName);