Version 2.18.0-100.0.dev

Merge commit 'fac9bbb5d61fa108fec1c8d47a95db0fa4c54ecf' into 'dev'
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart
index d3218a8..6ba59ff 100644
--- a/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart
@@ -23,13 +23,19 @@
 
 class AnalyzerStatusParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      AnalyzerStatusParams.canParse, AnalyzerStatusParams.fromJson);
+    AnalyzerStatusParams.canParse,
+    AnalyzerStatusParams.fromJson,
+  );
 
-  AnalyzerStatusParams({required this.isAnalyzing});
+  AnalyzerStatusParams({
+    required this.isAnalyzing,
+  });
   static AnalyzerStatusParams fromJson(Map<String, Object?> json) {
     final isAnalyzingJson = json['isAnalyzing'];
     final isAnalyzing = isAnalyzingJson as bool;
-    return AnalyzerStatusParams(isAnalyzing: isAnalyzing);
+    return AnalyzerStatusParams(
+      isAnalyzing: isAnalyzing,
+    );
   }
 
   final bool isAnalyzing;
@@ -84,16 +90,24 @@
 }
 
 class ClosingLabel implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ClosingLabel.canParse, ClosingLabel.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ClosingLabel.canParse,
+    ClosingLabel.fromJson,
+  );
 
-  ClosingLabel({required this.range, required this.label});
+  ClosingLabel({
+    required this.range,
+    required this.label,
+  });
   static ClosingLabel fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final labelJson = json['label'];
     final label = labelJson as String;
-    return ClosingLabel(range: range, label: label);
+    return ClosingLabel(
+      range: range,
+      label: label,
+    );
   }
 
   final String label;
@@ -160,7 +174,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, label);
+  int get hashCode => Object.hash(
+        range,
+        label,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -168,8 +185,9 @@
 
 class CompletionItemResolutionInfo implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionItemResolutionInfo.canParse,
-      CompletionItemResolutionInfo.fromJson);
+    CompletionItemResolutionInfo.canParse,
+    CompletionItemResolutionInfo.fromJson,
+  );
 
   static CompletionItemResolutionInfo fromJson(Map<String, Object?> json) {
     if (DartSuggestionSetCompletionItemResolutionInfo.canParse(
@@ -215,13 +233,19 @@
 
 class DartDiagnosticServer implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DartDiagnosticServer.canParse, DartDiagnosticServer.fromJson);
+    DartDiagnosticServer.canParse,
+    DartDiagnosticServer.fromJson,
+  );
 
-  DartDiagnosticServer({required this.port});
+  DartDiagnosticServer({
+    required this.port,
+  });
   static DartDiagnosticServer fromJson(Map<String, Object?> json) {
     final portJson = json['port'];
     final port = portJson as int;
-    return DartDiagnosticServer(port: port);
+    return DartDiagnosticServer(
+      port: port,
+    );
   }
 
   final int port;
@@ -278,17 +302,19 @@
 class DartSuggestionSetCompletionItemResolutionInfo
     implements CompletionItemResolutionInfo, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DartSuggestionSetCompletionItemResolutionInfo.canParse,
-      DartSuggestionSetCompletionItemResolutionInfo.fromJson);
+    DartSuggestionSetCompletionItemResolutionInfo.canParse,
+    DartSuggestionSetCompletionItemResolutionInfo.fromJson,
+  );
 
-  DartSuggestionSetCompletionItemResolutionInfo(
-      {required this.file,
-      required this.offset,
-      required this.libId,
-      required this.displayUri,
-      required this.rOffset,
-      required this.iLength,
-      required this.rLength});
+  DartSuggestionSetCompletionItemResolutionInfo({
+    required this.file,
+    required this.offset,
+    required this.libId,
+    required this.displayUri,
+    required this.rOffset,
+    required this.iLength,
+    required this.rLength,
+  });
   static DartSuggestionSetCompletionItemResolutionInfo fromJson(
       Map<String, Object?> json) {
     final fileJson = json['file'];
@@ -306,13 +332,14 @@
     final rLengthJson = json['rLength'];
     final rLength = rLengthJson as int;
     return DartSuggestionSetCompletionItemResolutionInfo(
-        file: file,
-        offset: offset,
-        libId: libId,
-        displayUri: displayUri,
-        rOffset: rOffset,
-        iLength: iLength,
-        rLength: rLength);
+      file: file,
+      offset: offset,
+      libId: libId,
+      displayUri: displayUri,
+      rOffset: rOffset,
+      iLength: iLength,
+      rLength: rLength,
+    );
   }
 
   final String displayUri;
@@ -488,23 +515,34 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(file, offset, libId, displayUri, rOffset, iLength, rLength);
+  int get hashCode => Object.hash(
+        file,
+        offset,
+        libId,
+        displayUri,
+        rOffset,
+        iLength,
+        rLength,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class Element implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Element.canParse, Element.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Element.canParse,
+    Element.fromJson,
+  );
 
-  Element(
-      {this.range,
-      required this.name,
-      required this.kind,
-      this.parameters,
-      this.typeParameters,
-      this.returnType});
+  Element({
+    this.range,
+    required this.name,
+    required this.kind,
+    this.parameters,
+    this.typeParameters,
+    this.returnType,
+  });
   static Element fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = rangeJson != null
@@ -521,12 +559,13 @@
     final returnTypeJson = json['returnType'];
     final returnType = returnTypeJson as String?;
     return Element(
-        range: range,
-        name: name,
-        kind: kind,
-        parameters: parameters,
-        typeParameters: typeParameters,
-        returnType: returnType);
+      range: range,
+      name: name,
+      kind: kind,
+      parameters: parameters,
+      typeParameters: typeParameters,
+      returnType: returnType,
+    );
   }
 
   final String kind;
@@ -655,27 +694,36 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(range, name, kind, parameters, typeParameters, returnType);
+  int get hashCode => Object.hash(
+        range,
+        name,
+        kind,
+        parameters,
+        typeParameters,
+        returnType,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class FlutterOutline implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FlutterOutline.canParse, FlutterOutline.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FlutterOutline.canParse,
+    FlutterOutline.fromJson,
+  );
 
-  FlutterOutline(
-      {required this.kind,
-      this.label,
-      this.className,
-      this.variableName,
-      this.attributes,
-      this.dartElement,
-      required this.range,
-      required this.codeRange,
-      this.children});
+  FlutterOutline({
+    required this.kind,
+    this.label,
+    this.className,
+    this.variableName,
+    this.attributes,
+    this.dartElement,
+    required this.range,
+    required this.codeRange,
+    this.children,
+  });
   static FlutterOutline fromJson(Map<String, Object?> json) {
     final kindJson = json['kind'];
     final kind = kindJson as String;
@@ -703,15 +751,16 @@
         ?.map((item) => FlutterOutline.fromJson(item as Map<String, Object?>))
         .toList();
     return FlutterOutline(
-        kind: kind,
-        label: label,
-        className: className,
-        variableName: variableName,
-        attributes: attributes,
-        dartElement: dartElement,
-        range: range,
-        codeRange: codeRange,
-        children: children);
+      kind: kind,
+      label: label,
+      className: className,
+      variableName: variableName,
+      attributes: attributes,
+      dartElement: dartElement,
+      range: range,
+      codeRange: codeRange,
+      children: children,
+    );
   }
 
   final List<FlutterOutlineAttribute>? attributes;
@@ -904,15 +953,16 @@
 
   @override
   int get hashCode => Object.hash(
-      kind,
-      label,
-      className,
-      variableName,
-      lspHashCode(attributes),
-      dartElement,
-      range,
-      codeRange,
-      lspHashCode(children));
+        kind,
+        label,
+        className,
+        variableName,
+        lspHashCode(attributes),
+        dartElement,
+        range,
+        codeRange,
+        lspHashCode(children),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -920,10 +970,15 @@
 
 class FlutterOutlineAttribute implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FlutterOutlineAttribute.canParse, FlutterOutlineAttribute.fromJson);
+    FlutterOutlineAttribute.canParse,
+    FlutterOutlineAttribute.fromJson,
+  );
 
-  FlutterOutlineAttribute(
-      {required this.name, required this.label, this.valueRange});
+  FlutterOutlineAttribute({
+    required this.name,
+    required this.label,
+    this.valueRange,
+  });
   static FlutterOutlineAttribute fromJson(Map<String, Object?> json) {
     final nameJson = json['name'];
     final name = nameJson as String;
@@ -934,7 +989,10 @@
         ? Range.fromJson(valueRangeJson as Map<String, Object?>)
         : null;
     return FlutterOutlineAttribute(
-        name: name, label: label, valueRange: valueRange);
+      name: name,
+      label: label,
+      valueRange: valueRange,
+    );
   }
 
   final String label;
@@ -1019,20 +1077,28 @@
   }
 
   @override
-  int get hashCode => Object.hash(name, label, valueRange);
+  int get hashCode => Object.hash(
+        name,
+        label,
+        valueRange,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class Outline implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Outline.canParse, Outline.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Outline.canParse,
+    Outline.fromJson,
+  );
 
-  Outline(
-      {required this.element,
-      required this.range,
-      required this.codeRange,
-      this.children});
+  Outline({
+    required this.element,
+    required this.range,
+    required this.codeRange,
+    this.children,
+  });
   static Outline fromJson(Map<String, Object?> json) {
     final elementJson = json['element'];
     final element = Element.fromJson(elementJson as Map<String, Object?>);
@@ -1045,10 +1111,11 @@
         ?.map((item) => Outline.fromJson(item as Map<String, Object?>))
         .toList();
     return Outline(
-        element: element,
-        range: range,
-        codeRange: codeRange,
-        children: children);
+      element: element,
+      range: range,
+      codeRange: codeRange,
+      children: children,
+    );
   }
 
   final List<Outline>? children;
@@ -1157,8 +1224,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(element, range, codeRange, lspHashCode(children));
+  int get hashCode => Object.hash(
+        element,
+        range,
+        codeRange,
+        lspHashCode(children),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1167,15 +1238,20 @@
 class PubPackageCompletionItemResolutionInfo
     implements CompletionItemResolutionInfo, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PubPackageCompletionItemResolutionInfo.canParse,
-      PubPackageCompletionItemResolutionInfo.fromJson);
+    PubPackageCompletionItemResolutionInfo.canParse,
+    PubPackageCompletionItemResolutionInfo.fromJson,
+  );
 
-  PubPackageCompletionItemResolutionInfo({required this.packageName});
+  PubPackageCompletionItemResolutionInfo({
+    required this.packageName,
+  });
   static PubPackageCompletionItemResolutionInfo fromJson(
       Map<String, Object?> json) {
     final packageNameJson = json['packageName'];
     final packageName = packageNameJson as String;
-    return PubPackageCompletionItemResolutionInfo(packageName: packageName);
+    return PubPackageCompletionItemResolutionInfo(
+      packageName: packageName,
+    );
   }
 
   final String packageName;
@@ -1232,9 +1308,14 @@
 
 class PublishClosingLabelsParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PublishClosingLabelsParams.canParse, PublishClosingLabelsParams.fromJson);
+    PublishClosingLabelsParams.canParse,
+    PublishClosingLabelsParams.fromJson,
+  );
 
-  PublishClosingLabelsParams({required this.uri, required this.labels});
+  PublishClosingLabelsParams({
+    required this.uri,
+    required this.labels,
+  });
   static PublishClosingLabelsParams fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
@@ -1242,7 +1323,10 @@
     final labels = (labelsJson as List<Object?>)
         .map((item) => ClosingLabel.fromJson(item as Map<String, Object?>))
         .toList();
-    return PublishClosingLabelsParams(uri: uri, labels: labels);
+    return PublishClosingLabelsParams(
+      uri: uri,
+      labels: labels,
+    );
   }
 
   final List<ClosingLabel> labels;
@@ -1314,7 +1398,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, lspHashCode(labels));
+  int get hashCode => Object.hash(
+        uri,
+        lspHashCode(labels),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1322,17 +1409,24 @@
 
 class PublishFlutterOutlineParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PublishFlutterOutlineParams.canParse,
-      PublishFlutterOutlineParams.fromJson);
+    PublishFlutterOutlineParams.canParse,
+    PublishFlutterOutlineParams.fromJson,
+  );
 
-  PublishFlutterOutlineParams({required this.uri, required this.outline});
+  PublishFlutterOutlineParams({
+    required this.uri,
+    required this.outline,
+  });
   static PublishFlutterOutlineParams fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
     final outlineJson = json['outline'];
     final outline =
         FlutterOutline.fromJson(outlineJson as Map<String, Object?>);
-    return PublishFlutterOutlineParams(uri: uri, outline: outline);
+    return PublishFlutterOutlineParams(
+      uri: uri,
+      outline: outline,
+    );
   }
 
   final FlutterOutline outline;
@@ -1400,7 +1494,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, outline);
+  int get hashCode => Object.hash(
+        uri,
+        outline,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1408,15 +1505,23 @@
 
 class PublishOutlineParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PublishOutlineParams.canParse, PublishOutlineParams.fromJson);
+    PublishOutlineParams.canParse,
+    PublishOutlineParams.fromJson,
+  );
 
-  PublishOutlineParams({required this.uri, required this.outline});
+  PublishOutlineParams({
+    required this.uri,
+    required this.outline,
+  });
   static PublishOutlineParams fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
     final outlineJson = json['outline'];
     final outline = Outline.fromJson(outlineJson as Map<String, Object?>);
-    return PublishOutlineParams(uri: uri, outline: outline);
+    return PublishOutlineParams(
+      uri: uri,
+      outline: outline,
+    );
   }
 
   final Outline outline;
@@ -1484,20 +1589,26 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, outline);
+  int get hashCode => Object.hash(
+        uri,
+        outline,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class SnippetTextEdit implements TextEdit, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SnippetTextEdit.canParse, SnippetTextEdit.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SnippetTextEdit.canParse,
+    SnippetTextEdit.fromJson,
+  );
 
-  SnippetTextEdit(
-      {required this.insertTextFormat,
-      required this.range,
-      required this.newText});
+  SnippetTextEdit({
+    required this.insertTextFormat,
+    required this.range,
+    required this.newText,
+  });
   static SnippetTextEdit fromJson(Map<String, Object?> json) {
     final insertTextFormatJson = json['insertTextFormat'];
     final insertTextFormat =
@@ -1507,7 +1618,10 @@
     final newTextJson = json['newText'];
     final newText = newTextJson as String;
     return SnippetTextEdit(
-        insertTextFormat: insertTextFormat, range: range, newText: newText);
+      insertTextFormat: insertTextFormat,
+      range: range,
+      newText: newText,
+    );
   }
 
   final InsertTextFormat insertTextFormat;
@@ -1602,7 +1716,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(insertTextFormat, range, newText);
+  int get hashCode => Object.hash(
+        insertTextFormat,
+        range,
+        newText,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1610,15 +1728,23 @@
 
 class ValidateRefactorResult implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ValidateRefactorResult.canParse, ValidateRefactorResult.fromJson);
+    ValidateRefactorResult.canParse,
+    ValidateRefactorResult.fromJson,
+  );
 
-  ValidateRefactorResult({required this.valid, this.message});
+  ValidateRefactorResult({
+    required this.valid,
+    this.message,
+  });
   static ValidateRefactorResult fromJson(Map<String, Object?> json) {
     final validJson = json['valid'];
     final valid = validJson as bool;
     final messageJson = json['message'];
     final message = messageJson as String?;
-    return ValidateRefactorResult(valid: valid, message: message);
+    return ValidateRefactorResult(
+      valid: valid,
+      message: message,
+    );
   }
 
   final String? message;
@@ -1680,7 +1806,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(valid, message);
+  int get hashCode => Object.hash(
+        valid,
+        message,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
index c69cd94..8cfc497 100644
--- a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
@@ -22,13 +22,18 @@
 const jsonEncoder = JsonEncoder.withIndent('    ');
 
 /// A special text edit with an additional change annotation.
-///  @since 3.16.0.
+///  @since 3.16.0
 class AnnotatedTextEdit implements TextEdit, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(AnnotatedTextEdit.canParse, AnnotatedTextEdit.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    AnnotatedTextEdit.canParse,
+    AnnotatedTextEdit.fromJson,
+  );
 
-  AnnotatedTextEdit(
-      {required this.annotationId, required this.range, required this.newText});
+  AnnotatedTextEdit({
+    required this.annotationId,
+    required this.range,
+    required this.newText,
+  });
   static AnnotatedTextEdit fromJson(Map<String, Object?> json) {
     final annotationIdJson = json['annotationId'];
     final annotationId = annotationIdJson as String;
@@ -37,7 +42,10 @@
     final newTextJson = json['newText'];
     final newText = newTextJson as String;
     return AnnotatedTextEdit(
-        annotationId: annotationId, range: range, newText: newText);
+      annotationId: annotationId,
+      range: range,
+      newText: newText,
+    );
   }
 
   /// The actual annotation identifier.
@@ -133,7 +141,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(annotationId, range, newText);
+  int get hashCode => Object.hash(
+        annotationId,
+        range,
+        newText,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -141,15 +153,23 @@
 
 class ApplyWorkspaceEditParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ApplyWorkspaceEditParams.canParse, ApplyWorkspaceEditParams.fromJson);
+    ApplyWorkspaceEditParams.canParse,
+    ApplyWorkspaceEditParams.fromJson,
+  );
 
-  ApplyWorkspaceEditParams({this.label, required this.edit});
+  ApplyWorkspaceEditParams({
+    this.label,
+    required this.edit,
+  });
   static ApplyWorkspaceEditParams fromJson(Map<String, Object?> json) {
     final labelJson = json['label'];
     final label = labelJson as String?;
     final editJson = json['edit'];
     final edit = WorkspaceEdit.fromJson(editJson as Map<String, Object?>);
-    return ApplyWorkspaceEditParams(label: label, edit: edit);
+    return ApplyWorkspaceEditParams(
+      label: label,
+      edit: edit,
+    );
   }
 
   /// The edits to apply.
@@ -215,7 +235,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(label, edit);
+  int get hashCode => Object.hash(
+        label,
+        edit,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -223,10 +246,15 @@
 
 class ApplyWorkspaceEditResponse implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ApplyWorkspaceEditResponse.canParse, ApplyWorkspaceEditResponse.fromJson);
+    ApplyWorkspaceEditResponse.canParse,
+    ApplyWorkspaceEditResponse.fromJson,
+  );
 
-  ApplyWorkspaceEditResponse(
-      {required this.applied, this.failureReason, this.failedChange});
+  ApplyWorkspaceEditResponse({
+    required this.applied,
+    this.failureReason,
+    this.failedChange,
+  });
   static ApplyWorkspaceEditResponse fromJson(Map<String, Object?> json) {
     final appliedJson = json['applied'];
     final applied = appliedJson as bool;
@@ -235,9 +263,10 @@
     final failedChangeJson = json['failedChange'];
     final failedChange = failedChangeJson as int?;
     return ApplyWorkspaceEditResponse(
-        applied: applied,
-        failureReason: failureReason,
-        failedChange: failedChange);
+      applied: applied,
+      failureReason: failureReason,
+      failedChange: failedChange,
+    );
   }
 
   /// Indicates whether the edit was applied or not.
@@ -245,7 +274,7 @@
 
   /// Depending on the client's failure handling strategy `failedChange` might
   /// contain the index of the change that failed. This property is only
-  /// available if the client signals a `failureHandlingStrategy` in its client
+  /// available if the client signals a `failureHandling` strategy in its client
   /// capabilities.
   final int? failedChange;
 
@@ -326,7 +355,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(applied, failureReason, failedChange);
+  int get hashCode => Object.hash(
+        applied,
+        failureReason,
+        failedChange,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -334,15 +367,19 @@
 
 class CallHierarchyClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyClientCapabilities.canParse,
-      CallHierarchyClientCapabilities.fromJson);
+    CallHierarchyClientCapabilities.canParse,
+    CallHierarchyClientCapabilities.fromJson,
+  );
 
-  CallHierarchyClientCapabilities({this.dynamicRegistration});
+  CallHierarchyClientCapabilities({
+    this.dynamicRegistration,
+  });
   static CallHierarchyClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return CallHierarchyClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether implementation supports dynamic registration. If this is set to
@@ -396,9 +433,14 @@
 
 class CallHierarchyIncomingCall implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyIncomingCall.canParse, CallHierarchyIncomingCall.fromJson);
+    CallHierarchyIncomingCall.canParse,
+    CallHierarchyIncomingCall.fromJson,
+  );
 
-  CallHierarchyIncomingCall({required this.from, required this.fromRanges});
+  CallHierarchyIncomingCall({
+    required this.from,
+    required this.fromRanges,
+  });
   static CallHierarchyIncomingCall fromJson(Map<String, Object?> json) {
     final fromJson = json['from'];
     final from = CallHierarchyItem.fromJson(fromJson as Map<String, Object?>);
@@ -406,7 +448,10 @@
     final fromRanges = (fromRangesJson as List<Object?>)
         .map((item) => Range.fromJson(item as Map<String, Object?>))
         .toList();
-    return CallHierarchyIncomingCall(from: from, fromRanges: fromRanges);
+    return CallHierarchyIncomingCall(
+      from: from,
+      fromRanges: fromRanges,
+    );
   }
 
   /// The item that makes the call.
@@ -482,7 +527,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(from, lspHashCode(fromRanges));
+  int get hashCode => Object.hash(
+        from,
+        lspHashCode(fromRanges),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -491,11 +539,15 @@
 class CallHierarchyIncomingCallsParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyIncomingCallsParams.canParse,
-      CallHierarchyIncomingCallsParams.fromJson);
+    CallHierarchyIncomingCallsParams.canParse,
+    CallHierarchyIncomingCallsParams.fromJson,
+  );
 
-  CallHierarchyIncomingCallsParams(
-      {required this.item, this.workDoneToken, this.partialResultToken});
+  CallHierarchyIncomingCallsParams({
+    required this.item,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static CallHierarchyIncomingCallsParams fromJson(Map<String, Object?> json) {
     final itemJson = json['item'];
     final item = CallHierarchyItem.fromJson(itemJson as Map<String, Object?>);
@@ -516,9 +568,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return CallHierarchyIncomingCallsParams(
-        item: item,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      item: item,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   final CallHierarchyItem item;
@@ -604,25 +657,32 @@
   }
 
   @override
-  int get hashCode => Object.hash(item, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        item,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class CallHierarchyItem implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CallHierarchyItem.canParse, CallHierarchyItem.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CallHierarchyItem.canParse,
+    CallHierarchyItem.fromJson,
+  );
 
-  CallHierarchyItem(
-      {required this.name,
-      required this.kind,
-      this.tags,
-      this.detail,
-      required this.uri,
-      required this.range,
-      required this.selectionRange,
-      this.data});
+  CallHierarchyItem({
+    required this.name,
+    required this.kind,
+    this.tags,
+    this.detail,
+    required this.uri,
+    required this.range,
+    required this.selectionRange,
+    this.data,
+  });
   static CallHierarchyItem fromJson(Map<String, Object?> json) {
     final nameJson = json['name'];
     final name = nameJson as String;
@@ -644,14 +704,15 @@
     final dataJson = json['data'];
     final data = dataJson;
     return CallHierarchyItem(
-        name: name,
-        kind: kind,
-        tags: tags,
-        detail: detail,
-        uri: uri,
-        range: range,
-        selectionRange: selectionRange,
-        data: data);
+      name: name,
+      kind: kind,
+      tags: tags,
+      detail: detail,
+      uri: uri,
+      range: range,
+      selectionRange: selectionRange,
+      data: data,
+    );
   }
 
   /// A data entry field that is preserved between a call hierarchy prepare and
@@ -840,7 +901,15 @@
 
   @override
   int get hashCode => Object.hash(
-      name, kind, lspHashCode(tags), detail, uri, range, selectionRange, data);
+        name,
+        kind,
+        lspHashCode(tags),
+        detail,
+        uri,
+        range,
+        selectionRange,
+        data,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -848,16 +917,22 @@
 
 class CallHierarchyOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyOptions.canParse, CallHierarchyOptions.fromJson);
+    CallHierarchyOptions.canParse,
+    CallHierarchyOptions.fromJson,
+  );
 
-  CallHierarchyOptions({this.workDoneProgress});
+  CallHierarchyOptions({
+    this.workDoneProgress,
+  });
   static CallHierarchyOptions fromJson(Map<String, Object?> json) {
     if (CallHierarchyRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return CallHierarchyRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return CallHierarchyOptions(workDoneProgress: workDoneProgress);
+    return CallHierarchyOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -907,9 +982,14 @@
 
 class CallHierarchyOutgoingCall implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyOutgoingCall.canParse, CallHierarchyOutgoingCall.fromJson);
+    CallHierarchyOutgoingCall.canParse,
+    CallHierarchyOutgoingCall.fromJson,
+  );
 
-  CallHierarchyOutgoingCall({required this.to, required this.fromRanges});
+  CallHierarchyOutgoingCall({
+    required this.to,
+    required this.fromRanges,
+  });
   static CallHierarchyOutgoingCall fromJson(Map<String, Object?> json) {
     final toJson = json['to'];
     final to = CallHierarchyItem.fromJson(toJson as Map<String, Object?>);
@@ -917,7 +997,10 @@
     final fromRanges = (fromRangesJson as List<Object?>)
         .map((item) => Range.fromJson(item as Map<String, Object?>))
         .toList();
-    return CallHierarchyOutgoingCall(to: to, fromRanges: fromRanges);
+    return CallHierarchyOutgoingCall(
+      to: to,
+      fromRanges: fromRanges,
+    );
   }
 
   /// The range at which this item is called. This is the range relative to the
@@ -993,7 +1076,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(to, lspHashCode(fromRanges));
+  int get hashCode => Object.hash(
+        to,
+        lspHashCode(fromRanges),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1002,11 +1088,15 @@
 class CallHierarchyOutgoingCallsParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyOutgoingCallsParams.canParse,
-      CallHierarchyOutgoingCallsParams.fromJson);
+    CallHierarchyOutgoingCallsParams.canParse,
+    CallHierarchyOutgoingCallsParams.fromJson,
+  );
 
-  CallHierarchyOutgoingCallsParams(
-      {required this.item, this.workDoneToken, this.partialResultToken});
+  CallHierarchyOutgoingCallsParams({
+    required this.item,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static CallHierarchyOutgoingCallsParams fromJson(Map<String, Object?> json) {
     final itemJson = json['item'];
     final item = CallHierarchyItem.fromJson(itemJson as Map<String, Object?>);
@@ -1027,9 +1117,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return CallHierarchyOutgoingCallsParams(
-        item: item,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      item: item,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   final CallHierarchyItem item;
@@ -1115,7 +1206,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(item, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        item,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1124,10 +1219,15 @@
 class CallHierarchyPrepareParams
     implements TextDocumentPositionParams, WorkDoneProgressParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyPrepareParams.canParse, CallHierarchyPrepareParams.fromJson);
+    CallHierarchyPrepareParams.canParse,
+    CallHierarchyPrepareParams.fromJson,
+  );
 
-  CallHierarchyPrepareParams(
-      {required this.textDocument, required this.position, this.workDoneToken});
+  CallHierarchyPrepareParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+  });
   static CallHierarchyPrepareParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -1143,9 +1243,10 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return CallHierarchyPrepareParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The position inside the text document.
@@ -1236,7 +1337,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, position, workDoneToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1249,11 +1354,15 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CallHierarchyRegistrationOptions.canParse,
-      CallHierarchyRegistrationOptions.fromJson);
+    CallHierarchyRegistrationOptions.canParse,
+    CallHierarchyRegistrationOptions.fromJson,
+  );
 
-  CallHierarchyRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress, this.id});
+  CallHierarchyRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+    this.id,
+  });
   static CallHierarchyRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -1264,9 +1373,10 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return CallHierarchyRegistrationOptions(
-        documentSelector: documentSelector,
-        workDoneProgress: workDoneProgress,
-        id: id);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -1350,18 +1460,25 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress, id);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class CancelParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CancelParams.canParse, CancelParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CancelParams.canParse,
+    CancelParams.fromJson,
+  );
 
-  CancelParams({required this.id});
+  CancelParams({
+    required this.id,
+  });
   static CancelParams fromJson(Map<String, Object?> json) {
     final idJson = json['id'];
     final id = idJson is int
@@ -1369,7 +1486,9 @@
         : (idJson is String
             ? Either2<int, String>.t2(idJson)
             : (throw '''$idJson was not one of (int, String)'''));
-    return CancelParams(id: id);
+    return CancelParams(
+      id: id,
+    );
   }
 
   /// The request id to cancel.
@@ -1426,11 +1545,16 @@
 /// Additional information that describes document changes.
 ///  @since 3.16.0
 class ChangeAnnotation implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ChangeAnnotation.canParse, ChangeAnnotation.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ChangeAnnotation.canParse,
+    ChangeAnnotation.fromJson,
+  );
 
-  ChangeAnnotation(
-      {required this.label, this.needsConfirmation, this.description});
+  ChangeAnnotation({
+    required this.label,
+    this.needsConfirmation,
+    this.description,
+  });
   static ChangeAnnotation fromJson(Map<String, Object?> json) {
     final labelJson = json['label'];
     final label = labelJson as String;
@@ -1439,9 +1563,10 @@
     final descriptionJson = json['description'];
     final description = descriptionJson as String?;
     return ChangeAnnotation(
-        label: label,
-        needsConfirmation: needsConfirmation,
-        description: description);
+      label: label,
+      needsConfirmation: needsConfirmation,
+      description: description,
+    );
   }
 
   /// A human-readable string which is rendered less prominent in the user
@@ -1527,22 +1652,29 @@
   }
 
   @override
-  int get hashCode => Object.hash(label, needsConfirmation, description);
+  int get hashCode => Object.hash(
+        label,
+        needsConfirmation,
+        description,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class ClientCapabilities implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ClientCapabilities.canParse, ClientCapabilities.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ClientCapabilities.canParse,
+    ClientCapabilities.fromJson,
+  );
 
-  ClientCapabilities(
-      {this.workspace,
-      this.textDocument,
-      this.window,
-      this.general,
-      this.experimental});
+  ClientCapabilities({
+    this.workspace,
+    this.textDocument,
+    this.window,
+    this.general,
+    this.experimental,
+  });
   static ClientCapabilities fromJson(Map<String, Object?> json) {
     final workspaceJson = json['workspace'];
     final workspace = workspaceJson != null
@@ -1566,11 +1698,12 @@
     final experimentalJson = json['experimental'];
     final experimental = experimentalJson;
     return ClientCapabilities(
-        workspace: workspace,
-        textDocument: textDocument,
-        window: window,
-        general: general,
-        experimental: experimental);
+      workspace: workspace,
+      textDocument: textDocument,
+      window: window,
+      general: general,
+      experimental: experimental,
+    );
   }
 
   /// Experimental client capabilities.
@@ -1679,8 +1812,13 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(workspace, textDocument, window, general, experimental);
+  int get hashCode => Object.hash(
+        workspace,
+        textDocument,
+        window,
+        general,
+        experimental,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1688,17 +1826,19 @@
 
 class ClientCapabilitiesFileOperations implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ClientCapabilitiesFileOperations.canParse,
-      ClientCapabilitiesFileOperations.fromJson);
+    ClientCapabilitiesFileOperations.canParse,
+    ClientCapabilitiesFileOperations.fromJson,
+  );
 
-  ClientCapabilitiesFileOperations(
-      {this.dynamicRegistration,
-      this.didCreate,
-      this.willCreate,
-      this.didRename,
-      this.willRename,
-      this.didDelete,
-      this.willDelete});
+  ClientCapabilitiesFileOperations({
+    this.dynamicRegistration,
+    this.didCreate,
+    this.willCreate,
+    this.didRename,
+    this.willRename,
+    this.didDelete,
+    this.willDelete,
+  });
   static ClientCapabilitiesFileOperations fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -1715,13 +1855,14 @@
     final willDeleteJson = json['willDelete'];
     final willDelete = willDeleteJson as bool?;
     return ClientCapabilitiesFileOperations(
-        dynamicRegistration: dynamicRegistration,
-        didCreate: didCreate,
-        willCreate: willCreate,
-        didRename: didRename,
-        willRename: willRename,
-        didDelete: didDelete,
-        willDelete: willDelete);
+      dynamicRegistration: dynamicRegistration,
+      didCreate: didCreate,
+      willCreate: willCreate,
+      didRename: didRename,
+      willRename: willRename,
+      didDelete: didDelete,
+      willDelete: willDelete,
+    );
   }
 
   /// The client has support for sending didCreateFiles notifications.
@@ -1868,8 +2009,15 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, didCreate, willCreate,
-      didRename, willRename, didDelete, willDelete);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        didCreate,
+        willCreate,
+        didRename,
+        willRename,
+        didDelete,
+        willDelete,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1877,9 +2025,14 @@
 
 class ClientCapabilitiesGeneral implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ClientCapabilitiesGeneral.canParse, ClientCapabilitiesGeneral.fromJson);
+    ClientCapabilitiesGeneral.canParse,
+    ClientCapabilitiesGeneral.fromJson,
+  );
 
-  ClientCapabilitiesGeneral({this.regularExpressions, this.markdown});
+  ClientCapabilitiesGeneral({
+    this.regularExpressions,
+    this.markdown,
+  });
   static ClientCapabilitiesGeneral fromJson(Map<String, Object?> json) {
     final regularExpressionsJson = json['regularExpressions'];
     final regularExpressions = regularExpressionsJson != null
@@ -1892,7 +2045,9 @@
             markdownJson as Map<String, Object?>)
         : null;
     return ClientCapabilitiesGeneral(
-        regularExpressions: regularExpressions, markdown: markdown);
+      regularExpressions: regularExpressions,
+      markdown: markdown,
+    );
   }
 
   /// Client capabilities specific to the client's markdown parser.
@@ -1959,7 +2114,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(regularExpressions, markdown);
+  int get hashCode => Object.hash(
+        regularExpressions,
+        markdown,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -1967,10 +2125,15 @@
 
 class ClientCapabilitiesWindow implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ClientCapabilitiesWindow.canParse, ClientCapabilitiesWindow.fromJson);
+    ClientCapabilitiesWindow.canParse,
+    ClientCapabilitiesWindow.fromJson,
+  );
 
-  ClientCapabilitiesWindow(
-      {this.workDoneProgress, this.showMessage, this.showDocument});
+  ClientCapabilitiesWindow({
+    this.workDoneProgress,
+    this.showMessage,
+    this.showDocument,
+  });
   static ClientCapabilitiesWindow fromJson(Map<String, Object?> json) {
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -1985,9 +2148,10 @@
             showDocumentJson as Map<String, Object?>)
         : null;
     return ClientCapabilitiesWindow(
-        workDoneProgress: workDoneProgress,
-        showMessage: showMessage,
-        showDocument: showDocument);
+      workDoneProgress: workDoneProgress,
+      showMessage: showMessage,
+      showDocument: showDocument,
+    );
   }
 
   /// Client capabilities for the show document request.
@@ -2076,7 +2240,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(workDoneProgress, showMessage, showDocument);
+  int get hashCode => Object.hash(
+        workDoneProgress,
+        showMessage,
+        showDocument,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -2084,21 +2252,23 @@
 
 class ClientCapabilitiesWorkspace implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ClientCapabilitiesWorkspace.canParse,
-      ClientCapabilitiesWorkspace.fromJson);
+    ClientCapabilitiesWorkspace.canParse,
+    ClientCapabilitiesWorkspace.fromJson,
+  );
 
-  ClientCapabilitiesWorkspace(
-      {this.applyEdit,
-      this.workspaceEdit,
-      this.didChangeConfiguration,
-      this.didChangeWatchedFiles,
-      this.symbol,
-      this.executeCommand,
-      this.workspaceFolders,
-      this.configuration,
-      this.semanticTokens,
-      this.codeLens,
-      this.fileOperations});
+  ClientCapabilitiesWorkspace({
+    this.applyEdit,
+    this.workspaceEdit,
+    this.didChangeConfiguration,
+    this.didChangeWatchedFiles,
+    this.symbol,
+    this.executeCommand,
+    this.workspaceFolders,
+    this.configuration,
+    this.semanticTokens,
+    this.codeLens,
+    this.fileOperations,
+  });
   static ClientCapabilitiesWorkspace fromJson(Map<String, Object?> json) {
     final applyEditJson = json['applyEdit'];
     final applyEdit = applyEditJson as bool?;
@@ -2147,17 +2317,18 @@
             fileOperationsJson as Map<String, Object?>)
         : null;
     return ClientCapabilitiesWorkspace(
-        applyEdit: applyEdit,
-        workspaceEdit: workspaceEdit,
-        didChangeConfiguration: didChangeConfiguration,
-        didChangeWatchedFiles: didChangeWatchedFiles,
-        symbol: symbol,
-        executeCommand: executeCommand,
-        workspaceFolders: workspaceFolders,
-        configuration: configuration,
-        semanticTokens: semanticTokens,
-        codeLens: codeLens,
-        fileOperations: fileOperations);
+      applyEdit: applyEdit,
+      workspaceEdit: workspaceEdit,
+      didChangeConfiguration: didChangeConfiguration,
+      didChangeWatchedFiles: didChangeWatchedFiles,
+      symbol: symbol,
+      executeCommand: executeCommand,
+      workspaceFolders: workspaceFolders,
+      configuration: configuration,
+      semanticTokens: semanticTokens,
+      codeLens: codeLens,
+      fileOperations: fileOperations,
+    );
   }
 
   /// The client supports applying batch edits to the workspace by supporting
@@ -2404,17 +2575,18 @@
 
   @override
   int get hashCode => Object.hash(
-      applyEdit,
-      workspaceEdit,
-      didChangeConfiguration,
-      didChangeWatchedFiles,
-      symbol,
-      executeCommand,
-      workspaceFolders,
-      configuration,
-      semanticTokens,
-      codeLens,
-      fileOperations);
+        applyEdit,
+        workspaceEdit,
+        didChangeConfiguration,
+        didChangeWatchedFiles,
+        symbol,
+        executeCommand,
+        workspaceFolders,
+        configuration,
+        semanticTokens,
+        codeLens,
+        fileOperations,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -2426,18 +2598,21 @@
 /// A CodeAction must set either `edit` and/or a `command`. If both are
 /// supplied, the `edit` is applied first, then the `command` is executed.
 class CodeAction implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeAction.canParse, CodeAction.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeAction.canParse,
+    CodeAction.fromJson,
+  );
 
-  CodeAction(
-      {required this.title,
-      this.kind,
-      this.diagnostics,
-      this.isPreferred,
-      this.disabled,
-      this.edit,
-      this.command,
-      this.data});
+  CodeAction({
+    required this.title,
+    this.kind,
+    this.diagnostics,
+    this.isPreferred,
+    this.disabled,
+    this.edit,
+    this.command,
+    this.data,
+  });
   static CodeAction fromJson(Map<String, Object?> json) {
     final titleJson = json['title'];
     final title = titleJson as String;
@@ -2465,14 +2640,15 @@
     final dataJson = json['data'];
     final data = dataJson;
     return CodeAction(
-        title: title,
-        kind: kind,
-        diagnostics: diagnostics,
-        isPreferred: isPreferred,
-        disabled: disabled,
-        edit: edit,
-        command: command,
-        data: data);
+      title: title,
+      kind: kind,
+      diagnostics: diagnostics,
+      isPreferred: isPreferred,
+      disabled: disabled,
+      edit: edit,
+      command: command,
+      data: data,
+    );
   }
 
   /// A command this code action executes. If a code action provides an edit and
@@ -2662,8 +2838,16 @@
   }
 
   @override
-  int get hashCode => Object.hash(title, kind, lspHashCode(diagnostics),
-      isPreferred, disabled, edit, command, data);
+  int get hashCode => Object.hash(
+        title,
+        kind,
+        lspHashCode(diagnostics),
+        isPreferred,
+        disabled,
+        edit,
+        command,
+        data,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -2671,17 +2855,19 @@
 
 class CodeActionClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeActionClientCapabilities.canParse,
-      CodeActionClientCapabilities.fromJson);
+    CodeActionClientCapabilities.canParse,
+    CodeActionClientCapabilities.fromJson,
+  );
 
-  CodeActionClientCapabilities(
-      {this.dynamicRegistration,
-      this.codeActionLiteralSupport,
-      this.isPreferredSupport,
-      this.disabledSupport,
-      this.dataSupport,
-      this.resolveSupport,
-      this.honorsChangeAnnotations});
+  CodeActionClientCapabilities({
+    this.dynamicRegistration,
+    this.codeActionLiteralSupport,
+    this.isPreferredSupport,
+    this.disabledSupport,
+    this.dataSupport,
+    this.resolveSupport,
+    this.honorsChangeAnnotations,
+  });
   static CodeActionClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -2704,13 +2890,14 @@
     final honorsChangeAnnotationsJson = json['honorsChangeAnnotations'];
     final honorsChangeAnnotations = honorsChangeAnnotationsJson as bool?;
     return CodeActionClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        codeActionLiteralSupport: codeActionLiteralSupport,
-        isPreferredSupport: isPreferredSupport,
-        disabledSupport: disabledSupport,
-        dataSupport: dataSupport,
-        resolveSupport: resolveSupport,
-        honorsChangeAnnotations: honorsChangeAnnotations);
+      dynamicRegistration: dynamicRegistration,
+      codeActionLiteralSupport: codeActionLiteralSupport,
+      isPreferredSupport: isPreferredSupport,
+      disabledSupport: disabledSupport,
+      dataSupport: dataSupport,
+      resolveSupport: resolveSupport,
+      honorsChangeAnnotations: honorsChangeAnnotations,
+    );
   }
 
   /// The client supports code action literals as a valid response of the
@@ -2731,9 +2918,9 @@
   /// Whether code action supports dynamic registration.
   final bool? dynamicRegistration;
 
-  /// Whether th client honors the change annotations in text edits and resource
-  /// operations returned via the `CodeAction#edit` property by for example
-  /// presenting the workspace edit in the user interface and asking for
+  /// Whether the client honors the change annotations in text edits and
+  /// resource operations returned via the `CodeAction#edit` property by for
+  /// example presenting the workspace edit in the user interface and asking for
   /// confirmation.
   ///  @since 3.16.0
   final bool? honorsChangeAnnotations;
@@ -2877,13 +3064,14 @@
 
   @override
   int get hashCode => Object.hash(
-      dynamicRegistration,
-      codeActionLiteralSupport,
-      isPreferredSupport,
-      disabledSupport,
-      dataSupport,
-      resolveSupport,
-      honorsChangeAnnotations);
+        dynamicRegistration,
+        codeActionLiteralSupport,
+        isPreferredSupport,
+        disabledSupport,
+        dataSupport,
+        resolveSupport,
+        honorsChangeAnnotations,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -2891,17 +3079,22 @@
 
 class CodeActionClientCapabilitiesCodeActionKind implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeActionClientCapabilitiesCodeActionKind.canParse,
-      CodeActionClientCapabilitiesCodeActionKind.fromJson);
+    CodeActionClientCapabilitiesCodeActionKind.canParse,
+    CodeActionClientCapabilitiesCodeActionKind.fromJson,
+  );
 
-  CodeActionClientCapabilitiesCodeActionKind({required this.valueSet});
+  CodeActionClientCapabilitiesCodeActionKind({
+    required this.valueSet,
+  });
   static CodeActionClientCapabilitiesCodeActionKind fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>)
         .map((item) => CodeActionKind.fromJson(item as String))
         .toList();
-    return CodeActionClientCapabilitiesCodeActionKind(valueSet: valueSet);
+    return CodeActionClientCapabilitiesCodeActionKind(
+      valueSet: valueSet,
+    );
   }
 
   /// The code action kind values the client supports. When this property exists
@@ -2966,18 +3159,21 @@
 class CodeActionClientCapabilitiesCodeActionLiteralSupport
     implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeActionClientCapabilitiesCodeActionLiteralSupport.canParse,
-      CodeActionClientCapabilitiesCodeActionLiteralSupport.fromJson);
+    CodeActionClientCapabilitiesCodeActionLiteralSupport.canParse,
+    CodeActionClientCapabilitiesCodeActionLiteralSupport.fromJson,
+  );
 
-  CodeActionClientCapabilitiesCodeActionLiteralSupport(
-      {required this.codeActionKind});
+  CodeActionClientCapabilitiesCodeActionLiteralSupport({
+    required this.codeActionKind,
+  });
   static CodeActionClientCapabilitiesCodeActionLiteralSupport fromJson(
       Map<String, Object?> json) {
     final codeActionKindJson = json['codeActionKind'];
     final codeActionKind = CodeActionClientCapabilitiesCodeActionKind.fromJson(
         codeActionKindJson as Map<String, Object?>);
     return CodeActionClientCapabilitiesCodeActionLiteralSupport(
-        codeActionKind: codeActionKind);
+      codeActionKind: codeActionKind,
+    );
   }
 
   /// The code action kind is supported with the following value set.
@@ -3038,17 +3234,22 @@
 
 class CodeActionClientCapabilitiesResolveSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeActionClientCapabilitiesResolveSupport.canParse,
-      CodeActionClientCapabilitiesResolveSupport.fromJson);
+    CodeActionClientCapabilitiesResolveSupport.canParse,
+    CodeActionClientCapabilitiesResolveSupport.fromJson,
+  );
 
-  CodeActionClientCapabilitiesResolveSupport({required this.properties});
+  CodeActionClientCapabilitiesResolveSupport({
+    required this.properties,
+  });
   static CodeActionClientCapabilitiesResolveSupport fromJson(
       Map<String, Object?> json) {
     final propertiesJson = json['properties'];
     final properties = (propertiesJson as List<Object?>)
         .map((item) => item as String)
         .toList();
-    return CodeActionClientCapabilitiesResolveSupport(properties: properties);
+    return CodeActionClientCapabilitiesResolveSupport(
+      properties: properties,
+    );
   }
 
   /// The properties that a client can resolve lazily.
@@ -3110,10 +3311,15 @@
 /// Contains additional diagnostic information about the context in which a code
 /// action is run.
 class CodeActionContext implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeActionContext.canParse, CodeActionContext.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeActionContext.canParse,
+    CodeActionContext.fromJson,
+  );
 
-  CodeActionContext({required this.diagnostics, this.only});
+  CodeActionContext({
+    required this.diagnostics,
+    this.only,
+  });
   static CodeActionContext fromJson(Map<String, Object?> json) {
     final diagnosticsJson = json['diagnostics'];
     final diagnostics = (diagnosticsJson as List<Object?>)
@@ -3123,7 +3329,10 @@
     final only = (onlyJson as List<Object?>?)
         ?.map((item) => CodeActionKind.fromJson(item as String))
         .toList();
-    return CodeActionContext(diagnostics: diagnostics, only: only);
+    return CodeActionContext(
+      diagnostics: diagnostics,
+      only: only,
+    );
   }
 
   /// An array of diagnostics known on the client side overlapping the range
@@ -3204,21 +3413,30 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(diagnostics), lspHashCode(only));
+  int get hashCode => Object.hash(
+        lspHashCode(diagnostics),
+        lspHashCode(only),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class CodeActionDisabled implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeActionDisabled.canParse, CodeActionDisabled.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeActionDisabled.canParse,
+    CodeActionDisabled.fromJson,
+  );
 
-  CodeActionDisabled({required this.reason});
+  CodeActionDisabled({
+    required this.reason,
+  });
   static CodeActionDisabled fromJson(Map<String, Object?> json) {
     final reasonJson = json['reason'];
     final reason = reasonJson as String;
-    return CodeActionDisabled(reason: reason);
+    return CodeActionDisabled(
+      reason: reason,
+    );
   }
 
   /// Human readable description of why the code action is currently disabled.
@@ -3348,11 +3566,16 @@
 }
 
 class CodeActionOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeActionOptions.canParse, CodeActionOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeActionOptions.canParse,
+    CodeActionOptions.fromJson,
+  );
 
-  CodeActionOptions(
-      {this.codeActionKinds, this.resolveProvider, this.workDoneProgress});
+  CodeActionOptions({
+    this.codeActionKinds,
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static CodeActionOptions fromJson(Map<String, Object?> json) {
     if (CodeActionRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return CodeActionRegistrationOptions.fromJson(json);
@@ -3366,9 +3589,10 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CodeActionOptions(
-        codeActionKinds: codeActionKinds,
-        resolveProvider: resolveProvider,
-        workDoneProgress: workDoneProgress);
+      codeActionKinds: codeActionKinds,
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// CodeActionKinds that this server may return.
@@ -3454,7 +3678,10 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(codeActionKinds), resolveProvider, workDoneProgress);
+        lspHashCode(codeActionKinds),
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -3463,15 +3690,18 @@
 /// Params for the CodeActionRequest
 class CodeActionParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeActionParams.canParse, CodeActionParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeActionParams.canParse,
+    CodeActionParams.fromJson,
+  );
 
-  CodeActionParams(
-      {required this.textDocument,
-      required this.range,
-      required this.context,
-      this.workDoneToken,
-      this.partialResultToken});
+  CodeActionParams({
+    required this.textDocument,
+    required this.range,
+    required this.context,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static CodeActionParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -3498,11 +3728,12 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return CodeActionParams(
-        textDocument: textDocument,
-        range: range,
-        context: context,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      range: range,
+      context: context,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// Context carrying additional information.
@@ -3635,7 +3866,12 @@
 
   @override
   int get hashCode => Object.hash(
-      textDocument, range, context, workDoneToken, partialResultToken);
+        textDocument,
+        range,
+        context,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -3644,14 +3880,16 @@
 class CodeActionRegistrationOptions
     implements TextDocumentRegistrationOptions, CodeActionOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeActionRegistrationOptions.canParse,
-      CodeActionRegistrationOptions.fromJson);
+    CodeActionRegistrationOptions.canParse,
+    CodeActionRegistrationOptions.fromJson,
+  );
 
-  CodeActionRegistrationOptions(
-      {this.documentSelector,
-      this.codeActionKinds,
-      this.resolveProvider,
-      this.workDoneProgress});
+  CodeActionRegistrationOptions({
+    this.documentSelector,
+    this.codeActionKinds,
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static CodeActionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -3666,10 +3904,11 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CodeActionRegistrationOptions(
-        documentSelector: documentSelector,
-        codeActionKinds: codeActionKinds,
-        resolveProvider: resolveProvider,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      codeActionKinds: codeActionKinds,
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// CodeActionKinds that this server may return.
@@ -3779,8 +4018,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(documentSelector),
-      lspHashCode(codeActionKinds), resolveProvider, workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        lspHashCode(codeActionKinds),
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -3789,14 +4032,20 @@
 /// Structure to capture a description for an error code.
 ///  @since 3.16.0
 class CodeDescription implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeDescription.canParse, CodeDescription.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeDescription.canParse,
+    CodeDescription.fromJson,
+  );
 
-  CodeDescription({required this.href});
+  CodeDescription({
+    required this.href,
+  });
   static CodeDescription fromJson(Map<String, Object?> json) {
     final hrefJson = json['href'];
     final href = hrefJson as String;
-    return CodeDescription(href: href);
+    return CodeDescription(
+      href: href,
+    );
   }
 
   /// An URI to open with more information about the diagnostic error.
@@ -3857,10 +4106,16 @@
 /// performance reasons the creation of a code lens and resolving should be done
 /// in two stages.
 class CodeLens implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeLens.canParse, CodeLens.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeLens.canParse,
+    CodeLens.fromJson,
+  );
 
-  CodeLens({required this.range, this.command, this.data});
+  CodeLens({
+    required this.range,
+    this.command,
+    this.data,
+  });
   static CodeLens fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
@@ -3870,7 +4125,11 @@
         : null;
     final dataJson = json['data'];
     final data = dataJson;
-    return CodeLens(range: range, command: command, data: data);
+    return CodeLens(
+      range: range,
+      command: command,
+      data: data,
+    );
   }
 
   /// The command this code lens represents.
@@ -3945,7 +4204,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, command, data);
+  int get hashCode => Object.hash(
+        range,
+        command,
+        data,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -3953,13 +4216,19 @@
 
 class CodeLensClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeLensClientCapabilities.canParse, CodeLensClientCapabilities.fromJson);
+    CodeLensClientCapabilities.canParse,
+    CodeLensClientCapabilities.fromJson,
+  );
 
-  CodeLensClientCapabilities({this.dynamicRegistration});
+  CodeLensClientCapabilities({
+    this.dynamicRegistration,
+  });
   static CodeLensClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
-    return CodeLensClientCapabilities(dynamicRegistration: dynamicRegistration);
+    return CodeLensClientCapabilities(
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether code lens supports dynamic registration.
@@ -4009,10 +4278,15 @@
 }
 
 class CodeLensOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeLensOptions.canParse, CodeLensOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeLensOptions.canParse,
+    CodeLensOptions.fromJson,
+  );
 
-  CodeLensOptions({this.resolveProvider, this.workDoneProgress});
+  CodeLensOptions({
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static CodeLensOptions fromJson(Map<String, Object?> json) {
     if (CodeLensRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return CodeLensRegistrationOptions.fromJson(json);
@@ -4022,7 +4296,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CodeLensOptions(
-        resolveProvider: resolveProvider, workDoneProgress: workDoneProgress);
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// Code lens has a resolve provider as well.
@@ -4080,7 +4356,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(resolveProvider, workDoneProgress);
+  int get hashCode => Object.hash(
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -4088,13 +4367,16 @@
 
 class CodeLensParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CodeLensParams.canParse, CodeLensParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CodeLensParams.canParse,
+    CodeLensParams.fromJson,
+  );
 
-  CodeLensParams(
-      {required this.textDocument,
-      this.workDoneToken,
-      this.partialResultToken});
+  CodeLensParams({
+    required this.textDocument,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static CodeLensParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -4116,9 +4398,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return CodeLensParams(
-        textDocument: textDocument,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -4204,8 +4487,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -4214,11 +4500,15 @@
 class CodeLensRegistrationOptions
     implements TextDocumentRegistrationOptions, CodeLensOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeLensRegistrationOptions.canParse,
-      CodeLensRegistrationOptions.fromJson);
+    CodeLensRegistrationOptions.canParse,
+    CodeLensRegistrationOptions.fromJson,
+  );
 
-  CodeLensRegistrationOptions(
-      {this.documentSelector, this.resolveProvider, this.workDoneProgress});
+  CodeLensRegistrationOptions({
+    this.documentSelector,
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static CodeLensRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -4229,9 +4519,10 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CodeLensRegistrationOptions(
-        documentSelector: documentSelector,
-        resolveProvider: resolveProvider,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -4315,7 +4606,10 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(documentSelector), resolveProvider, workDoneProgress);
+        lspHashCode(documentSelector),
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -4323,15 +4617,20 @@
 
 class CodeLensWorkspaceClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CodeLensWorkspaceClientCapabilities.canParse,
-      CodeLensWorkspaceClientCapabilities.fromJson);
+    CodeLensWorkspaceClientCapabilities.canParse,
+    CodeLensWorkspaceClientCapabilities.fromJson,
+  );
 
-  CodeLensWorkspaceClientCapabilities({this.refreshSupport});
+  CodeLensWorkspaceClientCapabilities({
+    this.refreshSupport,
+  });
   static CodeLensWorkspaceClientCapabilities fromJson(
       Map<String, Object?> json) {
     final refreshSupportJson = json['refreshSupport'];
     final refreshSupport = refreshSupportJson as bool?;
-    return CodeLensWorkspaceClientCapabilities(refreshSupport: refreshSupport);
+    return CodeLensWorkspaceClientCapabilities(
+      refreshSupport: refreshSupport,
+    );
   }
 
   /// Whether the client implementation supports a refresh request sent from the
@@ -4389,13 +4688,17 @@
 
 /// Represents a color in RGBA space.
 class Color implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Color.canParse, Color.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Color.canParse,
+    Color.fromJson,
+  );
 
-  Color(
-      {required this.red,
-      required this.green,
-      required this.blue,
-      required this.alpha});
+  Color({
+    required this.red,
+    required this.green,
+    required this.blue,
+    required this.alpha,
+  });
   static Color fromJson(Map<String, Object?> json) {
     final redJson = json['red'];
     final red = redJson as num;
@@ -4405,7 +4708,12 @@
     final blue = blueJson as num;
     final alphaJson = json['alpha'];
     final alpha = alphaJson as num;
-    return Color(red: red, green: green, blue: blue, alpha: alpha);
+    return Color(
+      red: red,
+      green: green,
+      blue: blue,
+      alpha: alpha,
+    );
   }
 
   /// The alpha component of this color in the range [0-1].
@@ -4523,23 +4831,36 @@
   }
 
   @override
-  int get hashCode => Object.hash(red, green, blue, alpha);
+  int get hashCode => Object.hash(
+        red,
+        green,
+        blue,
+        alpha,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class ColorInformation implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ColorInformation.canParse, ColorInformation.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ColorInformation.canParse,
+    ColorInformation.fromJson,
+  );
 
-  ColorInformation({required this.range, required this.color});
+  ColorInformation({
+    required this.range,
+    required this.color,
+  });
   static ColorInformation fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final colorJson = json['color'];
     final color = Color.fromJson(colorJson as Map<String, Object?>);
-    return ColorInformation(range: range, color: color);
+    return ColorInformation(
+      range: range,
+      color: color,
+    );
   }
 
   /// The actual color value for this color range.
@@ -4609,18 +4930,26 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, color);
+  int get hashCode => Object.hash(
+        range,
+        color,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class ColorPresentation implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ColorPresentation.canParse, ColorPresentation.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ColorPresentation.canParse,
+    ColorPresentation.fromJson,
+  );
 
-  ColorPresentation(
-      {required this.label, this.textEdit, this.additionalTextEdits});
+  ColorPresentation({
+    required this.label,
+    this.textEdit,
+    this.additionalTextEdits,
+  });
   static ColorPresentation fromJson(Map<String, Object?> json) {
     final labelJson = json['label'];
     final label = labelJson as String;
@@ -4633,9 +4962,10 @@
         ?.map((item) => TextEdit.fromJson(item as Map<String, Object?>))
         .toList();
     return ColorPresentation(
-        label: label,
-        textEdit: textEdit,
-        additionalTextEdits: additionalTextEdits);
+      label: label,
+      textEdit: textEdit,
+      additionalTextEdits: additionalTextEdits,
+    );
   }
 
   /// An optional array of additional text edits ([TextEdit]) that are applied
@@ -4649,7 +4979,7 @@
   final String label;
 
   /// An edit ([TextEdit]) which is applied to a document when selecting this
-  /// presentation for the color.  When `falsy` the
+  /// presentation for the color. When `falsy` the
   /// [label](#ColorPresentation.label) is used.
   final TextEdit? textEdit;
 
@@ -4729,8 +5059,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(label, textEdit, lspHashCode(additionalTextEdits));
+  int get hashCode => Object.hash(
+        label,
+        textEdit,
+        lspHashCode(additionalTextEdits),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -4739,14 +5072,17 @@
 class ColorPresentationParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ColorPresentationParams.canParse, ColorPresentationParams.fromJson);
+    ColorPresentationParams.canParse,
+    ColorPresentationParams.fromJson,
+  );
 
-  ColorPresentationParams(
-      {required this.textDocument,
-      required this.color,
-      required this.range,
-      this.workDoneToken,
-      this.partialResultToken});
+  ColorPresentationParams({
+    required this.textDocument,
+    required this.color,
+    required this.range,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static ColorPresentationParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -4772,11 +5108,12 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return ColorPresentationParams(
-        textDocument: textDocument,
-        color: color,
-        range: range,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      color: color,
+      range: range,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// The color information to request presentations for.
@@ -4910,16 +5247,28 @@
 
   @override
   int get hashCode => Object.hash(
-      textDocument, color, range, workDoneToken, partialResultToken);
+        textDocument,
+        color,
+        range,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class Command implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Command.canParse, Command.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Command.canParse,
+    Command.fromJson,
+  );
 
-  Command({required this.title, required this.command, this.arguments});
+  Command({
+    required this.title,
+    required this.command,
+    this.arguments,
+  });
   static Command fromJson(Map<String, Object?> json) {
     final titleJson = json['title'];
     final title = titleJson as String;
@@ -4928,7 +5277,11 @@
     final argumentsJson = json['arguments'];
     final arguments =
         (argumentsJson as List<Object?>?)?.map((item) => item).toList();
-    return Command(title: title, command: command, arguments: arguments);
+    return Command(
+      title: title,
+      command: command,
+      arguments: arguments,
+    );
   }
 
   /// Arguments that the command handler should be invoked with.
@@ -5020,7 +5373,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(title, command, lspHashCode(arguments));
+  int get hashCode => Object.hash(
+        title,
+        command,
+        lspHashCode(arguments),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -5028,14 +5385,16 @@
 
 class CompletionClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionClientCapabilities.canParse,
-      CompletionClientCapabilities.fromJson);
+    CompletionClientCapabilities.canParse,
+    CompletionClientCapabilities.fromJson,
+  );
 
-  CompletionClientCapabilities(
-      {this.dynamicRegistration,
-      this.completionItem,
-      this.completionItemKind,
-      this.contextSupport});
+  CompletionClientCapabilities({
+    this.dynamicRegistration,
+    this.completionItem,
+    this.completionItemKind,
+    this.contextSupport,
+  });
   static CompletionClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -5052,10 +5411,11 @@
     final contextSupportJson = json['contextSupport'];
     final contextSupport = contextSupportJson as bool?;
     return CompletionClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        completionItem: completionItem,
-        completionItemKind: completionItemKind,
-        contextSupport: contextSupport);
+      dynamicRegistration: dynamicRegistration,
+      completionItem: completionItem,
+      completionItemKind: completionItemKind,
+      contextSupport: contextSupport,
+    );
   }
 
   /// The client supports the following `CompletionItem` specific capabilities.
@@ -5156,7 +5516,11 @@
 
   @override
   int get hashCode => Object.hash(
-      dynamicRegistration, completionItem, completionItemKind, contextSupport);
+        dynamicRegistration,
+        completionItem,
+        completionItemKind,
+        contextSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -5164,19 +5528,21 @@
 
 class CompletionClientCapabilitiesCompletionItem implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionClientCapabilitiesCompletionItem.canParse,
-      CompletionClientCapabilitiesCompletionItem.fromJson);
+    CompletionClientCapabilitiesCompletionItem.canParse,
+    CompletionClientCapabilitiesCompletionItem.fromJson,
+  );
 
-  CompletionClientCapabilitiesCompletionItem(
-      {this.snippetSupport,
-      this.commitCharactersSupport,
-      this.documentationFormat,
-      this.deprecatedSupport,
-      this.preselectSupport,
-      this.tagSupport,
-      this.insertReplaceSupport,
-      this.resolveSupport,
-      this.insertTextModeSupport});
+  CompletionClientCapabilitiesCompletionItem({
+    this.snippetSupport,
+    this.commitCharactersSupport,
+    this.documentationFormat,
+    this.deprecatedSupport,
+    this.preselectSupport,
+    this.tagSupport,
+    this.insertReplaceSupport,
+    this.resolveSupport,
+    this.insertTextModeSupport,
+  });
   static CompletionClientCapabilitiesCompletionItem fromJson(
       Map<String, Object?> json) {
     final snippetSupportJson = json['snippetSupport'];
@@ -5209,15 +5575,16 @@
             insertTextModeSupportJson as Map<String, Object?>)
         : null;
     return CompletionClientCapabilitiesCompletionItem(
-        snippetSupport: snippetSupport,
-        commitCharactersSupport: commitCharactersSupport,
-        documentationFormat: documentationFormat,
-        deprecatedSupport: deprecatedSupport,
-        preselectSupport: preselectSupport,
-        tagSupport: tagSupport,
-        insertReplaceSupport: insertReplaceSupport,
-        resolveSupport: resolveSupport,
-        insertTextModeSupport: insertTextModeSupport);
+      snippetSupport: snippetSupport,
+      commitCharactersSupport: commitCharactersSupport,
+      documentationFormat: documentationFormat,
+      deprecatedSupport: deprecatedSupport,
+      preselectSupport: preselectSupport,
+      tagSupport: tagSupport,
+      insertReplaceSupport: insertReplaceSupport,
+      resolveSupport: resolveSupport,
+      insertTextModeSupport: insertTextModeSupport,
+    );
   }
 
   /// Client supports commit characters on a completion item.
@@ -5226,8 +5593,8 @@
   /// Client supports the deprecated property on a completion item.
   final bool? deprecatedSupport;
 
-  /// Client supports the follow content formats for the documentation property.
-  /// The order describes the preferred format of the client.
+  /// Client supports the following content formats for the documentation
+  /// property. The order describes the preferred format of the client.
   final List<MarkupKind>? documentationFormat;
 
   /// Client supports insert replace edit to control different behavior if a
@@ -5236,8 +5603,7 @@
   final bool? insertReplaceSupport;
 
   /// The client supports the `insertTextMode` property on a completion item to
-  /// override the whitespace handling mode as defined by the client (see
-  /// `insertTextMode`).
+  /// override the whitespace handling mode as defined by the client.
   ///  @since 3.16.0
   final CompletionClientCapabilitiesInsertTextModeSupport?
       insertTextModeSupport;
@@ -5247,7 +5613,7 @@
 
   /// Indicates which properties a client can resolve lazily on a completion
   /// item. Before version 3.16.0 only the predefined properties `documentation`
-  /// and `details` could be resolved lazily.
+  /// and `detail` could be resolved lazily.
   ///  @since 3.16.0
   final CompletionClientCapabilitiesResolveSupport? resolveSupport;
 
@@ -5433,15 +5799,16 @@
 
   @override
   int get hashCode => Object.hash(
-      snippetSupport,
-      commitCharactersSupport,
-      lspHashCode(documentationFormat),
-      deprecatedSupport,
-      preselectSupport,
-      tagSupport,
-      insertReplaceSupport,
-      resolveSupport,
-      insertTextModeSupport);
+        snippetSupport,
+        commitCharactersSupport,
+        lspHashCode(documentationFormat),
+        deprecatedSupport,
+        preselectSupport,
+        tagSupport,
+        insertReplaceSupport,
+        resolveSupport,
+        insertTextModeSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -5449,17 +5816,22 @@
 
 class CompletionClientCapabilitiesCompletionItemKind implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionClientCapabilitiesCompletionItemKind.canParse,
-      CompletionClientCapabilitiesCompletionItemKind.fromJson);
+    CompletionClientCapabilitiesCompletionItemKind.canParse,
+    CompletionClientCapabilitiesCompletionItemKind.fromJson,
+  );
 
-  CompletionClientCapabilitiesCompletionItemKind({this.valueSet});
+  CompletionClientCapabilitiesCompletionItemKind({
+    this.valueSet,
+  });
   static CompletionClientCapabilitiesCompletionItemKind fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>?)
         ?.map((item) => CompletionItemKind.fromJson(item as int))
         .toList();
-    return CompletionClientCapabilitiesCompletionItemKind(valueSet: valueSet);
+    return CompletionClientCapabilitiesCompletionItemKind(
+      valueSet: valueSet,
+    );
   }
 
   /// The completion item kind values the client supports. When this property
@@ -5522,10 +5894,13 @@
 
 class CompletionClientCapabilitiesInsertTextModeSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionClientCapabilitiesInsertTextModeSupport.canParse,
-      CompletionClientCapabilitiesInsertTextModeSupport.fromJson);
+    CompletionClientCapabilitiesInsertTextModeSupport.canParse,
+    CompletionClientCapabilitiesInsertTextModeSupport.fromJson,
+  );
 
-  CompletionClientCapabilitiesInsertTextModeSupport({required this.valueSet});
+  CompletionClientCapabilitiesInsertTextModeSupport({
+    required this.valueSet,
+  });
   static CompletionClientCapabilitiesInsertTextModeSupport fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
@@ -5533,7 +5908,8 @@
         .map((item) => InsertTextMode.fromJson(item as int))
         .toList();
     return CompletionClientCapabilitiesInsertTextModeSupport(
-        valueSet: valueSet);
+      valueSet: valueSet,
+    );
   }
 
   final List<InsertTextMode> valueSet;
@@ -5595,17 +5971,22 @@
 
 class CompletionClientCapabilitiesResolveSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionClientCapabilitiesResolveSupport.canParse,
-      CompletionClientCapabilitiesResolveSupport.fromJson);
+    CompletionClientCapabilitiesResolveSupport.canParse,
+    CompletionClientCapabilitiesResolveSupport.fromJson,
+  );
 
-  CompletionClientCapabilitiesResolveSupport({required this.properties});
+  CompletionClientCapabilitiesResolveSupport({
+    required this.properties,
+  });
   static CompletionClientCapabilitiesResolveSupport fromJson(
       Map<String, Object?> json) {
     final propertiesJson = json['properties'];
     final properties = (propertiesJson as List<Object?>)
         .map((item) => item as String)
         .toList();
-    return CompletionClientCapabilitiesResolveSupport(properties: properties);
+    return CompletionClientCapabilitiesResolveSupport(
+      properties: properties,
+    );
   }
 
   /// The properties that a client can resolve lazily.
@@ -5666,17 +6047,22 @@
 
 class CompletionClientCapabilitiesTagSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionClientCapabilitiesTagSupport.canParse,
-      CompletionClientCapabilitiesTagSupport.fromJson);
+    CompletionClientCapabilitiesTagSupport.canParse,
+    CompletionClientCapabilitiesTagSupport.fromJson,
+  );
 
-  CompletionClientCapabilitiesTagSupport({required this.valueSet});
+  CompletionClientCapabilitiesTagSupport({
+    required this.valueSet,
+  });
   static CompletionClientCapabilitiesTagSupport fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>)
         .map((item) => CompletionItemTag.fromJson(item as int))
         .toList();
-    return CompletionClientCapabilitiesTagSupport(valueSet: valueSet);
+    return CompletionClientCapabilitiesTagSupport(
+      valueSet: valueSet,
+    );
   }
 
   /// The tags supported by the client.
@@ -5739,17 +6125,24 @@
 /// Contains additional information about the context in which a completion
 /// request is triggered.
 class CompletionContext implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CompletionContext.canParse, CompletionContext.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CompletionContext.canParse,
+    CompletionContext.fromJson,
+  );
 
-  CompletionContext({required this.triggerKind, this.triggerCharacter});
+  CompletionContext({
+    required this.triggerKind,
+    this.triggerCharacter,
+  });
   static CompletionContext fromJson(Map<String, Object?> json) {
     final triggerKindJson = json['triggerKind'];
     final triggerKind = CompletionTriggerKind.fromJson(triggerKindJson as int);
     final triggerCharacterJson = json['triggerCharacter'];
     final triggerCharacter = triggerCharacterJson as String?;
     return CompletionContext(
-        triggerKind: triggerKind, triggerCharacter: triggerCharacter);
+      triggerKind: triggerKind,
+      triggerCharacter: triggerCharacter,
+    );
   }
 
   /// The trigger character (a single character) that has trigger code complete.
@@ -5816,34 +6209,40 @@
   }
 
   @override
-  int get hashCode => Object.hash(triggerKind, triggerCharacter);
+  int get hashCode => Object.hash(
+        triggerKind,
+        triggerCharacter,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class CompletionItem implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CompletionItem.canParse, CompletionItem.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CompletionItem.canParse,
+    CompletionItem.fromJson,
+  );
 
-  CompletionItem(
-      {required this.label,
-      this.kind,
-      this.tags,
-      this.detail,
-      this.documentation,
-      this.deprecated,
-      this.preselect,
-      this.sortText,
-      this.filterText,
-      this.insertText,
-      this.insertTextFormat,
-      this.insertTextMode,
-      this.textEdit,
-      this.additionalTextEdits,
-      this.commitCharacters,
-      this.command,
-      this.data});
+  CompletionItem({
+    required this.label,
+    this.kind,
+    this.tags,
+    this.detail,
+    this.documentation,
+    this.deprecated,
+    this.preselect,
+    this.sortText,
+    this.filterText,
+    this.insertText,
+    this.insertTextFormat,
+    this.insertTextMode,
+    this.textEdit,
+    this.additionalTextEdits,
+    this.commitCharacters,
+    this.command,
+    this.data,
+  });
   static CompletionItem fromJson(Map<String, Object?> json) {
     final labelJson = json['label'];
     final label = labelJson as String;
@@ -5912,23 +6311,24 @@
             dataJson as Map<String, Object?>)
         : null;
     return CompletionItem(
-        label: label,
-        kind: kind,
-        tags: tags,
-        detail: detail,
-        documentation: documentation,
-        deprecated: deprecated,
-        preselect: preselect,
-        sortText: sortText,
-        filterText: filterText,
-        insertText: insertText,
-        insertTextFormat: insertTextFormat,
-        insertTextMode: insertTextMode,
-        textEdit: textEdit,
-        additionalTextEdits: additionalTextEdits,
-        commitCharacters: commitCharacters,
-        command: command,
-        data: data);
+      label: label,
+      kind: kind,
+      tags: tags,
+      detail: detail,
+      documentation: documentation,
+      deprecated: deprecated,
+      preselect: preselect,
+      sortText: sortText,
+      filterText: filterText,
+      insertText: insertText,
+      insertTextFormat: insertTextFormat,
+      insertTextMode: insertTextMode,
+      textEdit: textEdit,
+      additionalTextEdits: additionalTextEdits,
+      commitCharacters: commitCharacters,
+      command: command,
+      data: data,
+    );
   }
 
   /// An optional array of additional text edits that are applied when selecting
@@ -5967,11 +6367,12 @@
   final Either2<String, MarkupContent>? documentation;
 
   /// A string that should be used when filtering a set of completion items.
-  /// When `falsy` the label is used.
+  /// When `falsy` the label is used as the filter text for this item.
   final String? filterText;
 
   /// A string that should be inserted into a document when selecting this
-  /// completion. When `falsy` the label is used.
+  /// completion. When `falsy` the label is used as the insert text for this
+  /// item.
   ///
   /// The `insertText` is subject to interpretation by the client side. Some
   /// tools might not take the string literally. For example VS Code when code
@@ -5987,8 +6388,7 @@
   final InsertTextFormat? insertTextFormat;
 
   /// How whitespace and indentation is handled during completion item
-  /// insertion. If not provided the client's default value depends on the
-  /// `textDocument.completion.insertTextMode` client capability.
+  /// insertion. If not provided the client's default value is used.
   ///  @since 3.16.0
   final InsertTextMode? insertTextMode;
 
@@ -6009,7 +6409,7 @@
   final bool? preselect;
 
   /// A string that should be used when comparing this item with other items.
-  /// When `falsy` the label is used.
+  /// When `falsy` the label is used as the sort text for this item.
   final String? sortText;
 
   /// Tags for this completion item.
@@ -6026,7 +6426,7 @@
   /// item. One is to insert a completion text and the other is to replace an
   /// existing text with a completion text. Since this can usually not be
   /// predetermined by a server it can report both ranges. Clients need to
-  /// signal support for `InsertReplaceEdits` via the
+  /// signal support for `InsertReplaceEdit`s via the
   /// `textDocument.completion.insertReplaceSupport` client capability property.
   ///
   /// *Note 1:* The text edit's range as well as both ranges from an insert
@@ -6327,23 +6727,24 @@
 
   @override
   int get hashCode => Object.hash(
-      label,
-      kind,
-      lspHashCode(tags),
-      detail,
-      documentation,
-      deprecated,
-      preselect,
-      sortText,
-      filterText,
-      insertText,
-      insertTextFormat,
-      insertTextMode,
-      textEdit,
-      lspHashCode(additionalTextEdits),
-      lspHashCode(commitCharacters),
-      command,
-      data);
+        label,
+        kind,
+        lspHashCode(tags),
+        detail,
+        documentation,
+        deprecated,
+        preselect,
+        sortText,
+        filterText,
+        insertText,
+        insertTextFormat,
+        insertTextMode,
+        textEdit,
+        lspHashCode(additionalTextEdits),
+        lspHashCode(commitCharacters),
+        command,
+        data,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -6427,10 +6828,15 @@
 /// Represents a collection of completion items ([CompletionItem]) to be
 /// presented in the editor.
 class CompletionList implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CompletionList.canParse, CompletionList.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CompletionList.canParse,
+    CompletionList.fromJson,
+  );
 
-  CompletionList({required this.isIncomplete, required this.items});
+  CompletionList({
+    required this.isIncomplete,
+    required this.items,
+  });
   static CompletionList fromJson(Map<String, Object?> json) {
     final isIncompleteJson = json['isIncomplete'];
     final isIncomplete = isIncompleteJson as bool;
@@ -6438,11 +6844,17 @@
     final items = (itemsJson as List<Object?>)
         .map((item) => CompletionItem.fromJson(item as Map<String, Object?>))
         .toList();
-    return CompletionList(isIncomplete: isIncomplete, items: items);
+    return CompletionList(
+      isIncomplete: isIncomplete,
+      items: items,
+    );
   }
 
-  /// This list it not complete. Further typing should result in recomputing
+  /// This list is not complete. Further typing should result in recomputing
   /// this list.
+  ///
+  /// Recomputed lists have all their items replaced (not appended) in the
+  /// incomplete completion sessions.
   final bool isIncomplete;
 
   /// The completion items.
@@ -6514,7 +6926,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(isIncomplete, lspHashCode(items));
+  int get hashCode => Object.hash(
+        isIncomplete,
+        lspHashCode(items),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -6522,14 +6937,17 @@
 
 /// Completion options.
 class CompletionOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CompletionOptions.canParse, CompletionOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CompletionOptions.canParse,
+    CompletionOptions.fromJson,
+  );
 
-  CompletionOptions(
-      {this.triggerCharacters,
-      this.allCommitCharacters,
-      this.resolveProvider,
-      this.workDoneProgress});
+  CompletionOptions({
+    this.triggerCharacters,
+    this.allCommitCharacters,
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static CompletionOptions fromJson(Map<String, Object?> json) {
     if (CompletionRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return CompletionRegistrationOptions.fromJson(json);
@@ -6547,10 +6965,11 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CompletionOptions(
-        triggerCharacters: triggerCharacters,
-        allCommitCharacters: allCommitCharacters,
-        resolveProvider: resolveProvider,
-        workDoneProgress: workDoneProgress);
+      triggerCharacters: triggerCharacters,
+      allCommitCharacters: allCommitCharacters,
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// The list of all possible characters that commit a completion. This field
@@ -6665,8 +7084,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(triggerCharacters),
-      lspHashCode(allCommitCharacters), resolveProvider, workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(triggerCharacters),
+        lspHashCode(allCommitCharacters),
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -6678,15 +7101,18 @@
         WorkDoneProgressParams,
         PartialResultParams,
         ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CompletionParams.canParse, CompletionParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CompletionParams.canParse,
+    CompletionParams.fromJson,
+  );
 
-  CompletionParams(
-      {this.context,
-      required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  CompletionParams({
+    this.context,
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static CompletionParams fromJson(Map<String, Object?> json) {
     final contextJson = json['context'];
     final context = contextJson != null
@@ -6714,11 +7140,12 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return CompletionParams(
-        context: context,
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      context: context,
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// The completion context. This is only available if the client specifies to
@@ -6847,7 +7274,12 @@
 
   @override
   int get hashCode => Object.hash(
-      context, textDocument, position, workDoneToken, partialResultToken);
+        context,
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -6856,15 +7288,17 @@
 class CompletionRegistrationOptions
     implements TextDocumentRegistrationOptions, CompletionOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      CompletionRegistrationOptions.canParse,
-      CompletionRegistrationOptions.fromJson);
+    CompletionRegistrationOptions.canParse,
+    CompletionRegistrationOptions.fromJson,
+  );
 
-  CompletionRegistrationOptions(
-      {this.documentSelector,
-      this.triggerCharacters,
-      this.allCommitCharacters,
-      this.resolveProvider,
-      this.workDoneProgress});
+  CompletionRegistrationOptions({
+    this.documentSelector,
+    this.triggerCharacters,
+    this.allCommitCharacters,
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static CompletionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -6883,11 +7317,12 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return CompletionRegistrationOptions(
-        documentSelector: documentSelector,
-        triggerCharacters: triggerCharacters,
-        allCommitCharacters: allCommitCharacters,
-        resolveProvider: resolveProvider,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      triggerCharacters: triggerCharacters,
+      allCommitCharacters: allCommitCharacters,
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// The list of all possible characters that commit a completion. This field
@@ -7028,11 +7463,12 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(documentSelector),
-      lspHashCode(triggerCharacters),
-      lspHashCode(allCommitCharacters),
-      resolveProvider,
-      workDoneProgress);
+        lspHashCode(documentSelector),
+        lspHashCode(triggerCharacters),
+        lspHashCode(allCommitCharacters),
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -7079,16 +7515,24 @@
 }
 
 class ConfigurationItem implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ConfigurationItem.canParse, ConfigurationItem.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ConfigurationItem.canParse,
+    ConfigurationItem.fromJson,
+  );
 
-  ConfigurationItem({this.scopeUri, this.section});
+  ConfigurationItem({
+    this.scopeUri,
+    this.section,
+  });
   static ConfigurationItem fromJson(Map<String, Object?> json) {
     final scopeUriJson = json['scopeUri'];
     final scopeUri = scopeUriJson as String?;
     final sectionJson = json['section'];
     final section = sectionJson as String?;
-    return ConfigurationItem(scopeUri: scopeUri, section: section);
+    return ConfigurationItem(
+      scopeUri: scopeUri,
+      section: section,
+    );
   }
 
   /// The scope to get the configuration section for.
@@ -7146,7 +7590,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(scopeUri, section);
+  int get hashCode => Object.hash(
+        scopeUri,
+        section,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -7154,15 +7601,21 @@
 
 class ConfigurationParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ConfigurationParams.canParse, ConfigurationParams.fromJson);
+    ConfigurationParams.canParse,
+    ConfigurationParams.fromJson,
+  );
 
-  ConfigurationParams({required this.items});
+  ConfigurationParams({
+    required this.items,
+  });
   static ConfigurationParams fromJson(Map<String, Object?> json) {
     final itemsJson = json['items'];
     final items = (itemsJson as List<Object?>)
         .map((item) => ConfigurationItem.fromJson(item as Map<String, Object?>))
         .toList();
-    return ConfigurationParams(items: items);
+    return ConfigurationParams(
+      items: items,
+    );
   }
 
   final List<ConfigurationItem> items;
@@ -7222,14 +7675,17 @@
 
 /// Create file operation
 class CreateFile implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CreateFile.canParse, CreateFile.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CreateFile.canParse,
+    CreateFile.fromJson,
+  );
 
-  CreateFile(
-      {this.kind = 'create',
-      required this.uri,
-      this.options,
-      this.annotationId}) {
+  CreateFile({
+    this.kind = 'create',
+    required this.uri,
+    this.options,
+    this.annotationId,
+  }) {
     if (kind != 'create') {
       throw 'kind may only be the literal \'create\'';
     }
@@ -7246,7 +7702,11 @@
     final annotationIdJson = json['annotationId'];
     final annotationId = annotationIdJson as String?;
     return CreateFile(
-        kind: kind, uri: uri, options: options, annotationId: annotationId);
+      kind: kind,
+      uri: uri,
+      options: options,
+      annotationId: annotationId,
+    );
   }
 
   /// An optional annotation identifer describing the operation.
@@ -7354,7 +7814,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(kind, uri, options, annotationId);
+  int get hashCode => Object.hash(
+        kind,
+        uri,
+        options,
+        annotationId,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -7362,17 +7827,24 @@
 
 /// Options to create a file.
 class CreateFileOptions implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CreateFileOptions.canParse, CreateFileOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CreateFileOptions.canParse,
+    CreateFileOptions.fromJson,
+  );
 
-  CreateFileOptions({this.overwrite, this.ignoreIfExists});
+  CreateFileOptions({
+    this.overwrite,
+    this.ignoreIfExists,
+  });
   static CreateFileOptions fromJson(Map<String, Object?> json) {
     final overwriteJson = json['overwrite'];
     final overwrite = overwriteJson as bool?;
     final ignoreIfExistsJson = json['ignoreIfExists'];
     final ignoreIfExists = ignoreIfExistsJson as bool?;
     return CreateFileOptions(
-        overwrite: overwrite, ignoreIfExists: ignoreIfExists);
+      overwrite: overwrite,
+      ignoreIfExists: ignoreIfExists,
+    );
   }
 
   /// Ignore if exists.
@@ -7432,7 +7904,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(overwrite, ignoreIfExists);
+  int get hashCode => Object.hash(
+        overwrite,
+        ignoreIfExists,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -7442,16 +7917,22 @@
 /// files.
 ///  @since 3.16.0
 class CreateFilesParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(CreateFilesParams.canParse, CreateFilesParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    CreateFilesParams.canParse,
+    CreateFilesParams.fromJson,
+  );
 
-  CreateFilesParams({required this.files});
+  CreateFilesParams({
+    required this.files,
+  });
   static CreateFilesParams fromJson(Map<String, Object?> json) {
     final filesJson = json['files'];
     final files = (filesJson as List<Object?>)
         .map((item) => FileCreate.fromJson(item as Map<String, Object?>))
         .toList();
-    return CreateFilesParams(files: files);
+    return CreateFilesParams(
+      files: files,
+    );
   }
 
   /// An array of all files/folders created in this operation.
@@ -7510,17 +7991,23 @@
 
 class DeclarationClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DeclarationClientCapabilities.canParse,
-      DeclarationClientCapabilities.fromJson);
+    DeclarationClientCapabilities.canParse,
+    DeclarationClientCapabilities.fromJson,
+  );
 
-  DeclarationClientCapabilities({this.dynamicRegistration, this.linkSupport});
+  DeclarationClientCapabilities({
+    this.dynamicRegistration,
+    this.linkSupport,
+  });
   static DeclarationClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     final linkSupportJson = json['linkSupport'];
     final linkSupport = linkSupportJson as bool?;
     return DeclarationClientCapabilities(
-        dynamicRegistration: dynamicRegistration, linkSupport: linkSupport);
+      dynamicRegistration: dynamicRegistration,
+      linkSupport: linkSupport,
+    );
   }
 
   /// Whether declaration supports dynamic registration. If this is set to
@@ -7583,24 +8070,33 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, linkSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        linkSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class DeclarationOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DeclarationOptions.canParse, DeclarationOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DeclarationOptions.canParse,
+    DeclarationOptions.fromJson,
+  );
 
-  DeclarationOptions({this.workDoneProgress});
+  DeclarationOptions({
+    this.workDoneProgress,
+  });
   static DeclarationOptions fromJson(Map<String, Object?> json) {
     if (DeclarationRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return DeclarationRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return DeclarationOptions(workDoneProgress: workDoneProgress);
+    return DeclarationOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -7654,14 +8150,17 @@
         WorkDoneProgressParams,
         PartialResultParams,
         ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DeclarationParams.canParse, DeclarationParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DeclarationParams.canParse,
+    DeclarationParams.fromJson,
+  );
 
-  DeclarationParams(
-      {required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  DeclarationParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static DeclarationParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -7685,10 +8184,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DeclarationParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -7797,8 +8297,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, position, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -7811,11 +8315,15 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DeclarationRegistrationOptions.canParse,
-      DeclarationRegistrationOptions.fromJson);
+    DeclarationRegistrationOptions.canParse,
+    DeclarationRegistrationOptions.fromJson,
+  );
 
-  DeclarationRegistrationOptions(
-      {this.workDoneProgress, this.documentSelector, this.id});
+  DeclarationRegistrationOptions({
+    this.workDoneProgress,
+    this.documentSelector,
+    this.id,
+  });
   static DeclarationRegistrationOptions fromJson(Map<String, Object?> json) {
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -7826,9 +8334,10 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return DeclarationRegistrationOptions(
-        workDoneProgress: workDoneProgress,
-        documentSelector: documentSelector,
-        id: id);
+      workDoneProgress: workDoneProgress,
+      documentSelector: documentSelector,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -7912,8 +8421,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(workDoneProgress, lspHashCode(documentSelector), id);
+  int get hashCode => Object.hash(
+        workDoneProgress,
+        lspHashCode(documentSelector),
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -7921,17 +8433,23 @@
 
 class DefinitionClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DefinitionClientCapabilities.canParse,
-      DefinitionClientCapabilities.fromJson);
+    DefinitionClientCapabilities.canParse,
+    DefinitionClientCapabilities.fromJson,
+  );
 
-  DefinitionClientCapabilities({this.dynamicRegistration, this.linkSupport});
+  DefinitionClientCapabilities({
+    this.dynamicRegistration,
+    this.linkSupport,
+  });
   static DefinitionClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     final linkSupportJson = json['linkSupport'];
     final linkSupport = linkSupportJson as bool?;
     return DefinitionClientCapabilities(
-        dynamicRegistration: dynamicRegistration, linkSupport: linkSupport);
+      dynamicRegistration: dynamicRegistration,
+      linkSupport: linkSupport,
+    );
   }
 
   /// Whether definition supports dynamic registration.
@@ -7993,24 +8511,33 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, linkSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        linkSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class DefinitionOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DefinitionOptions.canParse, DefinitionOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DefinitionOptions.canParse,
+    DefinitionOptions.fromJson,
+  );
 
-  DefinitionOptions({this.workDoneProgress});
+  DefinitionOptions({
+    this.workDoneProgress,
+  });
   static DefinitionOptions fromJson(Map<String, Object?> json) {
     if (DefinitionRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return DefinitionRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return DefinitionOptions(workDoneProgress: workDoneProgress);
+    return DefinitionOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -8063,14 +8590,17 @@
         WorkDoneProgressParams,
         PartialResultParams,
         ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DefinitionParams.canParse, DefinitionParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DefinitionParams.canParse,
+    DefinitionParams.fromJson,
+  );
 
-  DefinitionParams(
-      {required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  DefinitionParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static DefinitionParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -8094,10 +8624,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DefinitionParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -8206,8 +8737,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, position, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -8216,10 +8751,14 @@
 class DefinitionRegistrationOptions
     implements TextDocumentRegistrationOptions, DefinitionOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DefinitionRegistrationOptions.canParse,
-      DefinitionRegistrationOptions.fromJson);
+    DefinitionRegistrationOptions.canParse,
+    DefinitionRegistrationOptions.fromJson,
+  );
 
-  DefinitionRegistrationOptions({this.documentSelector, this.workDoneProgress});
+  DefinitionRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+  });
   static DefinitionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -8228,7 +8767,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DefinitionRegistrationOptions(
-        documentSelector: documentSelector, workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -8294,8 +8835,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -8303,14 +8846,17 @@
 
 /// Delete file operation
 class DeleteFile implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DeleteFile.canParse, DeleteFile.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DeleteFile.canParse,
+    DeleteFile.fromJson,
+  );
 
-  DeleteFile(
-      {this.kind = 'delete',
-      required this.uri,
-      this.options,
-      this.annotationId}) {
+  DeleteFile({
+    this.kind = 'delete',
+    required this.uri,
+    this.options,
+    this.annotationId,
+  }) {
     if (kind != 'delete') {
       throw 'kind may only be the literal \'delete\'';
     }
@@ -8327,7 +8873,11 @@
     final annotationIdJson = json['annotationId'];
     final annotationId = annotationIdJson as String?;
     return DeleteFile(
-        kind: kind, uri: uri, options: options, annotationId: annotationId);
+      kind: kind,
+      uri: uri,
+      options: options,
+      annotationId: annotationId,
+    );
   }
 
   /// An optional annotation identifer describing the operation.
@@ -8435,7 +8985,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(kind, uri, options, annotationId);
+  int get hashCode => Object.hash(
+        kind,
+        uri,
+        options,
+        annotationId,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -8443,17 +8998,24 @@
 
 /// Delete file options
 class DeleteFileOptions implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DeleteFileOptions.canParse, DeleteFileOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DeleteFileOptions.canParse,
+    DeleteFileOptions.fromJson,
+  );
 
-  DeleteFileOptions({this.recursive, this.ignoreIfNotExists});
+  DeleteFileOptions({
+    this.recursive,
+    this.ignoreIfNotExists,
+  });
   static DeleteFileOptions fromJson(Map<String, Object?> json) {
     final recursiveJson = json['recursive'];
     final recursive = recursiveJson as bool?;
     final ignoreIfNotExistsJson = json['ignoreIfNotExists'];
     final ignoreIfNotExists = ignoreIfNotExistsJson as bool?;
     return DeleteFileOptions(
-        recursive: recursive, ignoreIfNotExists: ignoreIfNotExists);
+      recursive: recursive,
+      ignoreIfNotExists: ignoreIfNotExists,
+    );
   }
 
   /// Ignore the operation if the file doesn't exist.
@@ -8513,7 +9075,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(recursive, ignoreIfNotExists);
+  int get hashCode => Object.hash(
+        recursive,
+        ignoreIfNotExists,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -8523,16 +9088,22 @@
 /// files.
 ///  @since 3.16.0
 class DeleteFilesParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DeleteFilesParams.canParse, DeleteFilesParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DeleteFilesParams.canParse,
+    DeleteFilesParams.fromJson,
+  );
 
-  DeleteFilesParams({required this.files});
+  DeleteFilesParams({
+    required this.files,
+  });
   static DeleteFilesParams fromJson(Map<String, Object?> json) {
     final filesJson = json['files'];
     final files = (filesJson as List<Object?>)
         .map((item) => FileDelete.fromJson(item as Map<String, Object?>))
         .toList();
-    return DeleteFilesParams(files: files);
+    return DeleteFilesParams(
+      files: files,
+    );
   }
 
   /// An array of all files/folders deleted in this operation.
@@ -8590,19 +9161,22 @@
 }
 
 class Diagnostic implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(Diagnostic.canParse, Diagnostic.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Diagnostic.canParse,
+    Diagnostic.fromJson,
+  );
 
-  Diagnostic(
-      {required this.range,
-      this.severity,
-      this.code,
-      this.codeDescription,
-      this.source,
-      required this.message,
-      this.tags,
-      this.relatedInformation,
-      this.data});
+  Diagnostic({
+    required this.range,
+    this.severity,
+    this.code,
+    this.codeDescription,
+    this.source,
+    required this.message,
+    this.tags,
+    this.relatedInformation,
+    this.data,
+  });
   static Diagnostic fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
@@ -8632,15 +9206,16 @@
     final dataJson = json['data'];
     final data = dataJson;
     return Diagnostic(
-        range: range,
-        severity: severity,
-        code: code,
-        codeDescription: codeDescription,
-        source: source,
-        message: message,
-        tags: tags,
-        relatedInformation: relatedInformation,
-        data: data);
+      range: range,
+      severity: severity,
+      code: code,
+      codeDescription: codeDescription,
+      source: source,
+      message: message,
+      tags: tags,
+      relatedInformation: relatedInformation,
+      data: data,
+    );
   }
 
   /// The diagnostic's code, which might appear in the user interface.
@@ -8846,15 +9421,16 @@
 
   @override
   int get hashCode => Object.hash(
-      range,
-      severity,
-      code,
-      codeDescription,
-      source,
-      message,
-      lspHashCode(tags),
-      lspHashCode(relatedInformation),
-      data);
+        range,
+        severity,
+        code,
+        codeDescription,
+        source,
+        message,
+        lspHashCode(tags),
+        lspHashCode(relatedInformation),
+        data,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -8865,16 +9441,23 @@
 /// diagnostics, e.g when duplicating a symbol in a scope.
 class DiagnosticRelatedInformation implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DiagnosticRelatedInformation.canParse,
-      DiagnosticRelatedInformation.fromJson);
+    DiagnosticRelatedInformation.canParse,
+    DiagnosticRelatedInformation.fromJson,
+  );
 
-  DiagnosticRelatedInformation({required this.location, required this.message});
+  DiagnosticRelatedInformation({
+    required this.location,
+    required this.message,
+  });
   static DiagnosticRelatedInformation fromJson(Map<String, Object?> json) {
     final locationJson = json['location'];
     final location = Location.fromJson(locationJson as Map<String, Object?>);
     final messageJson = json['message'];
     final message = messageJson as String;
-    return DiagnosticRelatedInformation(location: location, message: message);
+    return DiagnosticRelatedInformation(
+      location: location,
+      message: message,
+    );
   }
 
   /// The location of this related diagnostic information.
@@ -8945,7 +9528,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(location, message);
+  int get hashCode => Object.hash(
+        location,
+        message,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -9020,16 +9606,20 @@
 
 class DidChangeConfigurationClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidChangeConfigurationClientCapabilities.canParse,
-      DidChangeConfigurationClientCapabilities.fromJson);
+    DidChangeConfigurationClientCapabilities.canParse,
+    DidChangeConfigurationClientCapabilities.fromJson,
+  );
 
-  DidChangeConfigurationClientCapabilities({this.dynamicRegistration});
+  DidChangeConfigurationClientCapabilities({
+    this.dynamicRegistration,
+  });
   static DidChangeConfigurationClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return DidChangeConfigurationClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Did change configuration notification supports dynamic registration.
@@ -9081,14 +9671,19 @@
 
 class DidChangeConfigurationParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidChangeConfigurationParams.canParse,
-      DidChangeConfigurationParams.fromJson);
+    DidChangeConfigurationParams.canParse,
+    DidChangeConfigurationParams.fromJson,
+  );
 
-  DidChangeConfigurationParams({this.settings});
+  DidChangeConfigurationParams({
+    this.settings,
+  });
   static DidChangeConfigurationParams fromJson(Map<String, Object?> json) {
     final settingsJson = json['settings'];
     final settings = settingsJson;
-    return DidChangeConfigurationParams(settings: settings);
+    return DidChangeConfigurationParams(
+      settings: settings,
+    );
   }
 
   /// The actual changed settings
@@ -9127,11 +9722,14 @@
 
 class DidChangeTextDocumentParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidChangeTextDocumentParams.canParse,
-      DidChangeTextDocumentParams.fromJson);
+    DidChangeTextDocumentParams.canParse,
+    DidChangeTextDocumentParams.fromJson,
+  );
 
-  DidChangeTextDocumentParams(
-      {required this.textDocument, required this.contentChanges});
+  DidChangeTextDocumentParams({
+    required this.textDocument,
+    required this.contentChanges,
+  });
   static DidChangeTextDocumentParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = VersionedTextDocumentIdentifier.fromJson(
@@ -9150,7 +9748,9 @@
                 : (throw '''$item was not one of (TextDocumentContentChangeEvent1, TextDocumentContentChangeEvent2)''')))
         .toList();
     return DidChangeTextDocumentParams(
-        textDocument: textDocument, contentChanges: contentChanges);
+      textDocument: textDocument,
+      contentChanges: contentChanges,
+    );
   }
 
   /// The actual content changes. The content changes describe single state
@@ -9254,7 +9854,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, lspHashCode(contentChanges));
+  int get hashCode => Object.hash(
+        textDocument,
+        lspHashCode(contentChanges),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -9262,16 +9865,20 @@
 
 class DidChangeWatchedFilesClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidChangeWatchedFilesClientCapabilities.canParse,
-      DidChangeWatchedFilesClientCapabilities.fromJson);
+    DidChangeWatchedFilesClientCapabilities.canParse,
+    DidChangeWatchedFilesClientCapabilities.fromJson,
+  );
 
-  DidChangeWatchedFilesClientCapabilities({this.dynamicRegistration});
+  DidChangeWatchedFilesClientCapabilities({
+    this.dynamicRegistration,
+  });
   static DidChangeWatchedFilesClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return DidChangeWatchedFilesClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Did change watched files notification supports dynamic registration.
@@ -9325,16 +9932,21 @@
 
 class DidChangeWatchedFilesParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidChangeWatchedFilesParams.canParse,
-      DidChangeWatchedFilesParams.fromJson);
+    DidChangeWatchedFilesParams.canParse,
+    DidChangeWatchedFilesParams.fromJson,
+  );
 
-  DidChangeWatchedFilesParams({required this.changes});
+  DidChangeWatchedFilesParams({
+    required this.changes,
+  });
   static DidChangeWatchedFilesParams fromJson(Map<String, Object?> json) {
     final changesJson = json['changes'];
     final changes = (changesJson as List<Object?>)
         .map((item) => FileEvent.fromJson(item as Map<String, Object?>))
         .toList();
-    return DidChangeWatchedFilesParams(changes: changes);
+    return DidChangeWatchedFilesParams(
+      changes: changes,
+    );
   }
 
   /// The actual file events.
@@ -9395,17 +10007,22 @@
 /// Describe options to be used when registering for file system change events.
 class DidChangeWatchedFilesRegistrationOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidChangeWatchedFilesRegistrationOptions.canParse,
-      DidChangeWatchedFilesRegistrationOptions.fromJson);
+    DidChangeWatchedFilesRegistrationOptions.canParse,
+    DidChangeWatchedFilesRegistrationOptions.fromJson,
+  );
 
-  DidChangeWatchedFilesRegistrationOptions({required this.watchers});
+  DidChangeWatchedFilesRegistrationOptions({
+    required this.watchers,
+  });
   static DidChangeWatchedFilesRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final watchersJson = json['watchers'];
     final watchers = (watchersJson as List<Object?>)
         .map((item) => FileSystemWatcher.fromJson(item as Map<String, Object?>))
         .toList();
-    return DidChangeWatchedFilesRegistrationOptions(watchers: watchers);
+    return DidChangeWatchedFilesRegistrationOptions(
+      watchers: watchers,
+    );
   }
 
   /// The watchers to register.
@@ -9467,15 +10084,20 @@
 
 class DidChangeWorkspaceFoldersParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidChangeWorkspaceFoldersParams.canParse,
-      DidChangeWorkspaceFoldersParams.fromJson);
+    DidChangeWorkspaceFoldersParams.canParse,
+    DidChangeWorkspaceFoldersParams.fromJson,
+  );
 
-  DidChangeWorkspaceFoldersParams({required this.event});
+  DidChangeWorkspaceFoldersParams({
+    required this.event,
+  });
   static DidChangeWorkspaceFoldersParams fromJson(Map<String, Object?> json) {
     final eventJson = json['event'];
     final event =
         WorkspaceFoldersChangeEvent.fromJson(eventJson as Map<String, Object?>);
-    return DidChangeWorkspaceFoldersParams(event: event);
+    return DidChangeWorkspaceFoldersParams(
+      event: event,
+    );
   }
 
   /// The actual workspace folder change event.
@@ -9532,14 +10154,20 @@
 
 class DidCloseTextDocumentParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidCloseTextDocumentParams.canParse, DidCloseTextDocumentParams.fromJson);
+    DidCloseTextDocumentParams.canParse,
+    DidCloseTextDocumentParams.fromJson,
+  );
 
-  DidCloseTextDocumentParams({required this.textDocument});
+  DidCloseTextDocumentParams({
+    required this.textDocument,
+  });
   static DidCloseTextDocumentParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
-    return DidCloseTextDocumentParams(textDocument: textDocument);
+    return DidCloseTextDocumentParams(
+      textDocument: textDocument,
+    );
   }
 
   /// The document that was closed.
@@ -9596,14 +10224,20 @@
 
 class DidOpenTextDocumentParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidOpenTextDocumentParams.canParse, DidOpenTextDocumentParams.fromJson);
+    DidOpenTextDocumentParams.canParse,
+    DidOpenTextDocumentParams.fromJson,
+  );
 
-  DidOpenTextDocumentParams({required this.textDocument});
+  DidOpenTextDocumentParams({
+    required this.textDocument,
+  });
   static DidOpenTextDocumentParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument =
         TextDocumentItem.fromJson(textDocumentJson as Map<String, Object?>);
-    return DidOpenTextDocumentParams(textDocument: textDocument);
+    return DidOpenTextDocumentParams(
+      textDocument: textDocument,
+    );
   }
 
   /// The document that was opened.
@@ -9660,16 +10294,24 @@
 
 class DidSaveTextDocumentParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DidSaveTextDocumentParams.canParse, DidSaveTextDocumentParams.fromJson);
+    DidSaveTextDocumentParams.canParse,
+    DidSaveTextDocumentParams.fromJson,
+  );
 
-  DidSaveTextDocumentParams({required this.textDocument, this.text});
+  DidSaveTextDocumentParams({
+    required this.textDocument,
+    this.text,
+  });
   static DidSaveTextDocumentParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
     final textJson = json['text'];
     final text = textJson as String?;
-    return DidSaveTextDocumentParams(textDocument: textDocument, text: text);
+    return DidSaveTextDocumentParams(
+      textDocument: textDocument,
+      text: text,
+    );
   }
 
   /// Optional the content when saved. Depends on the includeText value when the
@@ -9735,7 +10377,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, text);
+  int get hashCode => Object.hash(
+        textDocument,
+        text,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -9743,15 +10388,19 @@
 
 class DocumentColorClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentColorClientCapabilities.canParse,
-      DocumentColorClientCapabilities.fromJson);
+    DocumentColorClientCapabilities.canParse,
+    DocumentColorClientCapabilities.fromJson,
+  );
 
-  DocumentColorClientCapabilities({this.dynamicRegistration});
+  DocumentColorClientCapabilities({
+    this.dynamicRegistration,
+  });
   static DocumentColorClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return DocumentColorClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether document color supports dynamic registration.
@@ -9802,16 +10451,22 @@
 
 class DocumentColorOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentColorOptions.canParse, DocumentColorOptions.fromJson);
+    DocumentColorOptions.canParse,
+    DocumentColorOptions.fromJson,
+  );
 
-  DocumentColorOptions({this.workDoneProgress});
+  DocumentColorOptions({
+    this.workDoneProgress,
+  });
   static DocumentColorOptions fromJson(Map<String, Object?> json) {
     if (DocumentColorRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return DocumentColorRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return DocumentColorOptions(workDoneProgress: workDoneProgress);
+    return DocumentColorOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -9862,12 +10517,15 @@
 class DocumentColorParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentColorParams.canParse, DocumentColorParams.fromJson);
+    DocumentColorParams.canParse,
+    DocumentColorParams.fromJson,
+  );
 
-  DocumentColorParams(
-      {required this.textDocument,
-      this.workDoneToken,
-      this.partialResultToken});
+  DocumentColorParams({
+    required this.textDocument,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static DocumentColorParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -9889,9 +10547,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DocumentColorParams(
-        textDocument: textDocument,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -9978,8 +10637,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -9992,11 +10654,15 @@
         DocumentColorOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentColorRegistrationOptions.canParse,
-      DocumentColorRegistrationOptions.fromJson);
+    DocumentColorRegistrationOptions.canParse,
+    DocumentColorRegistrationOptions.fromJson,
+  );
 
-  DocumentColorRegistrationOptions(
-      {this.documentSelector, this.id, this.workDoneProgress});
+  DocumentColorRegistrationOptions({
+    this.documentSelector,
+    this.id,
+    this.workDoneProgress,
+  });
   static DocumentColorRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -10007,9 +10673,10 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentColorRegistrationOptions(
-        documentSelector: documentSelector,
-        id: id,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      id: id,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -10093,18 +10760,27 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), id, workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        id,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class DocumentFilter implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DocumentFilter.canParse, DocumentFilter.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DocumentFilter.canParse,
+    DocumentFilter.fromJson,
+  );
 
-  DocumentFilter({this.language, this.scheme, this.pattern});
+  DocumentFilter({
+    this.language,
+    this.scheme,
+    this.pattern,
+  });
   static DocumentFilter fromJson(Map<String, Object?> json) {
     final languageJson = json['language'];
     final language = languageJson as String?;
@@ -10112,7 +10788,11 @@
     final scheme = schemeJson as String?;
     final patternJson = json['pattern'];
     final pattern = patternJson as String?;
-    return DocumentFilter(language: language, scheme: scheme, pattern: pattern);
+    return DocumentFilter(
+      language: language,
+      scheme: scheme,
+      pattern: pattern,
+    );
   }
 
   /// A language id, like `typescript`.
@@ -10124,8 +10804,8 @@
   /// - `*` to match one or more characters in a path segment
   /// - `?` to match on one character in a path segment
   /// - `**` to match any number of path segments, including none
-  /// - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript
-  ///   and JavaScript files)
+  /// - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
+  ///   matches all TypeScript and JavaScript files)
   /// - `[]` to declare a range of characters to match in a path segment
   ///   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
   /// - `[!...]` to negate a range of characters to match in a path segment
@@ -10201,7 +10881,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(language, scheme, pattern);
+  int get hashCode => Object.hash(
+        language,
+        scheme,
+        pattern,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -10209,16 +10893,20 @@
 
 class DocumentFormattingClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentFormattingClientCapabilities.canParse,
-      DocumentFormattingClientCapabilities.fromJson);
+    DocumentFormattingClientCapabilities.canParse,
+    DocumentFormattingClientCapabilities.fromJson,
+  );
 
-  DocumentFormattingClientCapabilities({this.dynamicRegistration});
+  DocumentFormattingClientCapabilities({
+    this.dynamicRegistration,
+  });
   static DocumentFormattingClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return DocumentFormattingClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether formatting supports dynamic registration.
@@ -10270,9 +10958,13 @@
 
 class DocumentFormattingOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentFormattingOptions.canParse, DocumentFormattingOptions.fromJson);
+    DocumentFormattingOptions.canParse,
+    DocumentFormattingOptions.fromJson,
+  );
 
-  DocumentFormattingOptions({this.workDoneProgress});
+  DocumentFormattingOptions({
+    this.workDoneProgress,
+  });
   static DocumentFormattingOptions fromJson(Map<String, Object?> json) {
     if (DocumentFormattingRegistrationOptions.canParse(
         json, nullLspJsonReporter)) {
@@ -10280,7 +10972,9 @@
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return DocumentFormattingOptions(workDoneProgress: workDoneProgress);
+    return DocumentFormattingOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -10330,10 +11024,15 @@
 
 class DocumentFormattingParams implements WorkDoneProgressParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentFormattingParams.canParse, DocumentFormattingParams.fromJson);
+    DocumentFormattingParams.canParse,
+    DocumentFormattingParams.fromJson,
+  );
 
-  DocumentFormattingParams(
-      {required this.textDocument, required this.options, this.workDoneToken});
+  DocumentFormattingParams({
+    required this.textDocument,
+    required this.options,
+    this.workDoneToken,
+  });
   static DocumentFormattingParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -10350,9 +11049,10 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DocumentFormattingParams(
-        textDocument: textDocument,
-        options: options,
-        workDoneToken: workDoneToken);
+      textDocument: textDocument,
+      options: options,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The format options.
@@ -10443,7 +11143,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, options, workDoneToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        options,
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -10455,11 +11159,14 @@
         DocumentFormattingOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentFormattingRegistrationOptions.canParse,
-      DocumentFormattingRegistrationOptions.fromJson);
+    DocumentFormattingRegistrationOptions.canParse,
+    DocumentFormattingRegistrationOptions.fromJson,
+  );
 
-  DocumentFormattingRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress});
+  DocumentFormattingRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+  });
   static DocumentFormattingRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
@@ -10469,7 +11176,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentFormattingRegistrationOptions(
-        documentSelector: documentSelector, workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -10536,8 +11245,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -10547,10 +11258,15 @@
 /// special attention. Usually a document highlight is visualized by changing
 /// the background color of its range.
 class DocumentHighlight implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DocumentHighlight.canParse, DocumentHighlight.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DocumentHighlight.canParse,
+    DocumentHighlight.fromJson,
+  );
 
-  DocumentHighlight({required this.range, this.kind});
+  DocumentHighlight({
+    required this.range,
+    this.kind,
+  });
   static DocumentHighlight fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
@@ -10558,7 +11274,10 @@
     final kind = kindJson != null
         ? DocumentHighlightKind.fromJson(kindJson as int)
         : null;
-    return DocumentHighlight(range: range, kind: kind);
+    return DocumentHighlight(
+      range: range,
+      kind: kind,
+    );
   }
 
   /// The highlight kind, default is DocumentHighlightKind.Text.
@@ -10622,7 +11341,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, kind);
+  int get hashCode => Object.hash(
+        range,
+        kind,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -10630,16 +11352,20 @@
 
 class DocumentHighlightClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentHighlightClientCapabilities.canParse,
-      DocumentHighlightClientCapabilities.fromJson);
+    DocumentHighlightClientCapabilities.canParse,
+    DocumentHighlightClientCapabilities.fromJson,
+  );
 
-  DocumentHighlightClientCapabilities({this.dynamicRegistration});
+  DocumentHighlightClientCapabilities({
+    this.dynamicRegistration,
+  });
   static DocumentHighlightClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return DocumentHighlightClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether document highlight supports dynamic registration.
@@ -10723,9 +11449,13 @@
 
 class DocumentHighlightOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentHighlightOptions.canParse, DocumentHighlightOptions.fromJson);
+    DocumentHighlightOptions.canParse,
+    DocumentHighlightOptions.fromJson,
+  );
 
-  DocumentHighlightOptions({this.workDoneProgress});
+  DocumentHighlightOptions({
+    this.workDoneProgress,
+  });
   static DocumentHighlightOptions fromJson(Map<String, Object?> json) {
     if (DocumentHighlightRegistrationOptions.canParse(
         json, nullLspJsonReporter)) {
@@ -10733,7 +11463,9 @@
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return DocumentHighlightOptions(workDoneProgress: workDoneProgress);
+    return DocumentHighlightOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -10788,13 +11520,16 @@
         PartialResultParams,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentHighlightParams.canParse, DocumentHighlightParams.fromJson);
+    DocumentHighlightParams.canParse,
+    DocumentHighlightParams.fromJson,
+  );
 
-  DocumentHighlightParams(
-      {required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  DocumentHighlightParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static DocumentHighlightParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -10818,10 +11553,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DocumentHighlightParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -10931,8 +11667,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, position, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -10944,11 +11684,14 @@
         DocumentHighlightOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentHighlightRegistrationOptions.canParse,
-      DocumentHighlightRegistrationOptions.fromJson);
+    DocumentHighlightRegistrationOptions.canParse,
+    DocumentHighlightRegistrationOptions.fromJson,
+  );
 
-  DocumentHighlightRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress});
+  DocumentHighlightRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+  });
   static DocumentHighlightRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
@@ -10958,7 +11701,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentHighlightRegistrationOptions(
-        documentSelector: documentSelector, workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -11025,8 +11770,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11035,10 +11782,17 @@
 /// A document link is a range in a text document that links to an internal or
 /// external resource, like another text document or a web site.
 class DocumentLink implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DocumentLink.canParse, DocumentLink.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DocumentLink.canParse,
+    DocumentLink.fromJson,
+  );
 
-  DocumentLink({required this.range, this.target, this.tooltip, this.data});
+  DocumentLink({
+    required this.range,
+    this.target,
+    this.tooltip,
+    this.data,
+  });
   static DocumentLink fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
@@ -11049,7 +11803,11 @@
     final dataJson = json['data'];
     final data = dataJson;
     return DocumentLink(
-        range: range, target: target, tooltip: tooltip, data: data);
+      range: range,
+      target: target,
+      tooltip: tooltip,
+      data: data,
+    );
   }
 
   /// A data entry field that is preserved on a document link between a
@@ -11146,7 +11904,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, target, tooltip, data);
+  int get hashCode => Object.hash(
+        range,
+        target,
+        tooltip,
+        data,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11154,19 +11917,23 @@
 
 class DocumentLinkClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentLinkClientCapabilities.canParse,
-      DocumentLinkClientCapabilities.fromJson);
+    DocumentLinkClientCapabilities.canParse,
+    DocumentLinkClientCapabilities.fromJson,
+  );
 
-  DocumentLinkClientCapabilities(
-      {this.dynamicRegistration, this.tooltipSupport});
+  DocumentLinkClientCapabilities({
+    this.dynamicRegistration,
+    this.tooltipSupport,
+  });
   static DocumentLinkClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     final tooltipSupportJson = json['tooltipSupport'];
     final tooltipSupport = tooltipSupportJson as bool?;
     return DocumentLinkClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        tooltipSupport: tooltipSupport);
+      dynamicRegistration: dynamicRegistration,
+      tooltipSupport: tooltipSupport,
+    );
   }
 
   /// Whether document link supports dynamic registration.
@@ -11228,7 +11995,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, tooltipSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        tooltipSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11236,9 +12006,14 @@
 
 class DocumentLinkOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentLinkOptions.canParse, DocumentLinkOptions.fromJson);
+    DocumentLinkOptions.canParse,
+    DocumentLinkOptions.fromJson,
+  );
 
-  DocumentLinkOptions({this.resolveProvider, this.workDoneProgress});
+  DocumentLinkOptions({
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static DocumentLinkOptions fromJson(Map<String, Object?> json) {
     if (DocumentLinkRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return DocumentLinkRegistrationOptions.fromJson(json);
@@ -11248,7 +12023,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentLinkOptions(
-        resolveProvider: resolveProvider, workDoneProgress: workDoneProgress);
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// Document links have a resolve provider as well.
@@ -11307,7 +12084,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(resolveProvider, workDoneProgress);
+  int get hashCode => Object.hash(
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11315,13 +12095,16 @@
 
 class DocumentLinkParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DocumentLinkParams.canParse, DocumentLinkParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DocumentLinkParams.canParse,
+    DocumentLinkParams.fromJson,
+  );
 
-  DocumentLinkParams(
-      {required this.textDocument,
-      this.workDoneToken,
-      this.partialResultToken});
+  DocumentLinkParams({
+    required this.textDocument,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static DocumentLinkParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -11343,9 +12126,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DocumentLinkParams(
-        textDocument: textDocument,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -11432,8 +12216,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11445,11 +12232,15 @@
         DocumentLinkOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentLinkRegistrationOptions.canParse,
-      DocumentLinkRegistrationOptions.fromJson);
+    DocumentLinkRegistrationOptions.canParse,
+    DocumentLinkRegistrationOptions.fromJson,
+  );
 
-  DocumentLinkRegistrationOptions(
-      {this.documentSelector, this.resolveProvider, this.workDoneProgress});
+  DocumentLinkRegistrationOptions({
+    this.documentSelector,
+    this.resolveProvider,
+    this.workDoneProgress,
+  });
   static DocumentLinkRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -11460,9 +12251,10 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentLinkRegistrationOptions(
-        documentSelector: documentSelector,
-        resolveProvider: resolveProvider,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      resolveProvider: resolveProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -11546,7 +12338,10 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(documentSelector), resolveProvider, workDoneProgress);
+        lspHashCode(documentSelector),
+        resolveProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11554,16 +12349,20 @@
 
 class DocumentOnTypeFormattingClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentOnTypeFormattingClientCapabilities.canParse,
-      DocumentOnTypeFormattingClientCapabilities.fromJson);
+    DocumentOnTypeFormattingClientCapabilities.canParse,
+    DocumentOnTypeFormattingClientCapabilities.fromJson,
+  );
 
-  DocumentOnTypeFormattingClientCapabilities({this.dynamicRegistration});
+  DocumentOnTypeFormattingClientCapabilities({
+    this.dynamicRegistration,
+  });
   static DocumentOnTypeFormattingClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return DocumentOnTypeFormattingClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether on type formatting supports dynamic registration.
@@ -11615,11 +12414,14 @@
 
 class DocumentOnTypeFormattingOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentOnTypeFormattingOptions.canParse,
-      DocumentOnTypeFormattingOptions.fromJson);
+    DocumentOnTypeFormattingOptions.canParse,
+    DocumentOnTypeFormattingOptions.fromJson,
+  );
 
-  DocumentOnTypeFormattingOptions(
-      {required this.firstTriggerCharacter, this.moreTriggerCharacter});
+  DocumentOnTypeFormattingOptions({
+    required this.firstTriggerCharacter,
+    this.moreTriggerCharacter,
+  });
   static DocumentOnTypeFormattingOptions fromJson(Map<String, Object?> json) {
     if (DocumentOnTypeFormattingRegistrationOptions.canParse(
         json, nullLspJsonReporter)) {
@@ -11632,8 +12434,9 @@
         ?.map((item) => item as String)
         .toList();
     return DocumentOnTypeFormattingOptions(
-        firstTriggerCharacter: firstTriggerCharacter,
-        moreTriggerCharacter: moreTriggerCharacter);
+      firstTriggerCharacter: firstTriggerCharacter,
+      moreTriggerCharacter: moreTriggerCharacter,
+    );
   }
 
   /// A character on which formatting should be triggered, like `}`.
@@ -11703,8 +12506,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(firstTriggerCharacter, lspHashCode(moreTriggerCharacter));
+  int get hashCode => Object.hash(
+        firstTriggerCharacter,
+        lspHashCode(moreTriggerCharacter),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11713,14 +12518,16 @@
 class DocumentOnTypeFormattingParams
     implements TextDocumentPositionParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentOnTypeFormattingParams.canParse,
-      DocumentOnTypeFormattingParams.fromJson);
+    DocumentOnTypeFormattingParams.canParse,
+    DocumentOnTypeFormattingParams.fromJson,
+  );
 
-  DocumentOnTypeFormattingParams(
-      {required this.ch,
-      required this.options,
-      required this.textDocument,
-      required this.position});
+  DocumentOnTypeFormattingParams({
+    required this.ch,
+    required this.options,
+    required this.textDocument,
+    required this.position,
+  });
   static DocumentOnTypeFormattingParams fromJson(Map<String, Object?> json) {
     final chJson = json['ch'];
     final ch = chJson as String;
@@ -11733,10 +12540,11 @@
     final positionJson = json['position'];
     final position = Position.fromJson(positionJson as Map<String, Object?>);
     return DocumentOnTypeFormattingParams(
-        ch: ch,
-        options: options,
-        textDocument: textDocument,
-        position: position);
+      ch: ch,
+      options: options,
+      textDocument: textDocument,
+      position: position,
+    );
   }
 
   /// The character that has been typed.
@@ -11855,7 +12663,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(ch, options, textDocument, position);
+  int get hashCode => Object.hash(
+        ch,
+        options,
+        textDocument,
+        position,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11867,13 +12680,15 @@
         DocumentOnTypeFormattingOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentOnTypeFormattingRegistrationOptions.canParse,
-      DocumentOnTypeFormattingRegistrationOptions.fromJson);
+    DocumentOnTypeFormattingRegistrationOptions.canParse,
+    DocumentOnTypeFormattingRegistrationOptions.fromJson,
+  );
 
-  DocumentOnTypeFormattingRegistrationOptions(
-      {this.documentSelector,
-      required this.firstTriggerCharacter,
-      this.moreTriggerCharacter});
+  DocumentOnTypeFormattingRegistrationOptions({
+    this.documentSelector,
+    required this.firstTriggerCharacter,
+    this.moreTriggerCharacter,
+  });
   static DocumentOnTypeFormattingRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
@@ -11887,9 +12702,10 @@
         ?.map((item) => item as String)
         .toList();
     return DocumentOnTypeFormattingRegistrationOptions(
-        documentSelector: documentSelector,
-        firstTriggerCharacter: firstTriggerCharacter,
-        moreTriggerCharacter: moreTriggerCharacter);
+      documentSelector: documentSelector,
+      firstTriggerCharacter: firstTriggerCharacter,
+      moreTriggerCharacter: moreTriggerCharacter,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -11984,8 +12800,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(documentSelector),
-      firstTriggerCharacter, lspHashCode(moreTriggerCharacter));
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        firstTriggerCharacter,
+        lspHashCode(moreTriggerCharacter),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -11993,16 +12812,20 @@
 
 class DocumentRangeFormattingClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentRangeFormattingClientCapabilities.canParse,
-      DocumentRangeFormattingClientCapabilities.fromJson);
+    DocumentRangeFormattingClientCapabilities.canParse,
+    DocumentRangeFormattingClientCapabilities.fromJson,
+  );
 
-  DocumentRangeFormattingClientCapabilities({this.dynamicRegistration});
+  DocumentRangeFormattingClientCapabilities({
+    this.dynamicRegistration,
+  });
   static DocumentRangeFormattingClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return DocumentRangeFormattingClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether formatting supports dynamic registration.
@@ -12055,10 +12878,13 @@
 class DocumentRangeFormattingOptions
     implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentRangeFormattingOptions.canParse,
-      DocumentRangeFormattingOptions.fromJson);
+    DocumentRangeFormattingOptions.canParse,
+    DocumentRangeFormattingOptions.fromJson,
+  );
 
-  DocumentRangeFormattingOptions({this.workDoneProgress});
+  DocumentRangeFormattingOptions({
+    this.workDoneProgress,
+  });
   static DocumentRangeFormattingOptions fromJson(Map<String, Object?> json) {
     if (DocumentRangeFormattingRegistrationOptions.canParse(
         json, nullLspJsonReporter)) {
@@ -12066,7 +12892,9 @@
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return DocumentRangeFormattingOptions(workDoneProgress: workDoneProgress);
+    return DocumentRangeFormattingOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -12117,14 +12945,16 @@
 class DocumentRangeFormattingParams
     implements WorkDoneProgressParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentRangeFormattingParams.canParse,
-      DocumentRangeFormattingParams.fromJson);
+    DocumentRangeFormattingParams.canParse,
+    DocumentRangeFormattingParams.fromJson,
+  );
 
-  DocumentRangeFormattingParams(
-      {required this.textDocument,
-      required this.range,
-      required this.options,
-      this.workDoneToken});
+  DocumentRangeFormattingParams({
+    required this.textDocument,
+    required this.range,
+    required this.options,
+    this.workDoneToken,
+  });
   static DocumentRangeFormattingParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -12143,10 +12973,11 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return DocumentRangeFormattingParams(
-        textDocument: textDocument,
-        range: range,
-        options: options,
-        workDoneToken: workDoneToken);
+      textDocument: textDocument,
+      range: range,
+      options: options,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The format options
@@ -12260,7 +13091,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, range, options, workDoneToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        range,
+        options,
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -12272,11 +13108,14 @@
         DocumentRangeFormattingOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentRangeFormattingRegistrationOptions.canParse,
-      DocumentRangeFormattingRegistrationOptions.fromJson);
+    DocumentRangeFormattingRegistrationOptions.canParse,
+    DocumentRangeFormattingRegistrationOptions.fromJson,
+  );
 
-  DocumentRangeFormattingRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress});
+  DocumentRangeFormattingRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+  });
   static DocumentRangeFormattingRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
@@ -12286,7 +13125,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentRangeFormattingRegistrationOptions(
-        documentSelector: documentSelector, workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -12353,8 +13194,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -12365,18 +13208,21 @@
 /// have two ranges: one that encloses its definition and one that points to its
 /// most interesting range, e.g. the range of an identifier.
 class DocumentSymbol implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(DocumentSymbol.canParse, DocumentSymbol.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    DocumentSymbol.canParse,
+    DocumentSymbol.fromJson,
+  );
 
-  DocumentSymbol(
-      {required this.name,
-      this.detail,
-      required this.kind,
-      this.tags,
-      this.deprecated,
-      required this.range,
-      required this.selectionRange,
-      this.children});
+  DocumentSymbol({
+    required this.name,
+    this.detail,
+    required this.kind,
+    this.tags,
+    this.deprecated,
+    required this.range,
+    required this.selectionRange,
+    this.children,
+  });
   static DocumentSymbol fromJson(Map<String, Object?> json) {
     final nameJson = json['name'];
     final name = nameJson as String;
@@ -12400,14 +13246,15 @@
         ?.map((item) => DocumentSymbol.fromJson(item as Map<String, Object?>))
         .toList();
     return DocumentSymbol(
-        name: name,
-        detail: detail,
-        kind: kind,
-        tags: tags,
-        deprecated: deprecated,
-        range: range,
-        selectionRange: selectionRange,
-        children: children);
+      name: name,
+      detail: detail,
+      kind: kind,
+      tags: tags,
+      deprecated: deprecated,
+      range: range,
+      selectionRange: selectionRange,
+      children: children,
+    );
   }
 
   /// Children of this symbol, e.g. properties of a class.
@@ -12607,8 +13454,16 @@
   }
 
   @override
-  int get hashCode => Object.hash(name, detail, kind, lspHashCode(tags),
-      deprecated, range, selectionRange, lspHashCode(children));
+  int get hashCode => Object.hash(
+        name,
+        detail,
+        kind,
+        lspHashCode(tags),
+        deprecated,
+        range,
+        selectionRange,
+        lspHashCode(children),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -12616,15 +13471,17 @@
 
 class DocumentSymbolClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentSymbolClientCapabilities.canParse,
-      DocumentSymbolClientCapabilities.fromJson);
+    DocumentSymbolClientCapabilities.canParse,
+    DocumentSymbolClientCapabilities.fromJson,
+  );
 
-  DocumentSymbolClientCapabilities(
-      {this.dynamicRegistration,
-      this.symbolKind,
-      this.hierarchicalDocumentSymbolSupport,
-      this.tagSupport,
-      this.labelSupport});
+  DocumentSymbolClientCapabilities({
+    this.dynamicRegistration,
+    this.symbolKind,
+    this.hierarchicalDocumentSymbolSupport,
+    this.tagSupport,
+    this.labelSupport,
+  });
   static DocumentSymbolClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -12645,11 +13502,12 @@
     final labelSupportJson = json['labelSupport'];
     final labelSupport = labelSupportJson as bool?;
     return DocumentSymbolClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        symbolKind: symbolKind,
-        hierarchicalDocumentSymbolSupport: hierarchicalDocumentSymbolSupport,
-        tagSupport: tagSupport,
-        labelSupport: labelSupport);
+      dynamicRegistration: dynamicRegistration,
+      symbolKind: symbolKind,
+      hierarchicalDocumentSymbolSupport: hierarchicalDocumentSymbolSupport,
+      tagSupport: tagSupport,
+      labelSupport: labelSupport,
+    );
   }
 
   /// Whether document symbol supports dynamic registration.
@@ -12777,8 +13635,13 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, symbolKind,
-      hierarchicalDocumentSymbolSupport, tagSupport, labelSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        symbolKind,
+        hierarchicalDocumentSymbolSupport,
+        tagSupport,
+        labelSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -12786,17 +13649,22 @@
 
 class DocumentSymbolClientCapabilitiesSymbolKind implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentSymbolClientCapabilitiesSymbolKind.canParse,
-      DocumentSymbolClientCapabilitiesSymbolKind.fromJson);
+    DocumentSymbolClientCapabilitiesSymbolKind.canParse,
+    DocumentSymbolClientCapabilitiesSymbolKind.fromJson,
+  );
 
-  DocumentSymbolClientCapabilitiesSymbolKind({this.valueSet});
+  DocumentSymbolClientCapabilitiesSymbolKind({
+    this.valueSet,
+  });
   static DocumentSymbolClientCapabilitiesSymbolKind fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>?)
         ?.map((item) => SymbolKind.fromJson(item as int))
         .toList();
-    return DocumentSymbolClientCapabilitiesSymbolKind(valueSet: valueSet);
+    return DocumentSymbolClientCapabilitiesSymbolKind(
+      valueSet: valueSet,
+    );
   }
 
   /// The symbol kind values the client supports. When this property exists the
@@ -12858,17 +13726,22 @@
 
 class DocumentSymbolClientCapabilitiesTagSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentSymbolClientCapabilitiesTagSupport.canParse,
-      DocumentSymbolClientCapabilitiesTagSupport.fromJson);
+    DocumentSymbolClientCapabilitiesTagSupport.canParse,
+    DocumentSymbolClientCapabilitiesTagSupport.fromJson,
+  );
 
-  DocumentSymbolClientCapabilitiesTagSupport({required this.valueSet});
+  DocumentSymbolClientCapabilitiesTagSupport({
+    required this.valueSet,
+  });
   static DocumentSymbolClientCapabilitiesTagSupport fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>)
         .map((item) => SymbolTag.fromJson(item as int))
         .toList();
-    return DocumentSymbolClientCapabilitiesTagSupport(valueSet: valueSet);
+    return DocumentSymbolClientCapabilitiesTagSupport(
+      valueSet: valueSet,
+    );
   }
 
   /// The tags supported by the client.
@@ -12929,9 +13802,14 @@
 
 class DocumentSymbolOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentSymbolOptions.canParse, DocumentSymbolOptions.fromJson);
+    DocumentSymbolOptions.canParse,
+    DocumentSymbolOptions.fromJson,
+  );
 
-  DocumentSymbolOptions({this.label, this.workDoneProgress});
+  DocumentSymbolOptions({
+    this.label,
+    this.workDoneProgress,
+  });
   static DocumentSymbolOptions fromJson(Map<String, Object?> json) {
     if (DocumentSymbolRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return DocumentSymbolRegistrationOptions.fromJson(json);
@@ -12941,7 +13819,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentSymbolOptions(
-        label: label, workDoneProgress: workDoneProgress);
+      label: label,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A human-readable string that is shown when multiple outlines trees are
@@ -13002,7 +13882,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(label, workDoneProgress);
+  int get hashCode => Object.hash(
+        label,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -13011,12 +13894,15 @@
 class DocumentSymbolParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentSymbolParams.canParse, DocumentSymbolParams.fromJson);
+    DocumentSymbolParams.canParse,
+    DocumentSymbolParams.fromJson,
+  );
 
-  DocumentSymbolParams(
-      {required this.textDocument,
-      this.workDoneToken,
-      this.partialResultToken});
+  DocumentSymbolParams({
+    required this.textDocument,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static DocumentSymbolParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -13038,9 +13924,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return DocumentSymbolParams(
-        textDocument: textDocument,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -13127,8 +14014,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -13140,11 +14030,15 @@
         DocumentSymbolOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      DocumentSymbolRegistrationOptions.canParse,
-      DocumentSymbolRegistrationOptions.fromJson);
+    DocumentSymbolRegistrationOptions.canParse,
+    DocumentSymbolRegistrationOptions.fromJson,
+  );
 
-  DocumentSymbolRegistrationOptions(
-      {this.documentSelector, this.label, this.workDoneProgress});
+  DocumentSymbolRegistrationOptions({
+    this.documentSelector,
+    this.label,
+    this.workDoneProgress,
+  });
   static DocumentSymbolRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -13155,9 +14049,10 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return DocumentSymbolRegistrationOptions(
-        documentSelector: documentSelector,
-        label: label,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      label: label,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -13242,8 +14137,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), label, workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        label,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -13272,11 +14170,15 @@
   /// `ServerNotInitialized` and the `UnknownErrorCode` are left in the range.
   ///  @since 3.16.0
   static const jsonrpcReservedErrorRangeStart = ErrorCodes(-32099);
+
+  /// Error code indicating that a server received a notification or request
+  /// before the server has received the `initialize` request.
   static const ServerNotInitialized = ErrorCodes(-32002);
   static const UnknownErrorCode = ErrorCodes(-32001);
 
-  /// This is the start range of JSON RPC reserved error codes. It doesn't
-  /// denote a real error code.
+  /// This is the end range of JSON RPC reserved error codes. It doesn't denote
+  /// a real error code.
+  ///  @since 3.16.0
   static const jsonrpcReservedErrorRangeEnd = ErrorCodes(-32000);
 
   /// This is the start range of LSP reserved error codes. It doesn't denote a
@@ -13304,15 +14206,19 @@
 
 class ExecuteCommandClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ExecuteCommandClientCapabilities.canParse,
-      ExecuteCommandClientCapabilities.fromJson);
+    ExecuteCommandClientCapabilities.canParse,
+    ExecuteCommandClientCapabilities.fromJson,
+  );
 
-  ExecuteCommandClientCapabilities({this.dynamicRegistration});
+  ExecuteCommandClientCapabilities({
+    this.dynamicRegistration,
+  });
   static ExecuteCommandClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return ExecuteCommandClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Execute command supports dynamic registration.
@@ -13363,9 +14269,14 @@
 
 class ExecuteCommandOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ExecuteCommandOptions.canParse, ExecuteCommandOptions.fromJson);
+    ExecuteCommandOptions.canParse,
+    ExecuteCommandOptions.fromJson,
+  );
 
-  ExecuteCommandOptions({required this.commands, this.workDoneProgress});
+  ExecuteCommandOptions({
+    required this.commands,
+    this.workDoneProgress,
+  });
   static ExecuteCommandOptions fromJson(Map<String, Object?> json) {
     if (ExecuteCommandRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return ExecuteCommandRegistrationOptions.fromJson(json);
@@ -13376,7 +14287,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return ExecuteCommandOptions(
-        commands: commands, workDoneProgress: workDoneProgress);
+      commands: commands,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// The commands to be executed on the server
@@ -13443,7 +14356,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(commands), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(commands),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -13451,10 +14367,15 @@
 
 class ExecuteCommandParams implements WorkDoneProgressParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ExecuteCommandParams.canParse, ExecuteCommandParams.fromJson);
+    ExecuteCommandParams.canParse,
+    ExecuteCommandParams.fromJson,
+  );
 
-  ExecuteCommandParams(
-      {required this.command, this.arguments, this.workDoneToken});
+  ExecuteCommandParams({
+    required this.command,
+    this.arguments,
+    this.workDoneToken,
+  });
   static ExecuteCommandParams fromJson(Map<String, Object?> json) {
     final commandJson = json['command'];
     final command = commandJson as String;
@@ -13470,7 +14391,10 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return ExecuteCommandParams(
-        command: command, arguments: arguments, workDoneToken: workDoneToken);
+      command: command,
+      arguments: arguments,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// Arguments that the command should be invoked with.
@@ -13558,8 +14482,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(command, lspHashCode(arguments), workDoneToken);
+  int get hashCode => Object.hash(
+        command,
+        lspHashCode(arguments),
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -13569,11 +14496,14 @@
 class ExecuteCommandRegistrationOptions
     implements ExecuteCommandOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ExecuteCommandRegistrationOptions.canParse,
-      ExecuteCommandRegistrationOptions.fromJson);
+    ExecuteCommandRegistrationOptions.canParse,
+    ExecuteCommandRegistrationOptions.fromJson,
+  );
 
-  ExecuteCommandRegistrationOptions(
-      {required this.commands, this.workDoneProgress});
+  ExecuteCommandRegistrationOptions({
+    required this.commands,
+    this.workDoneProgress,
+  });
   static ExecuteCommandRegistrationOptions fromJson(Map<String, Object?> json) {
     final commandsJson = json['commands'];
     final commands =
@@ -13581,7 +14511,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return ExecuteCommandRegistrationOptions(
-        commands: commands, workDoneProgress: workDoneProgress);
+      commands: commands,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// The commands to be executed on the server
@@ -13648,7 +14580,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(commands), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(commands),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -13735,14 +14670,20 @@
 /// Represents information on a file/folder create.
 ///  @since 3.16.0
 class FileCreate implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FileCreate.canParse, FileCreate.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FileCreate.canParse,
+    FileCreate.fromJson,
+  );
 
-  FileCreate({required this.uri});
+  FileCreate({
+    required this.uri,
+  });
   static FileCreate fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
-    return FileCreate(uri: uri);
+    return FileCreate(
+      uri: uri,
+    );
   }
 
   /// A file:// URI for the location of the file/folder being created.
@@ -13799,14 +14740,20 @@
 /// Represents information on a file/folder delete.
 ///  @since 3.16.0
 class FileDelete implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FileDelete.canParse, FileDelete.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FileDelete.canParse,
+    FileDelete.fromJson,
+  );
 
-  FileDelete({required this.uri});
+  FileDelete({
+    required this.uri,
+  });
   static FileDelete fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
-    return FileDelete(uri: uri);
+    return FileDelete(
+      uri: uri,
+    );
   }
 
   /// A file:// URI for the location of the file/folder being deleted.
@@ -13862,16 +14809,24 @@
 
 /// An event describing a file change.
 class FileEvent implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FileEvent.canParse, FileEvent.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FileEvent.canParse,
+    FileEvent.fromJson,
+  );
 
-  FileEvent({required this.uri, required this.type});
+  FileEvent({
+    required this.uri,
+    required this.type,
+  });
   static FileEvent fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
     final typeJson = json['type'];
     final type = typeJson as int;
-    return FileEvent(uri: uri, type: type);
+    return FileEvent(
+      uri: uri,
+      type: type,
+    );
   }
 
   /// The change type.
@@ -13941,7 +14896,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, type);
+  int get hashCode => Object.hash(
+        uri,
+        type,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -13952,16 +14910,24 @@
 ///  @since 3.16.0
 class FileOperationFilter implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FileOperationFilter.canParse, FileOperationFilter.fromJson);
+    FileOperationFilter.canParse,
+    FileOperationFilter.fromJson,
+  );
 
-  FileOperationFilter({this.scheme, required this.pattern});
+  FileOperationFilter({
+    this.scheme,
+    required this.pattern,
+  });
   static FileOperationFilter fromJson(Map<String, Object?> json) {
     final schemeJson = json['scheme'];
     final scheme = schemeJson as String?;
     final patternJson = json['pattern'];
     final pattern =
         FileOperationPattern.fromJson(patternJson as Map<String, Object?>);
-    return FileOperationFilter(scheme: scheme, pattern: pattern);
+    return FileOperationFilter(
+      scheme: scheme,
+      pattern: pattern,
+    );
   }
 
   /// The actual file operation pattern.
@@ -14026,7 +14992,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(scheme, pattern);
+  int get hashCode => Object.hash(
+        scheme,
+        pattern,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -14037,9 +15006,15 @@
 ///  @since 3.16.0
 class FileOperationPattern implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FileOperationPattern.canParse, FileOperationPattern.fromJson);
+    FileOperationPattern.canParse,
+    FileOperationPattern.fromJson,
+  );
 
-  FileOperationPattern({required this.glob, this.matches, this.options});
+  FileOperationPattern({
+    required this.glob,
+    this.matches,
+    this.options,
+  });
   static FileOperationPattern fromJson(Map<String, Object?> json) {
     final globJson = json['glob'];
     final glob = globJson as String;
@@ -14052,15 +15027,19 @@
         ? FileOperationPatternOptions.fromJson(
             optionsJson as Map<String, Object?>)
         : null;
-    return FileOperationPattern(glob: glob, matches: matches, options: options);
+    return FileOperationPattern(
+      glob: glob,
+      matches: matches,
+      options: options,
+    );
   }
 
   /// The glob pattern to match. Glob patterns can have the following syntax:
   /// - `*` to match one or more characters in a path segment
   /// - `?` to match on one character in a path segment
   /// - `**` to match any number of path segments, including none
-  /// - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript
-  ///   and JavaScript files)
+  /// - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
+  ///   matches all TypeScript and JavaScript files)
   /// - `[]` to declare a range of characters to match in a path segment
   ///   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
   /// - `[!...]` to negate a range of characters to match in a path segment
@@ -14150,7 +15129,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(glob, matches, options);
+  int get hashCode => Object.hash(
+        glob,
+        matches,
+        options,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -14190,14 +15173,19 @@
 ///  @since 3.16.0
 class FileOperationPatternOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FileOperationPatternOptions.canParse,
-      FileOperationPatternOptions.fromJson);
+    FileOperationPatternOptions.canParse,
+    FileOperationPatternOptions.fromJson,
+  );
 
-  FileOperationPatternOptions({this.ignoreCase});
+  FileOperationPatternOptions({
+    this.ignoreCase,
+  });
   static FileOperationPatternOptions fromJson(Map<String, Object?> json) {
     final ignoreCaseJson = json['ignoreCase'];
     final ignoreCase = ignoreCaseJson as bool?;
-    return FileOperationPatternOptions(ignoreCase: ignoreCase);
+    return FileOperationPatternOptions(
+      ignoreCase: ignoreCase,
+    );
   }
 
   /// The pattern should be matched ignoring casing.
@@ -14250,17 +15238,22 @@
 ///  @since 3.16.0
 class FileOperationRegistrationOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FileOperationRegistrationOptions.canParse,
-      FileOperationRegistrationOptions.fromJson);
+    FileOperationRegistrationOptions.canParse,
+    FileOperationRegistrationOptions.fromJson,
+  );
 
-  FileOperationRegistrationOptions({required this.filters});
+  FileOperationRegistrationOptions({
+    required this.filters,
+  });
   static FileOperationRegistrationOptions fromJson(Map<String, Object?> json) {
     final filtersJson = json['filters'];
     final filters = (filtersJson as List<Object?>)
         .map((item) =>
             FileOperationFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    return FileOperationRegistrationOptions(filters: filters);
+    return FileOperationRegistrationOptions(
+      filters: filters,
+    );
   }
 
   /// The actual filters.
@@ -14322,16 +15315,24 @@
 /// Represents information on a file/folder rename.
 ///  @since 3.16.0
 class FileRename implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FileRename.canParse, FileRename.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FileRename.canParse,
+    FileRename.fromJson,
+  );
 
-  FileRename({required this.oldUri, required this.newUri});
+  FileRename({
+    required this.oldUri,
+    required this.newUri,
+  });
   static FileRename fromJson(Map<String, Object?> json) {
     final oldUriJson = json['oldUri'];
     final oldUri = oldUriJson as String;
     final newUriJson = json['newUri'];
     final newUri = newUriJson as String;
-    return FileRename(oldUri: oldUri, newUri: newUri);
+    return FileRename(
+      oldUri: oldUri,
+      newUri: newUri,
+    );
   }
 
   /// A file:// URI for the new location of the file/folder being renamed.
@@ -14401,33 +15402,44 @@
   }
 
   @override
-  int get hashCode => Object.hash(oldUri, newUri);
+  int get hashCode => Object.hash(
+        oldUri,
+        newUri,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class FileSystemWatcher implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FileSystemWatcher.canParse, FileSystemWatcher.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FileSystemWatcher.canParse,
+    FileSystemWatcher.fromJson,
+  );
 
-  FileSystemWatcher({required this.globPattern, this.kind});
+  FileSystemWatcher({
+    required this.globPattern,
+    this.kind,
+  });
   static FileSystemWatcher fromJson(Map<String, Object?> json) {
     final globPatternJson = json['globPattern'];
     final globPattern = globPatternJson as String;
     final kindJson = json['kind'];
     final kind = kindJson != null ? WatchKind.fromJson(kindJson as int) : null;
-    return FileSystemWatcher(globPattern: globPattern, kind: kind);
+    return FileSystemWatcher(
+      globPattern: globPattern,
+      kind: kind,
+    );
   }
 
-  /// The  glob pattern to watch.
+  /// The glob pattern to watch.
   ///
   /// Glob patterns can have the following syntax:
   /// - `*` to match one or more characters in a path segment
   /// - `?` to match on one character in a path segment
   /// - `**` to match any number of path segments, including none
-  /// - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript
-  ///   and JavaScript files)
+  /// - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
+  ///   matches all TypeScript and JavaScript files)
   /// - `[]` to declare a range of characters to match in a path segment
   ///   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
   /// - `[!...]` to negate a range of characters to match in a path segment
@@ -14494,7 +15506,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(globPattern, kind);
+  int get hashCode => Object.hash(
+        globPattern,
+        kind,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -14504,15 +15519,18 @@
 /// than zero and smaller than the number of lines in the document. Clients are
 /// free to ignore invalid ranges.
 class FoldingRange implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FoldingRange.canParse, FoldingRange.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FoldingRange.canParse,
+    FoldingRange.fromJson,
+  );
 
-  FoldingRange(
-      {required this.startLine,
-      this.startCharacter,
-      required this.endLine,
-      this.endCharacter,
-      this.kind});
+  FoldingRange({
+    required this.startLine,
+    this.startCharacter,
+    required this.endLine,
+    this.endCharacter,
+    this.kind,
+  });
   static FoldingRange fromJson(Map<String, Object?> json) {
     final startLineJson = json['startLine'];
     final startLine = startLineJson as int;
@@ -14526,11 +15544,12 @@
     final kind =
         kindJson != null ? FoldingRangeKind.fromJson(kindJson as String) : null;
     return FoldingRange(
-        startLine: startLine,
-        startCharacter: startCharacter,
-        endLine: endLine,
-        endCharacter: endCharacter,
-        kind: kind);
+      startLine: startLine,
+      startCharacter: startCharacter,
+      endLine: endLine,
+      endCharacter: endCharacter,
+      kind: kind,
+    );
   }
 
   /// The zero-based character offset before the folded range ends. If not
@@ -14662,8 +15681,13 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(startLine, startCharacter, endLine, endCharacter, kind);
+  int get hashCode => Object.hash(
+        startLine,
+        startCharacter,
+        endLine,
+        endCharacter,
+        kind,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -14671,11 +15695,15 @@
 
 class FoldingRangeClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FoldingRangeClientCapabilities.canParse,
-      FoldingRangeClientCapabilities.fromJson);
+    FoldingRangeClientCapabilities.canParse,
+    FoldingRangeClientCapabilities.fromJson,
+  );
 
-  FoldingRangeClientCapabilities(
-      {this.dynamicRegistration, this.rangeLimit, this.lineFoldingOnly});
+  FoldingRangeClientCapabilities({
+    this.dynamicRegistration,
+    this.rangeLimit,
+    this.lineFoldingOnly,
+  });
   static FoldingRangeClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -14684,9 +15712,10 @@
     final lineFoldingOnlyJson = json['lineFoldingOnly'];
     final lineFoldingOnly = lineFoldingOnlyJson as bool?;
     return FoldingRangeClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        rangeLimit: rangeLimit,
-        lineFoldingOnly: lineFoldingOnly);
+      dynamicRegistration: dynamicRegistration,
+      rangeLimit: rangeLimit,
+      lineFoldingOnly: lineFoldingOnly,
+    );
   }
 
   /// Whether implementation supports dynamic registration for folding range
@@ -14771,8 +15800,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(dynamicRegistration, rangeLimit, lineFoldingOnly);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        rangeLimit,
+        lineFoldingOnly,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -14811,16 +15843,22 @@
 
 class FoldingRangeOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FoldingRangeOptions.canParse, FoldingRangeOptions.fromJson);
+    FoldingRangeOptions.canParse,
+    FoldingRangeOptions.fromJson,
+  );
 
-  FoldingRangeOptions({this.workDoneProgress});
+  FoldingRangeOptions({
+    this.workDoneProgress,
+  });
   static FoldingRangeOptions fromJson(Map<String, Object?> json) {
     if (FoldingRangeRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return FoldingRangeRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return FoldingRangeOptions(workDoneProgress: workDoneProgress);
+    return FoldingRangeOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -14870,13 +15908,16 @@
 
 class FoldingRangeParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FoldingRangeParams.canParse, FoldingRangeParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FoldingRangeParams.canParse,
+    FoldingRangeParams.fromJson,
+  );
 
-  FoldingRangeParams(
-      {required this.textDocument,
-      this.workDoneToken,
-      this.partialResultToken});
+  FoldingRangeParams({
+    required this.textDocument,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static FoldingRangeParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -14898,9 +15939,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return FoldingRangeParams(
-        textDocument: textDocument,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -14987,8 +16029,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -15001,11 +16046,15 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      FoldingRangeRegistrationOptions.canParse,
-      FoldingRangeRegistrationOptions.fromJson);
+    FoldingRangeRegistrationOptions.canParse,
+    FoldingRangeRegistrationOptions.fromJson,
+  );
 
-  FoldingRangeRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress, this.id});
+  FoldingRangeRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+    this.id,
+  });
   static FoldingRangeRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -15016,9 +16065,10 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return FoldingRangeRegistrationOptions(
-        documentSelector: documentSelector,
-        workDoneProgress: workDoneProgress,
-        id: id);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -15102,8 +16152,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress, id);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -15111,15 +16164,18 @@
 
 /// Value-object describing what options formatting should use.
 class FormattingOptions implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(FormattingOptions.canParse, FormattingOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    FormattingOptions.canParse,
+    FormattingOptions.fromJson,
+  );
 
-  FormattingOptions(
-      {required this.tabSize,
-      required this.insertSpaces,
-      this.trimTrailingWhitespace,
-      this.insertFinalNewline,
-      this.trimFinalNewlines});
+  FormattingOptions({
+    required this.tabSize,
+    required this.insertSpaces,
+    this.trimTrailingWhitespace,
+    this.insertFinalNewline,
+    this.trimFinalNewlines,
+  });
   static FormattingOptions fromJson(Map<String, Object?> json) {
     final tabSizeJson = json['tabSize'];
     final tabSize = tabSizeJson as int;
@@ -15132,11 +16188,12 @@
     final trimFinalNewlinesJson = json['trimFinalNewlines'];
     final trimFinalNewlines = trimFinalNewlinesJson as bool?;
     return FormattingOptions(
-        tabSize: tabSize,
-        insertSpaces: insertSpaces,
-        trimTrailingWhitespace: trimTrailingWhitespace,
-        insertFinalNewline: insertFinalNewline,
-        trimFinalNewlines: trimFinalNewlines);
+      tabSize: tabSize,
+      insertSpaces: insertSpaces,
+      trimTrailingWhitespace: trimTrailingWhitespace,
+      insertFinalNewline: insertFinalNewline,
+      trimFinalNewlines: trimFinalNewlines,
+    );
   }
 
   /// Insert a newline character at the end of the file if one does not exist.
@@ -15263,8 +16320,13 @@
   }
 
   @override
-  int get hashCode => Object.hash(tabSize, insertSpaces, trimTrailingWhitespace,
-      insertFinalNewline, trimFinalNewlines);
+  int get hashCode => Object.hash(
+        tabSize,
+        insertSpaces,
+        trimTrailingWhitespace,
+        insertFinalNewline,
+        trimFinalNewlines,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -15272,9 +16334,15 @@
 
 /// The result of a hover request.
 class Hover implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Hover.canParse, Hover.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Hover.canParse,
+    Hover.fromJson,
+  );
 
-  Hover({required this.contents, this.range});
+  Hover({
+    required this.contents,
+    this.range,
+  });
   static Hover fromJson(Map<String, Object?> json) {
     final contentsJson = json['contents'];
     final contents = contentsJson is String
@@ -15287,7 +16355,10 @@
     final range = rangeJson != null
         ? Range.fromJson(rangeJson as Map<String, Object?>)
         : null;
-    return Hover(contents: contents, range: range);
+    return Hover(
+      contents: contents,
+      range: range,
+    );
   }
 
   /// The hover's content
@@ -15354,7 +16425,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(contents, range);
+  int get hashCode => Object.hash(
+        contents,
+        range,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -15362,9 +16436,14 @@
 
 class HoverClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      HoverClientCapabilities.canParse, HoverClientCapabilities.fromJson);
+    HoverClientCapabilities.canParse,
+    HoverClientCapabilities.fromJson,
+  );
 
-  HoverClientCapabilities({this.dynamicRegistration, this.contentFormat});
+  HoverClientCapabilities({
+    this.dynamicRegistration,
+    this.contentFormat,
+  });
   static HoverClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -15373,12 +16452,14 @@
         ?.map((item) => MarkupKind.fromJson(item as String))
         .toList();
     return HoverClientCapabilities(
-        dynamicRegistration: dynamicRegistration, contentFormat: contentFormat);
+      dynamicRegistration: dynamicRegistration,
+      contentFormat: contentFormat,
+    );
   }
 
-  /// Client supports the follow content formats if the content property refers
-  /// to a `literal of type MarkupContent`. The order describes the preferred
-  /// format of the client.
+  /// Client supports the following content formats if the content property
+  /// refers to a `literal of type MarkupContent`. The order describes the
+  /// preferred format of the client.
   final List<MarkupKind>? contentFormat;
 
   /// Whether hover supports dynamic registration.
@@ -15441,25 +16522,33 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(dynamicRegistration, lspHashCode(contentFormat));
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        lspHashCode(contentFormat),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class HoverOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(HoverOptions.canParse, HoverOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    HoverOptions.canParse,
+    HoverOptions.fromJson,
+  );
 
-  HoverOptions({this.workDoneProgress});
+  HoverOptions({
+    this.workDoneProgress,
+  });
   static HoverOptions fromJson(Map<String, Object?> json) {
     if (HoverRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return HoverRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return HoverOptions(workDoneProgress: workDoneProgress);
+    return HoverOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -15508,11 +16597,16 @@
 
 class HoverParams
     implements TextDocumentPositionParams, WorkDoneProgressParams, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(HoverParams.canParse, HoverParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    HoverParams.canParse,
+    HoverParams.fromJson,
+  );
 
-  HoverParams(
-      {required this.textDocument, required this.position, this.workDoneToken});
+  HoverParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+  });
   static HoverParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -15528,9 +16622,10 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return HoverParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The position inside the text document.
@@ -15620,7 +16715,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, position, workDoneToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -15629,9 +16728,14 @@
 class HoverRegistrationOptions
     implements TextDocumentRegistrationOptions, HoverOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      HoverRegistrationOptions.canParse, HoverRegistrationOptions.fromJson);
+    HoverRegistrationOptions.canParse,
+    HoverRegistrationOptions.fromJson,
+  );
 
-  HoverRegistrationOptions({this.documentSelector, this.workDoneProgress});
+  HoverRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+  });
   static HoverRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -15640,7 +16744,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return HoverRegistrationOptions(
-        documentSelector: documentSelector, workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -15706,8 +16812,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -15715,18 +16823,23 @@
 
 class ImplementationClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ImplementationClientCapabilities.canParse,
-      ImplementationClientCapabilities.fromJson);
+    ImplementationClientCapabilities.canParse,
+    ImplementationClientCapabilities.fromJson,
+  );
 
-  ImplementationClientCapabilities(
-      {this.dynamicRegistration, this.linkSupport});
+  ImplementationClientCapabilities({
+    this.dynamicRegistration,
+    this.linkSupport,
+  });
   static ImplementationClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     final linkSupportJson = json['linkSupport'];
     final linkSupport = linkSupportJson as bool?;
     return ImplementationClientCapabilities(
-        dynamicRegistration: dynamicRegistration, linkSupport: linkSupport);
+      dynamicRegistration: dynamicRegistration,
+      linkSupport: linkSupport,
+    );
   }
 
   /// Whether implementation supports dynamic registration. If this is set to
@@ -15790,7 +16903,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, linkSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        linkSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -15798,16 +16914,22 @@
 
 class ImplementationOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ImplementationOptions.canParse, ImplementationOptions.fromJson);
+    ImplementationOptions.canParse,
+    ImplementationOptions.fromJson,
+  );
 
-  ImplementationOptions({this.workDoneProgress});
+  ImplementationOptions({
+    this.workDoneProgress,
+  });
   static ImplementationOptions fromJson(Map<String, Object?> json) {
     if (ImplementationRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return ImplementationRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return ImplementationOptions(workDoneProgress: workDoneProgress);
+    return ImplementationOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -15862,13 +16984,16 @@
         PartialResultParams,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ImplementationParams.canParse, ImplementationParams.fromJson);
+    ImplementationParams.canParse,
+    ImplementationParams.fromJson,
+  );
 
-  ImplementationParams(
-      {required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  ImplementationParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static ImplementationParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -15892,10 +17017,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return ImplementationParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -16005,8 +17131,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, position, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -16019,11 +17149,15 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ImplementationRegistrationOptions.canParse,
-      ImplementationRegistrationOptions.fromJson);
+    ImplementationRegistrationOptions.canParse,
+    ImplementationRegistrationOptions.fromJson,
+  );
 
-  ImplementationRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress, this.id});
+  ImplementationRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+    this.id,
+  });
   static ImplementationRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -16034,9 +17168,10 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return ImplementationRegistrationOptions(
-        documentSelector: documentSelector,
-        workDoneProgress: workDoneProgress,
-        id: id);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -16120,28 +17255,34 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress, id);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class InitializeParams implements WorkDoneProgressParams, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(InitializeParams.canParse, InitializeParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    InitializeParams.canParse,
+    InitializeParams.fromJson,
+  );
 
-  InitializeParams(
-      {this.processId,
-      this.clientInfo,
-      this.locale,
-      this.rootPath,
-      this.rootUri,
-      this.initializationOptions,
-      required this.capabilities,
-      this.trace,
-      this.workspaceFolders,
-      this.workDoneToken});
+  InitializeParams({
+    this.processId,
+    this.clientInfo,
+    this.locale,
+    this.rootPath,
+    this.rootUri,
+    this.initializationOptions,
+    required this.capabilities,
+    this.trace,
+    this.workspaceFolders,
+    this.workDoneToken,
+  });
   static InitializeParams fromJson(Map<String, Object?> json) {
     final processIdJson = json['processId'];
     final processId = processIdJson as int?;
@@ -16162,9 +17303,9 @@
     final capabilities =
         ClientCapabilities.fromJson(capabilitiesJson as Map<String, Object?>);
     final traceJson = json['trace'];
-    final trace = const {null, 'off', 'message', 'verbose'}.contains(traceJson)
+    final trace = const {null, 'off', 'messages', 'verbose'}.contains(traceJson)
         ? traceJson as String?
-        : throw '''$traceJson was not one of (null, 'off', 'message', 'verbose')''';
+        : throw '''$traceJson was not one of (null, 'off', 'messages', 'verbose')''';
     final workspaceFoldersJson = json['workspaceFolders'];
     final workspaceFolders = (workspaceFoldersJson as List<Object?>?)
         ?.map((item) => WorkspaceFolder.fromJson(item as Map<String, Object?>))
@@ -16178,16 +17319,17 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return InitializeParams(
-        processId: processId,
-        clientInfo: clientInfo,
-        locale: locale,
-        rootPath: rootPath,
-        rootUri: rootUri,
-        initializationOptions: initializationOptions,
-        capabilities: capabilities,
-        trace: trace,
-        workspaceFolders: workspaceFolders,
-        workDoneToken: workDoneToken);
+      processId: processId,
+      clientInfo: clientInfo,
+      locale: locale,
+      rootPath: rootPath,
+      rootUri: rootUri,
+      initializationOptions: initializationOptions,
+      capabilities: capabilities,
+      trace: trace,
+      workspaceFolders: workspaceFolders,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The capabilities provided by the client (editor or tool)
@@ -16349,9 +17491,9 @@
       try {
         final trace = obj['trace'];
         if (trace != null &&
-            !((trace == 'off' || trace == 'message' || trace == 'verbose'))) {
+            !((trace == 'off' || trace == 'messages' || trace == 'verbose'))) {
           reporter.reportError(
-              'must be one of the literals \'off\', \'message\', \'verbose\'');
+              'must be one of the literals \'off\', \'messages\', \'verbose\'');
           return false;
         }
       } finally {
@@ -16409,16 +17551,17 @@
 
   @override
   int get hashCode => Object.hash(
-      processId,
-      clientInfo,
-      locale,
-      rootPath,
-      rootUri,
-      initializationOptions,
-      capabilities,
-      trace,
-      lspHashCode(workspaceFolders),
-      workDoneToken);
+        processId,
+        clientInfo,
+        locale,
+        rootPath,
+        rootUri,
+        initializationOptions,
+        capabilities,
+        trace,
+        lspHashCode(workspaceFolders),
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -16426,15 +17569,23 @@
 
 class InitializeParamsClientInfo implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      InitializeParamsClientInfo.canParse, InitializeParamsClientInfo.fromJson);
+    InitializeParamsClientInfo.canParse,
+    InitializeParamsClientInfo.fromJson,
+  );
 
-  InitializeParamsClientInfo({required this.name, this.version});
+  InitializeParamsClientInfo({
+    required this.name,
+    this.version,
+  });
   static InitializeParamsClientInfo fromJson(Map<String, Object?> json) {
     final nameJson = json['name'];
     final name = nameJson as String;
     final versionJson = json['version'];
     final version = versionJson as String?;
-    return InitializeParamsClientInfo(name: name, version: version);
+    return InitializeParamsClientInfo(
+      name: name,
+      version: version,
+    );
   }
 
   /// The name of the client as defined by the client.
@@ -16499,17 +17650,25 @@
   }
 
   @override
-  int get hashCode => Object.hash(name, version);
+  int get hashCode => Object.hash(
+        name,
+        version,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class InitializeResult implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(InitializeResult.canParse, InitializeResult.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    InitializeResult.canParse,
+    InitializeResult.fromJson,
+  );
 
-  InitializeResult({required this.capabilities, this.serverInfo});
+  InitializeResult({
+    required this.capabilities,
+    this.serverInfo,
+  });
   static InitializeResult fromJson(Map<String, Object?> json) {
     final capabilitiesJson = json['capabilities'];
     final capabilities =
@@ -16519,7 +17678,10 @@
         ? InitializeResultServerInfo.fromJson(
             serverInfoJson as Map<String, Object?>)
         : null;
-    return InitializeResult(capabilities: capabilities, serverInfo: serverInfo);
+    return InitializeResult(
+      capabilities: capabilities,
+      serverInfo: serverInfo,
+    );
   }
 
   /// The capabilities the language server provides.
@@ -16587,7 +17749,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(capabilities, serverInfo);
+  int get hashCode => Object.hash(
+        capabilities,
+        serverInfo,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -16595,15 +17760,23 @@
 
 class InitializeResultServerInfo implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      InitializeResultServerInfo.canParse, InitializeResultServerInfo.fromJson);
+    InitializeResultServerInfo.canParse,
+    InitializeResultServerInfo.fromJson,
+  );
 
-  InitializeResultServerInfo({required this.name, this.version});
+  InitializeResultServerInfo({
+    required this.name,
+    this.version,
+  });
   static InitializeResultServerInfo fromJson(Map<String, Object?> json) {
     final nameJson = json['name'];
     final name = nameJson as String;
     final versionJson = json['version'];
     final version = versionJson as String?;
-    return InitializeResultServerInfo(name: name, version: version);
+    return InitializeResultServerInfo(
+      name: name,
+      version: version,
+    );
   }
 
   /// The name of the server as defined by the server.
@@ -16668,15 +17841,20 @@
   }
 
   @override
-  int get hashCode => Object.hash(name, version);
+  int get hashCode => Object.hash(
+        name,
+        version,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class InitializedParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(InitializedParams.canParse, InitializedParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    InitializedParams.canParse,
+    InitializedParams.fromJson,
+  );
 
   static InitializedParams fromJson(Map<String, Object?> json) {
     return InitializedParams();
@@ -16714,11 +17892,16 @@
 /// A special text edit to provide an insert and a replace operation.
 ///  @since 3.16.0
 class InsertReplaceEdit implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(InsertReplaceEdit.canParse, InsertReplaceEdit.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    InsertReplaceEdit.canParse,
+    InsertReplaceEdit.fromJson,
+  );
 
-  InsertReplaceEdit(
-      {required this.newText, required this.insert, required this.replace});
+  InsertReplaceEdit({
+    required this.newText,
+    required this.insert,
+    required this.replace,
+  });
   static InsertReplaceEdit fromJson(Map<String, Object?> json) {
     final newTextJson = json['newText'];
     final newText = newTextJson as String;
@@ -16727,7 +17910,10 @@
     final replaceJson = json['replace'];
     final replace = Range.fromJson(replaceJson as Map<String, Object?>);
     return InsertReplaceEdit(
-        newText: newText, insert: insert, replace: replace);
+      newText: newText,
+      insert: insert,
+      replace: replace,
+    );
   }
 
   /// The range if the insert is requested
@@ -16822,7 +18008,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(newText, insert, replace);
+  int get hashCode => Object.hash(
+        newText,
+        insert,
+        replace,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -16906,16 +18096,20 @@
 
 class LinkedEditingRangeClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      LinkedEditingRangeClientCapabilities.canParse,
-      LinkedEditingRangeClientCapabilities.fromJson);
+    LinkedEditingRangeClientCapabilities.canParse,
+    LinkedEditingRangeClientCapabilities.fromJson,
+  );
 
-  LinkedEditingRangeClientCapabilities({this.dynamicRegistration});
+  LinkedEditingRangeClientCapabilities({
+    this.dynamicRegistration,
+  });
   static LinkedEditingRangeClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return LinkedEditingRangeClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether implementation supports dynamic registration. If this is set to
@@ -16970,9 +18164,13 @@
 
 class LinkedEditingRangeOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      LinkedEditingRangeOptions.canParse, LinkedEditingRangeOptions.fromJson);
+    LinkedEditingRangeOptions.canParse,
+    LinkedEditingRangeOptions.fromJson,
+  );
 
-  LinkedEditingRangeOptions({this.workDoneProgress});
+  LinkedEditingRangeOptions({
+    this.workDoneProgress,
+  });
   static LinkedEditingRangeOptions fromJson(Map<String, Object?> json) {
     if (LinkedEditingRangeRegistrationOptions.canParse(
         json, nullLspJsonReporter)) {
@@ -16980,7 +18178,9 @@
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return LinkedEditingRangeOptions(workDoneProgress: workDoneProgress);
+    return LinkedEditingRangeOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -17031,10 +18231,15 @@
 class LinkedEditingRangeParams
     implements TextDocumentPositionParams, WorkDoneProgressParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      LinkedEditingRangeParams.canParse, LinkedEditingRangeParams.fromJson);
+    LinkedEditingRangeParams.canParse,
+    LinkedEditingRangeParams.fromJson,
+  );
 
-  LinkedEditingRangeParams(
-      {required this.textDocument, required this.position, this.workDoneToken});
+  LinkedEditingRangeParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+  });
   static LinkedEditingRangeParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -17050,9 +18255,10 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return LinkedEditingRangeParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The position inside the text document.
@@ -17143,7 +18349,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, position, workDoneToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -17156,11 +18366,15 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      LinkedEditingRangeRegistrationOptions.canParse,
-      LinkedEditingRangeRegistrationOptions.fromJson);
+    LinkedEditingRangeRegistrationOptions.canParse,
+    LinkedEditingRangeRegistrationOptions.fromJson,
+  );
 
-  LinkedEditingRangeRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress, this.id});
+  LinkedEditingRangeRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+    this.id,
+  });
   static LinkedEditingRangeRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
@@ -17172,9 +18386,10 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return LinkedEditingRangeRegistrationOptions(
-        documentSelector: documentSelector,
-        workDoneProgress: workDoneProgress,
-        id: id);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -17259,8 +18474,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress, id);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -17268,9 +18486,14 @@
 
 class LinkedEditingRanges implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      LinkedEditingRanges.canParse, LinkedEditingRanges.fromJson);
+    LinkedEditingRanges.canParse,
+    LinkedEditingRanges.fromJson,
+  );
 
-  LinkedEditingRanges({required this.ranges, this.wordPattern});
+  LinkedEditingRanges({
+    required this.ranges,
+    this.wordPattern,
+  });
   static LinkedEditingRanges fromJson(Map<String, Object?> json) {
     final rangesJson = json['ranges'];
     final ranges = (rangesJson as List<Object?>)
@@ -17278,7 +18501,10 @@
         .toList();
     final wordPatternJson = json['wordPattern'];
     final wordPattern = wordPatternJson as String?;
-    return LinkedEditingRanges(ranges: ranges, wordPattern: wordPattern);
+    return LinkedEditingRanges(
+      ranges: ranges,
+      wordPattern: wordPattern,
+    );
   }
 
   /// A list of ranges that can be renamed together. The ranges must have
@@ -17350,23 +18576,34 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(ranges), wordPattern);
+  int get hashCode => Object.hash(
+        lspHashCode(ranges),
+        wordPattern,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class Location implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(Location.canParse, Location.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Location.canParse,
+    Location.fromJson,
+  );
 
-  Location({required this.uri, required this.range});
+  Location({
+    required this.uri,
+    required this.range,
+  });
   static Location fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
-    return Location(uri: uri, range: range);
+    return Location(
+      uri: uri,
+      range: range,
+    );
   }
 
   final Range range;
@@ -17433,21 +18670,27 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, range);
+  int get hashCode => Object.hash(
+        uri,
+        range,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class LocationLink implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(LocationLink.canParse, LocationLink.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    LocationLink.canParse,
+    LocationLink.fromJson,
+  );
 
-  LocationLink(
-      {this.originSelectionRange,
-      required this.targetUri,
-      required this.targetRange,
-      required this.targetSelectionRange});
+  LocationLink({
+    this.originSelectionRange,
+    required this.targetUri,
+    required this.targetRange,
+    required this.targetSelectionRange,
+  });
   static LocationLink fromJson(Map<String, Object?> json) {
     final originSelectionRangeJson = json['originSelectionRange'];
     final originSelectionRange = originSelectionRangeJson != null
@@ -17461,10 +18704,11 @@
     final targetSelectionRange =
         Range.fromJson(targetSelectionRangeJson as Map<String, Object?>);
     return LocationLink(
-        originSelectionRange: originSelectionRange,
-        targetUri: targetUri,
-        targetRange: targetRange,
-        targetSelectionRange: targetSelectionRange);
+      originSelectionRange: originSelectionRange,
+      targetUri: targetUri,
+      targetRange: targetRange,
+      targetSelectionRange: targetSelectionRange,
+    );
   }
 
   /// Span of the origin of this link.
@@ -17480,7 +18724,7 @@
   final Range targetRange;
 
   /// The range that should be selected and revealed when this link is being
-  /// followed, e.g the name of a function. Must be contained by the
+  /// followed, e.g the name of a function. Must be contained by the the
   /// `targetRange`. See also `DocumentSymbol#range`
   final Range targetSelectionRange;
 
@@ -17586,23 +18830,35 @@
 
   @override
   int get hashCode => Object.hash(
-      originSelectionRange, targetUri, targetRange, targetSelectionRange);
+        originSelectionRange,
+        targetUri,
+        targetRange,
+        targetSelectionRange,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class LogMessageParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(LogMessageParams.canParse, LogMessageParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    LogMessageParams.canParse,
+    LogMessageParams.fromJson,
+  );
 
-  LogMessageParams({required this.type, required this.message});
+  LogMessageParams({
+    required this.type,
+    required this.message,
+  });
   static LogMessageParams fromJson(Map<String, Object?> json) {
     final typeJson = json['type'];
     final type = MessageType.fromJson(typeJson as int);
     final messageJson = json['message'];
     final message = messageJson as String;
-    return LogMessageParams(type: type, message: message);
+    return LogMessageParams(
+      type: type,
+      message: message,
+    );
   }
 
   /// The actual message
@@ -17672,23 +18928,34 @@
   }
 
   @override
-  int get hashCode => Object.hash(type, message);
+  int get hashCode => Object.hash(
+        type,
+        message,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class LogTraceParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(LogTraceParams.canParse, LogTraceParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    LogTraceParams.canParse,
+    LogTraceParams.fromJson,
+  );
 
-  LogTraceParams({required this.message, this.verbose});
+  LogTraceParams({
+    required this.message,
+    this.verbose,
+  });
   static LogTraceParams fromJson(Map<String, Object?> json) {
     final messageJson = json['message'];
     final message = messageJson as String;
     final verboseJson = json['verbose'];
     final verbose = verboseJson as String?;
-    return LogTraceParams(message: message, verbose: verbose);
+    return LogTraceParams(
+      message: message,
+      verbose: verbose,
+    );
   }
 
   /// The message to be logged.
@@ -17753,7 +19020,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(message, verbose);
+  int get hashCode => Object.hash(
+        message,
+        verbose,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -17763,15 +19033,23 @@
 ///  @since 3.16.0
 class MarkdownClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      MarkdownClientCapabilities.canParse, MarkdownClientCapabilities.fromJson);
+    MarkdownClientCapabilities.canParse,
+    MarkdownClientCapabilities.fromJson,
+  );
 
-  MarkdownClientCapabilities({required this.parser, this.version});
+  MarkdownClientCapabilities({
+    required this.parser,
+    this.version,
+  });
   static MarkdownClientCapabilities fromJson(Map<String, Object?> json) {
     final parserJson = json['parser'];
     final parser = parserJson as String;
     final versionJson = json['version'];
     final version = versionJson as String?;
-    return MarkdownClientCapabilities(parser: parser, version: version);
+    return MarkdownClientCapabilities(
+      parser: parser,
+      version: version,
+    );
   }
 
   /// The name of the parser.
@@ -17836,7 +19114,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(parser, version);
+  int get hashCode => Object.hash(
+        parser,
+        version,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -17851,8 +19132,7 @@
 ///
 /// Here is an example how such a string can be constructed using JavaScript /
 /// TypeScript: ```typescript let markdown: MarkdownContent = {
-///
-/// kind: MarkupKind.Markdown,
+/// 	kind: MarkupKind.Markdown,
 /// 	value: [
 /// 		'# Header',
 /// 		'Some text',
@@ -17864,16 +19144,24 @@
 /// *Please Note* that clients might sanitize the return markdown. A client
 /// could decide to remove HTML from the markdown to avoid script execution.
 class MarkupContent implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(MarkupContent.canParse, MarkupContent.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    MarkupContent.canParse,
+    MarkupContent.fromJson,
+  );
 
-  MarkupContent({required this.kind, required this.value});
+  MarkupContent({
+    required this.kind,
+    required this.value,
+  });
   static MarkupContent fromJson(Map<String, Object?> json) {
     final kindJson = json['kind'];
     final kind = MarkupKind.fromJson(kindJson as String);
     final valueJson = json['value'];
     final value = valueJson as String;
-    return MarkupContent(kind: kind, value: value);
+    return MarkupContent(
+      kind: kind,
+      value: value,
+    );
   }
 
   /// The type of the Markup
@@ -17943,7 +19231,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(kind, value);
+  int get hashCode => Object.hash(
+        kind,
+        value,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -17987,9 +19278,15 @@
 }
 
 class Message implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Message.canParse, Message.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Message.canParse,
+    Message.fromJson,
+  );
 
-  Message({required this.jsonrpc, this.clientRequestTime});
+  Message({
+    required this.jsonrpc,
+    this.clientRequestTime,
+  });
   static Message fromJson(Map<String, Object?> json) {
     if (RequestMessage.canParse(json, nullLspJsonReporter)) {
       return RequestMessage.fromJson(json);
@@ -18004,7 +19301,10 @@
     final jsonrpc = jsonrpcJson as String;
     final clientRequestTimeJson = json['clientRequestTime'];
     final clientRequestTime = clientRequestTimeJson as int?;
-    return Message(jsonrpc: jsonrpc, clientRequestTime: clientRequestTime);
+    return Message(
+      jsonrpc: jsonrpc,
+      clientRequestTime: clientRequestTime,
+    );
   }
 
   final int? clientRequestTime;
@@ -18067,21 +19367,30 @@
   }
 
   @override
-  int get hashCode => Object.hash(jsonrpc, clientRequestTime);
+  int get hashCode => Object.hash(
+        jsonrpc,
+        clientRequestTime,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class MessageActionItem implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(MessageActionItem.canParse, MessageActionItem.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    MessageActionItem.canParse,
+    MessageActionItem.fromJson,
+  );
 
-  MessageActionItem({required this.title});
+  MessageActionItem({
+    required this.title,
+  });
   static MessageActionItem fromJson(Map<String, Object?> json) {
     final titleJson = json['title'];
     final title = titleJson as String;
-    return MessageActionItem(title: title);
+    return MessageActionItem(
+      title: title,
+    );
   }
 
   /// A short title like 'Retry', 'Open Log' etc.
@@ -18443,13 +19752,17 @@
 
 /// Moniker definition to match LSIF 0.5 moniker definition.
 class Moniker implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Moniker.canParse, Moniker.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Moniker.canParse,
+    Moniker.fromJson,
+  );
 
-  Moniker(
-      {required this.scheme,
-      required this.identifier,
-      required this.unique,
-      this.kind});
+  Moniker({
+    required this.scheme,
+    required this.identifier,
+    required this.unique,
+    this.kind,
+  });
   static Moniker fromJson(Map<String, Object?> json) {
     final schemeJson = json['scheme'];
     final scheme = schemeJson as String;
@@ -18461,7 +19774,11 @@
     final kind =
         kindJson != null ? MonikerKind.fromJson(kindJson as String) : null;
     return Moniker(
-        scheme: scheme, identifier: identifier, unique: unique, kind: kind);
+      scheme: scheme,
+      identifier: identifier,
+      unique: unique,
+      kind: kind,
+    );
   }
 
   /// The identifier of the moniker. The value is opaque in LSIF however schema
@@ -18574,7 +19891,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(scheme, identifier, unique, kind);
+  int get hashCode => Object.hash(
+        scheme,
+        identifier,
+        unique,
+        kind,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -18582,13 +19904,19 @@
 
 class MonikerClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      MonikerClientCapabilities.canParse, MonikerClientCapabilities.fromJson);
+    MonikerClientCapabilities.canParse,
+    MonikerClientCapabilities.fromJson,
+  );
 
-  MonikerClientCapabilities({this.dynamicRegistration});
+  MonikerClientCapabilities({
+    this.dynamicRegistration,
+  });
   static MonikerClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
-    return MonikerClientCapabilities(dynamicRegistration: dynamicRegistration);
+    return MonikerClientCapabilities(
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether implementation supports dynamic registration. If this is set to
@@ -18673,17 +20001,23 @@
 }
 
 class MonikerOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(MonikerOptions.canParse, MonikerOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    MonikerOptions.canParse,
+    MonikerOptions.fromJson,
+  );
 
-  MonikerOptions({this.workDoneProgress});
+  MonikerOptions({
+    this.workDoneProgress,
+  });
   static MonikerOptions fromJson(Map<String, Object?> json) {
     if (MonikerRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return MonikerRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return MonikerOptions(workDoneProgress: workDoneProgress);
+    return MonikerOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -18736,14 +20070,17 @@
         WorkDoneProgressParams,
         PartialResultParams,
         ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(MonikerParams.canParse, MonikerParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    MonikerParams.canParse,
+    MonikerParams.fromJson,
+  );
 
-  MonikerParams(
-      {required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  MonikerParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static MonikerParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -18767,10 +20104,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return MonikerParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -18879,8 +20217,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, position, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -18889,9 +20231,14 @@
 class MonikerRegistrationOptions
     implements TextDocumentRegistrationOptions, MonikerOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      MonikerRegistrationOptions.canParse, MonikerRegistrationOptions.fromJson);
+    MonikerRegistrationOptions.canParse,
+    MonikerRegistrationOptions.fromJson,
+  );
 
-  MonikerRegistrationOptions({this.documentSelector, this.workDoneProgress});
+  MonikerRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+  });
   static MonikerRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -18900,7 +20247,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return MonikerRegistrationOptions(
-        documentSelector: documentSelector, workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -18966,8 +20315,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -18975,13 +20326,16 @@
 
 class NotificationMessage implements Message, IncomingMessage, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      NotificationMessage.canParse, NotificationMessage.fromJson);
+    NotificationMessage.canParse,
+    NotificationMessage.fromJson,
+  );
 
-  NotificationMessage(
-      {required this.method,
-      this.params,
-      required this.jsonrpc,
-      this.clientRequestTime});
+  NotificationMessage({
+    required this.method,
+    this.params,
+    required this.jsonrpc,
+    this.clientRequestTime,
+  });
   static NotificationMessage fromJson(Map<String, Object?> json) {
     final methodJson = json['method'];
     final method = Method.fromJson(methodJson as String);
@@ -18992,10 +20346,11 @@
     final clientRequestTimeJson = json['clientRequestTime'];
     final clientRequestTime = clientRequestTimeJson as int?;
     return NotificationMessage(
-        method: method,
-        params: params,
-        jsonrpc: jsonrpc,
-        clientRequestTime: clientRequestTime);
+      method: method,
+      params: params,
+      jsonrpc: jsonrpc,
+      clientRequestTime: clientRequestTime,
+    );
   }
 
   final int? clientRequestTime;
@@ -19089,7 +20444,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(method, params, jsonrpc, clientRequestTime);
+  int get hashCode => Object.hash(
+        method,
+        params,
+        jsonrpc,
+        clientRequestTime,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -19098,17 +20458,24 @@
 class OptionalVersionedTextDocumentIdentifier
     implements TextDocumentIdentifier, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      OptionalVersionedTextDocumentIdentifier.canParse,
-      OptionalVersionedTextDocumentIdentifier.fromJson);
+    OptionalVersionedTextDocumentIdentifier.canParse,
+    OptionalVersionedTextDocumentIdentifier.fromJson,
+  );
 
-  OptionalVersionedTextDocumentIdentifier({this.version, required this.uri});
+  OptionalVersionedTextDocumentIdentifier({
+    this.version,
+    required this.uri,
+  });
   static OptionalVersionedTextDocumentIdentifier fromJson(
       Map<String, Object?> json) {
     final versionJson = json['version'];
     final version = versionJson as int?;
     final uriJson = json['uri'];
     final uri = uriJson as String;
-    return OptionalVersionedTextDocumentIdentifier(version: version, uri: uri);
+    return OptionalVersionedTextDocumentIdentifier(
+      version: version,
+      uri: uri,
+    );
   }
 
   /// The text document's URI.
@@ -19184,7 +20551,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(version, uri);
+  int get hashCode => Object.hash(
+        version,
+        uri,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -19194,9 +20564,14 @@
 /// and a doc-comment.
 class ParameterInformation implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ParameterInformation.canParse, ParameterInformation.fromJson);
+    ParameterInformation.canParse,
+    ParameterInformation.fromJson,
+  );
 
-  ParameterInformation({required this.label, this.documentation});
+  ParameterInformation({
+    required this.label,
+    this.documentation,
+  });
   static ParameterInformation fromJson(Map<String, Object?> json) {
     final labelJson = json['label'];
     final label = labelJson as String;
@@ -19209,7 +20584,10 @@
                 ? Either2<String, MarkupContent>.t2(MarkupContent.fromJson(
                     documentationJson as Map<String, Object?>))
                 : (throw '''$documentationJson was not one of (String, MarkupContent)''')));
-    return ParameterInformation(label: label, documentation: documentation);
+    return ParameterInformation(
+      label: label,
+      documentation: documentation,
+    );
   }
 
   /// The human-readable doc-comment of this parameter. Will be shown in the UI
@@ -19289,7 +20667,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(label, documentation);
+  int get hashCode => Object.hash(
+        label,
+        documentation,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -19297,9 +20678,13 @@
 
 class PartialResultParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PartialResultParams.canParse, PartialResultParams.fromJson);
+    PartialResultParams.canParse,
+    PartialResultParams.fromJson,
+  );
 
-  PartialResultParams({this.partialResultToken});
+  PartialResultParams({
+    this.partialResultToken,
+  });
   static PartialResultParams fromJson(Map<String, Object?> json) {
     if (WorkspaceSymbolParams.canParse(json, nullLspJsonReporter)) {
       return WorkspaceSymbolParams.fromJson(json);
@@ -19375,7 +20760,9 @@
             : (partialResultTokenJson is String
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
-    return PartialResultParams(partialResultToken: partialResultToken);
+    return PartialResultParams(
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -19427,16 +20814,24 @@
 }
 
 class Position implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(Position.canParse, Position.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Position.canParse,
+    Position.fromJson,
+  );
 
-  Position({required this.line, required this.character});
+  Position({
+    required this.line,
+    required this.character,
+  });
   static Position fromJson(Map<String, Object?> json) {
     final lineJson = json['line'];
     final line = lineJson as int;
     final characterJson = json['character'];
     final character = characterJson as int;
-    return Position(line: line, character: character);
+    return Position(
+      line: line,
+      character: character,
+    );
   }
 
   /// Character offset on a line in a document (zero-based). Assuming that the
@@ -19511,7 +20906,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(line, character);
+  int get hashCode => Object.hash(
+        line,
+        character,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -19519,16 +20917,24 @@
 
 class PrepareRenameParams implements TextDocumentPositionParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PrepareRenameParams.canParse, PrepareRenameParams.fromJson);
+    PrepareRenameParams.canParse,
+    PrepareRenameParams.fromJson,
+  );
 
-  PrepareRenameParams({required this.textDocument, required this.position});
+  PrepareRenameParams({
+    required this.textDocument,
+    required this.position,
+  });
   static PrepareRenameParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
         textDocumentJson as Map<String, Object?>);
     final positionJson = json['position'];
     final position = Position.fromJson(positionJson as Map<String, Object?>);
-    return PrepareRenameParams(textDocument: textDocument, position: position);
+    return PrepareRenameParams(
+      textDocument: textDocument,
+      position: position,
+    );
   }
 
   /// The position inside the text document.
@@ -19601,7 +21007,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, position);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -19634,10 +21043,15 @@
 }
 
 class ProgressParams<T> implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ProgressParams.canParse, ProgressParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ProgressParams.canParse,
+    ProgressParams.fromJson,
+  );
 
-  ProgressParams({required this.token, this.value});
+  ProgressParams({
+    required this.token,
+    this.value,
+  });
   static ProgressParams<T> fromJson<T>(Map<String, Object?> json) {
     final tokenJson = json['token'];
     final token = tokenJson is int
@@ -19647,7 +21061,10 @@
             : (throw '''$tokenJson was not one of (int, String)'''));
     final valueJson = json['value'];
     final value = valueJson;
-    return ProgressParams<T>(token: token, value: value);
+    return ProgressParams<T>(
+      token: token,
+      value: value,
+    );
   }
 
   /// The progress token provided by the client or server.
@@ -19699,7 +21116,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(token, value);
+  int get hashCode => Object.hash(
+        token,
+        value,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -19707,15 +21127,17 @@
 
 class PublishDiagnosticsClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PublishDiagnosticsClientCapabilities.canParse,
-      PublishDiagnosticsClientCapabilities.fromJson);
+    PublishDiagnosticsClientCapabilities.canParse,
+    PublishDiagnosticsClientCapabilities.fromJson,
+  );
 
-  PublishDiagnosticsClientCapabilities(
-      {this.relatedInformation,
-      this.tagSupport,
-      this.versionSupport,
-      this.codeDescriptionSupport,
-      this.dataSupport});
+  PublishDiagnosticsClientCapabilities({
+    this.relatedInformation,
+    this.tagSupport,
+    this.versionSupport,
+    this.codeDescriptionSupport,
+    this.dataSupport,
+  });
   static PublishDiagnosticsClientCapabilities fromJson(
       Map<String, Object?> json) {
     final relatedInformationJson = json['relatedInformation'];
@@ -19732,11 +21154,12 @@
     final dataSupportJson = json['dataSupport'];
     final dataSupport = dataSupportJson as bool?;
     return PublishDiagnosticsClientCapabilities(
-        relatedInformation: relatedInformation,
-        tagSupport: tagSupport,
-        versionSupport: versionSupport,
-        codeDescriptionSupport: codeDescriptionSupport,
-        dataSupport: dataSupport);
+      relatedInformation: relatedInformation,
+      tagSupport: tagSupport,
+      versionSupport: versionSupport,
+      codeDescriptionSupport: codeDescriptionSupport,
+      dataSupport: dataSupport,
+    );
   }
 
   /// Client supports a codeDescription property
@@ -19861,8 +21284,13 @@
   }
 
   @override
-  int get hashCode => Object.hash(relatedInformation, tagSupport,
-      versionSupport, codeDescriptionSupport, dataSupport);
+  int get hashCode => Object.hash(
+        relatedInformation,
+        tagSupport,
+        versionSupport,
+        codeDescriptionSupport,
+        dataSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -19870,17 +21298,22 @@
 
 class PublishDiagnosticsClientCapabilitiesTagSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PublishDiagnosticsClientCapabilitiesTagSupport.canParse,
-      PublishDiagnosticsClientCapabilitiesTagSupport.fromJson);
+    PublishDiagnosticsClientCapabilitiesTagSupport.canParse,
+    PublishDiagnosticsClientCapabilitiesTagSupport.fromJson,
+  );
 
-  PublishDiagnosticsClientCapabilitiesTagSupport({required this.valueSet});
+  PublishDiagnosticsClientCapabilitiesTagSupport({
+    required this.valueSet,
+  });
   static PublishDiagnosticsClientCapabilitiesTagSupport fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>)
         .map((item) => DiagnosticTag.fromJson(item as int))
         .toList();
-    return PublishDiagnosticsClientCapabilitiesTagSupport(valueSet: valueSet);
+    return PublishDiagnosticsClientCapabilitiesTagSupport(
+      valueSet: valueSet,
+    );
   }
 
   /// The tags supported by the client.
@@ -19942,10 +21375,15 @@
 
 class PublishDiagnosticsParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      PublishDiagnosticsParams.canParse, PublishDiagnosticsParams.fromJson);
+    PublishDiagnosticsParams.canParse,
+    PublishDiagnosticsParams.fromJson,
+  );
 
-  PublishDiagnosticsParams(
-      {required this.uri, this.version, required this.diagnostics});
+  PublishDiagnosticsParams({
+    required this.uri,
+    this.version,
+    required this.diagnostics,
+  });
   static PublishDiagnosticsParams fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
@@ -19956,7 +21394,10 @@
         .map((item) => Diagnostic.fromJson(item as Map<String, Object?>))
         .toList();
     return PublishDiagnosticsParams(
-        uri: uri, version: version, diagnostics: diagnostics);
+      uri: uri,
+      version: version,
+      diagnostics: diagnostics,
+    );
   }
 
   /// An array of diagnostic information items.
@@ -20051,22 +21492,35 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, version, lspHashCode(diagnostics));
+  int get hashCode => Object.hash(
+        uri,
+        version,
+        lspHashCode(diagnostics),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class Range implements ToJsonable {
-  static const jsonHandler = LspJsonHandler(Range.canParse, Range.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Range.canParse,
+    Range.fromJson,
+  );
 
-  Range({required this.start, required this.end});
+  Range({
+    required this.start,
+    required this.end,
+  });
   static Range fromJson(Map<String, Object?> json) {
     final startJson = json['start'];
     final start = Position.fromJson(startJson as Map<String, Object?>);
     final endJson = json['end'];
     final end = Position.fromJson(endJson as Map<String, Object?>);
-    return Range(start: start, end: end);
+    return Range(
+      start: start,
+      end: end,
+    );
   }
 
   /// The range's end position.
@@ -20136,7 +21590,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(start, end);
+  int get hashCode => Object.hash(
+        start,
+        end,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -20144,15 +21601,23 @@
 
 class RangeAndPlaceholder implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      RangeAndPlaceholder.canParse, RangeAndPlaceholder.fromJson);
+    RangeAndPlaceholder.canParse,
+    RangeAndPlaceholder.fromJson,
+  );
 
-  RangeAndPlaceholder({required this.range, required this.placeholder});
+  RangeAndPlaceholder({
+    required this.range,
+    required this.placeholder,
+  });
   static RangeAndPlaceholder fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final placeholderJson = json['placeholder'];
     final placeholder = placeholderJson as String;
-    return RangeAndPlaceholder(range: range, placeholder: placeholder);
+    return RangeAndPlaceholder(
+      range: range,
+      placeholder: placeholder,
+    );
   }
 
   final String placeholder;
@@ -20220,7 +21685,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, placeholder);
+  int get hashCode => Object.hash(
+        range,
+        placeholder,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -20228,15 +21696,19 @@
 
 class ReferenceClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ReferenceClientCapabilities.canParse,
-      ReferenceClientCapabilities.fromJson);
+    ReferenceClientCapabilities.canParse,
+    ReferenceClientCapabilities.fromJson,
+  );
 
-  ReferenceClientCapabilities({this.dynamicRegistration});
+  ReferenceClientCapabilities({
+    this.dynamicRegistration,
+  });
   static ReferenceClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return ReferenceClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether references supports dynamic registration.
@@ -20286,14 +21758,20 @@
 }
 
 class ReferenceContext implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ReferenceContext.canParse, ReferenceContext.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ReferenceContext.canParse,
+    ReferenceContext.fromJson,
+  );
 
-  ReferenceContext({required this.includeDeclaration});
+  ReferenceContext({
+    required this.includeDeclaration,
+  });
   static ReferenceContext fromJson(Map<String, Object?> json) {
     final includeDeclarationJson = json['includeDeclaration'];
     final includeDeclaration = includeDeclarationJson as bool;
-    return ReferenceContext(includeDeclaration: includeDeclaration);
+    return ReferenceContext(
+      includeDeclaration: includeDeclaration,
+    );
   }
 
   /// Include the declaration of the current symbol.
@@ -20348,17 +21826,23 @@
 }
 
 class ReferenceOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ReferenceOptions.canParse, ReferenceOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ReferenceOptions.canParse,
+    ReferenceOptions.fromJson,
+  );
 
-  ReferenceOptions({this.workDoneProgress});
+  ReferenceOptions({
+    this.workDoneProgress,
+  });
   static ReferenceOptions fromJson(Map<String, Object?> json) {
     if (ReferenceRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return ReferenceRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return ReferenceOptions(workDoneProgress: workDoneProgress);
+    return ReferenceOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -20411,15 +21895,18 @@
         WorkDoneProgressParams,
         PartialResultParams,
         ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ReferenceParams.canParse, ReferenceParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ReferenceParams.canParse,
+    ReferenceParams.fromJson,
+  );
 
-  ReferenceParams(
-      {required this.context,
-      required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  ReferenceParams({
+    required this.context,
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static ReferenceParams fromJson(Map<String, Object?> json) {
     final contextJson = json['context'];
     final context =
@@ -20446,11 +21933,12 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return ReferenceParams(
-        context: context,
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      context: context,
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   final ReferenceContext context;
@@ -20582,7 +22070,12 @@
 
   @override
   int get hashCode => Object.hash(
-      context, textDocument, position, workDoneToken, partialResultToken);
+        context,
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -20591,10 +22084,14 @@
 class ReferenceRegistrationOptions
     implements TextDocumentRegistrationOptions, ReferenceOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ReferenceRegistrationOptions.canParse,
-      ReferenceRegistrationOptions.fromJson);
+    ReferenceRegistrationOptions.canParse,
+    ReferenceRegistrationOptions.fromJson,
+  );
 
-  ReferenceRegistrationOptions({this.documentSelector, this.workDoneProgress});
+  ReferenceRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+  });
   static ReferenceRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -20603,7 +22100,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return ReferenceRegistrationOptions(
-        documentSelector: documentSelector, workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -20669,8 +22168,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -20678,10 +22179,16 @@
 
 /// General parameters to register for a capability.
 class Registration implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(Registration.canParse, Registration.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Registration.canParse,
+    Registration.fromJson,
+  );
 
-  Registration({required this.id, required this.method, this.registerOptions});
+  Registration({
+    required this.id,
+    required this.method,
+    this.registerOptions,
+  });
   static Registration fromJson(Map<String, Object?> json) {
     final idJson = json['id'];
     final id = idJson as String;
@@ -20690,7 +22197,10 @@
     final registerOptionsJson = json['registerOptions'];
     final registerOptions = registerOptionsJson;
     return Registration(
-        id: id, method: method, registerOptions: registerOptions);
+      id: id,
+      method: method,
+      registerOptions: registerOptions,
+    );
   }
 
   /// The id used to register the request. The id can be used to deregister the
@@ -20770,23 +22280,33 @@
   }
 
   @override
-  int get hashCode => Object.hash(id, method, registerOptions);
+  int get hashCode => Object.hash(
+        id,
+        method,
+        registerOptions,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class RegistrationParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(RegistrationParams.canParse, RegistrationParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    RegistrationParams.canParse,
+    RegistrationParams.fromJson,
+  );
 
-  RegistrationParams({required this.registrations});
+  RegistrationParams({
+    required this.registrations,
+  });
   static RegistrationParams fromJson(Map<String, Object?> json) {
     final registrationsJson = json['registrations'];
     final registrations = (registrationsJson as List<Object?>)
         .map((item) => Registration.fromJson(item as Map<String, Object?>))
         .toList();
-    return RegistrationParams(registrations: registrations);
+    return RegistrationParams(
+      registrations: registrations,
+    );
   }
 
   final List<Registration> registrations;
@@ -20848,10 +22368,14 @@
 /// Client capabilities specific to regular expressions.
 class RegularExpressionsClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      RegularExpressionsClientCapabilities.canParse,
-      RegularExpressionsClientCapabilities.fromJson);
+    RegularExpressionsClientCapabilities.canParse,
+    RegularExpressionsClientCapabilities.fromJson,
+  );
 
-  RegularExpressionsClientCapabilities({required this.engine, this.version});
+  RegularExpressionsClientCapabilities({
+    required this.engine,
+    this.version,
+  });
   static RegularExpressionsClientCapabilities fromJson(
       Map<String, Object?> json) {
     final engineJson = json['engine'];
@@ -20859,7 +22383,9 @@
     final versionJson = json['version'];
     final version = versionJson as String?;
     return RegularExpressionsClientCapabilities(
-        engine: engine, version: version);
+      engine: engine,
+      version: version,
+    );
   }
 
   /// The engine's name.
@@ -20925,7 +22451,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(engine, version);
+  int get hashCode => Object.hash(
+        engine,
+        version,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -20933,13 +22462,16 @@
 
 class RenameClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      RenameClientCapabilities.canParse, RenameClientCapabilities.fromJson);
+    RenameClientCapabilities.canParse,
+    RenameClientCapabilities.fromJson,
+  );
 
-  RenameClientCapabilities(
-      {this.dynamicRegistration,
-      this.prepareSupport,
-      this.prepareSupportDefaultBehavior,
-      this.honorsChangeAnnotations});
+  RenameClientCapabilities({
+    this.dynamicRegistration,
+    this.prepareSupport,
+    this.prepareSupportDefaultBehavior,
+    this.honorsChangeAnnotations,
+  });
   static RenameClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -20955,32 +22487,33 @@
     final honorsChangeAnnotationsJson = json['honorsChangeAnnotations'];
     final honorsChangeAnnotations = honorsChangeAnnotationsJson as bool?;
     return RenameClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        prepareSupport: prepareSupport,
-        prepareSupportDefaultBehavior: prepareSupportDefaultBehavior,
-        honorsChangeAnnotations: honorsChangeAnnotations);
+      dynamicRegistration: dynamicRegistration,
+      prepareSupport: prepareSupport,
+      prepareSupportDefaultBehavior: prepareSupportDefaultBehavior,
+      honorsChangeAnnotations: honorsChangeAnnotations,
+    );
   }
 
   /// Whether rename supports dynamic registration.
   final bool? dynamicRegistration;
 
-  /// Whether th client honors the change annotations in text edits and resource
-  /// operations returned via the rename request's workspace edit by for example
-  /// presenting the workspace edit in the user interface and asking for
-  /// confirmation.
+  /// Whether the client honors the change annotations in text edits and
+  /// resource operations returned via the rename request's workspace edit by
+  /// for example presenting the workspace edit in the user interface and asking
+  /// for confirmation.
   ///  @since 3.16.0
   final bool? honorsChangeAnnotations;
 
   /// Client supports testing for validity of rename operations before
   /// execution.
-  ///  @since version 3.12.0
+  ///  @since 3.12.0
   final bool? prepareSupport;
 
   /// Client supports the default behavior result (`{ defaultBehavior: boolean
   /// }`).
   ///
   /// The value indicates the default behavior used by the client.
-  ///  @since version 3.16.0
+  ///  @since 3.16.0
   final PrepareSupportDefaultBehavior? prepareSupportDefaultBehavior;
 
   Map<String, Object?> toJson() {
@@ -21069,8 +22602,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, prepareSupport,
-      prepareSupportDefaultBehavior, honorsChangeAnnotations);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        prepareSupport,
+        prepareSupportDefaultBehavior,
+        honorsChangeAnnotations,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -21078,15 +22615,18 @@
 
 /// Rename file operation
 class RenameFile implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(RenameFile.canParse, RenameFile.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    RenameFile.canParse,
+    RenameFile.fromJson,
+  );
 
-  RenameFile(
-      {this.kind = 'rename',
-      required this.oldUri,
-      required this.newUri,
-      this.options,
-      this.annotationId}) {
+  RenameFile({
+    this.kind = 'rename',
+    required this.oldUri,
+    required this.newUri,
+    this.options,
+    this.annotationId,
+  }) {
     if (kind != 'rename') {
       throw 'kind may only be the literal \'rename\'';
     }
@@ -21105,11 +22645,12 @@
     final annotationIdJson = json['annotationId'];
     final annotationId = annotationIdJson as String?;
     return RenameFile(
-        kind: kind,
-        oldUri: oldUri,
-        newUri: newUri,
-        options: options,
-        annotationId: annotationId);
+      kind: kind,
+      oldUri: oldUri,
+      newUri: newUri,
+      options: options,
+      annotationId: annotationId,
+    );
   }
 
   /// An optional annotation identifer describing the operation.
@@ -21240,7 +22781,13 @@
   }
 
   @override
-  int get hashCode => Object.hash(kind, oldUri, newUri, options, annotationId);
+  int get hashCode => Object.hash(
+        kind,
+        oldUri,
+        newUri,
+        options,
+        annotationId,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -21248,17 +22795,24 @@
 
 /// Rename file options
 class RenameFileOptions implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(RenameFileOptions.canParse, RenameFileOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    RenameFileOptions.canParse,
+    RenameFileOptions.fromJson,
+  );
 
-  RenameFileOptions({this.overwrite, this.ignoreIfExists});
+  RenameFileOptions({
+    this.overwrite,
+    this.ignoreIfExists,
+  });
   static RenameFileOptions fromJson(Map<String, Object?> json) {
     final overwriteJson = json['overwrite'];
     final overwrite = overwriteJson as bool?;
     final ignoreIfExistsJson = json['ignoreIfExists'];
     final ignoreIfExists = ignoreIfExistsJson as bool?;
     return RenameFileOptions(
-        overwrite: overwrite, ignoreIfExists: ignoreIfExists);
+      overwrite: overwrite,
+      ignoreIfExists: ignoreIfExists,
+    );
   }
 
   /// Ignores if target exists.
@@ -21318,7 +22872,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(overwrite, ignoreIfExists);
+  int get hashCode => Object.hash(
+        overwrite,
+        ignoreIfExists,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -21328,16 +22885,22 @@
 /// files.
 ///  @since 3.16.0
 class RenameFilesParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(RenameFilesParams.canParse, RenameFilesParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    RenameFilesParams.canParse,
+    RenameFilesParams.fromJson,
+  );
 
-  RenameFilesParams({required this.files});
+  RenameFilesParams({
+    required this.files,
+  });
   static RenameFilesParams fromJson(Map<String, Object?> json) {
     final filesJson = json['files'];
     final files = (filesJson as List<Object?>)
         .map((item) => FileRename.fromJson(item as Map<String, Object?>))
         .toList();
-    return RenameFilesParams(files: files);
+    return RenameFilesParams(
+      files: files,
+    );
   }
 
   /// An array of all files/folders renamed in this operation. When a folder is
@@ -21396,10 +22959,15 @@
 }
 
 class RenameOptions implements WorkDoneProgressOptions, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(RenameOptions.canParse, RenameOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    RenameOptions.canParse,
+    RenameOptions.fromJson,
+  );
 
-  RenameOptions({this.prepareProvider, this.workDoneProgress});
+  RenameOptions({
+    this.prepareProvider,
+    this.workDoneProgress,
+  });
   static RenameOptions fromJson(Map<String, Object?> json) {
     if (RenameRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return RenameRegistrationOptions.fromJson(json);
@@ -21409,7 +22977,9 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return RenameOptions(
-        prepareProvider: prepareProvider, workDoneProgress: workDoneProgress);
+      prepareProvider: prepareProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// Renames should be checked and tested before being executed.
@@ -21467,7 +23037,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(prepareProvider, workDoneProgress);
+  int get hashCode => Object.hash(
+        prepareProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -21475,14 +23048,17 @@
 
 class RenameParams
     implements TextDocumentPositionParams, WorkDoneProgressParams, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(RenameParams.canParse, RenameParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    RenameParams.canParse,
+    RenameParams.fromJson,
+  );
 
-  RenameParams(
-      {required this.newName,
-      required this.textDocument,
-      required this.position,
-      this.workDoneToken});
+  RenameParams({
+    required this.newName,
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+  });
   static RenameParams fromJson(Map<String, Object?> json) {
     final newNameJson = json['newName'];
     final newName = newNameJson as String;
@@ -21500,10 +23076,11 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return RenameParams(
-        newName: newName,
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken);
+      newName: newName,
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The new name of the symbol. If the given name is not valid the request
@@ -21617,8 +23194,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(newName, textDocument, position, workDoneToken);
+  int get hashCode => Object.hash(
+        newName,
+        textDocument,
+        position,
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -21627,10 +23208,15 @@
 class RenameRegistrationOptions
     implements TextDocumentRegistrationOptions, RenameOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      RenameRegistrationOptions.canParse, RenameRegistrationOptions.fromJson);
+    RenameRegistrationOptions.canParse,
+    RenameRegistrationOptions.fromJson,
+  );
 
-  RenameRegistrationOptions(
-      {this.documentSelector, this.prepareProvider, this.workDoneProgress});
+  RenameRegistrationOptions({
+    this.documentSelector,
+    this.prepareProvider,
+    this.workDoneProgress,
+  });
   static RenameRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -21641,9 +23227,10 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return RenameRegistrationOptions(
-        documentSelector: documentSelector,
-        prepareProvider: prepareProvider,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      prepareProvider: prepareProvider,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -21727,22 +23314,28 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(documentSelector), prepareProvider, workDoneProgress);
+        lspHashCode(documentSelector),
+        prepareProvider,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class RequestMessage implements Message, IncomingMessage, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(RequestMessage.canParse, RequestMessage.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    RequestMessage.canParse,
+    RequestMessage.fromJson,
+  );
 
-  RequestMessage(
-      {required this.id,
-      required this.method,
-      this.params,
-      required this.jsonrpc,
-      this.clientRequestTime});
+  RequestMessage({
+    required this.id,
+    required this.method,
+    this.params,
+    required this.jsonrpc,
+    this.clientRequestTime,
+  });
   static RequestMessage fromJson(Map<String, Object?> json) {
     final idJson = json['id'];
     final id = idJson is int
@@ -21759,11 +23352,12 @@
     final clientRequestTimeJson = json['clientRequestTime'];
     final clientRequestTime = clientRequestTimeJson as int?;
     return RequestMessage(
-        id: id,
-        method: method,
-        params: params,
-        jsonrpc: jsonrpc,
-        clientRequestTime: clientRequestTime);
+      id: id,
+      method: method,
+      params: params,
+      jsonrpc: jsonrpc,
+      clientRequestTime: clientRequestTime,
+    );
   }
 
   final int? clientRequestTime;
@@ -21879,8 +23473,13 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(id, method, params, jsonrpc, clientRequestTime);
+  int get hashCode => Object.hash(
+        id,
+        method,
+        params,
+        jsonrpc,
+        clientRequestTime,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -21924,10 +23523,16 @@
 }
 
 class ResponseError implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ResponseError.canParse, ResponseError.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ResponseError.canParse,
+    ResponseError.fromJson,
+  );
 
-  ResponseError({required this.code, required this.message, this.data});
+  ResponseError({
+    required this.code,
+    required this.message,
+    this.data,
+  });
   static ResponseError fromJson(Map<String, Object?> json) {
     final codeJson = json['code'];
     final code = ErrorCodes.fromJson(codeJson as int);
@@ -21935,7 +23540,11 @@
     final message = messageJson as String;
     final dataJson = json['data'];
     final data = dataJson as String?;
-    return ResponseError(code: code, message: message, data: data);
+    return ResponseError(
+      code: code,
+      message: message,
+      data: data,
+    );
   }
 
   /// A number indicating the error type that occurred.
@@ -22025,22 +23634,29 @@
   }
 
   @override
-  int get hashCode => Object.hash(code, message, data);
+  int get hashCode => Object.hash(
+        code,
+        message,
+        data,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class ResponseMessage implements Message, ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ResponseMessage.canParse, ResponseMessage.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ResponseMessage.canParse,
+    ResponseMessage.fromJson,
+  );
 
-  ResponseMessage(
-      {this.id,
-      this.result,
-      this.error,
-      required this.jsonrpc,
-      this.clientRequestTime});
+  ResponseMessage({
+    this.id,
+    this.result,
+    this.error,
+    required this.jsonrpc,
+    this.clientRequestTime,
+  });
   static ResponseMessage fromJson(Map<String, Object?> json) {
     final idJson = json['id'];
     final id = idJson == null
@@ -22061,11 +23677,12 @@
     final clientRequestTimeJson = json['clientRequestTime'];
     final clientRequestTime = clientRequestTimeJson as int?;
     return ResponseMessage(
-        id: id,
-        result: result,
-        error: error,
-        jsonrpc: jsonrpc,
-        clientRequestTime: clientRequestTime);
+      id: id,
+      result: result,
+      error: error,
+      jsonrpc: jsonrpc,
+      clientRequestTime: clientRequestTime,
+    );
   }
 
   final int? clientRequestTime;
@@ -22173,22 +23790,33 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(id, result, error, jsonrpc, clientRequestTime);
+  int get hashCode => Object.hash(
+        id,
+        result,
+        error,
+        jsonrpc,
+        clientRequestTime,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class SaveOptions implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SaveOptions.canParse, SaveOptions.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SaveOptions.canParse,
+    SaveOptions.fromJson,
+  );
 
-  SaveOptions({this.includeText});
+  SaveOptions({
+    this.includeText,
+  });
   static SaveOptions fromJson(Map<String, Object?> json) {
     final includeTextJson = json['includeText'];
     final includeText = includeTextJson as bool?;
-    return SaveOptions(includeText: includeText);
+    return SaveOptions(
+      includeText: includeText,
+    );
   }
 
   /// The client is supposed to include the content on save.
@@ -22237,10 +23865,15 @@
 }
 
 class SelectionRange implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SelectionRange.canParse, SelectionRange.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SelectionRange.canParse,
+    SelectionRange.fromJson,
+  );
 
-  SelectionRange({required this.range, this.parent});
+  SelectionRange({
+    required this.range,
+    this.parent,
+  });
   static SelectionRange fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
@@ -22248,7 +23881,10 @@
     final parent = parentJson != null
         ? SelectionRange.fromJson(parentJson as Map<String, Object?>)
         : null;
-    return SelectionRange(range: range, parent: parent);
+    return SelectionRange(
+      range: range,
+      parent: parent,
+    );
   }
 
   /// The parent selection range containing this range. Therefore `parent.range`
@@ -22313,7 +23949,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, parent);
+  int get hashCode => Object.hash(
+        range,
+        parent,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -22321,15 +23960,19 @@
 
 class SelectionRangeClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SelectionRangeClientCapabilities.canParse,
-      SelectionRangeClientCapabilities.fromJson);
+    SelectionRangeClientCapabilities.canParse,
+    SelectionRangeClientCapabilities.fromJson,
+  );
 
-  SelectionRangeClientCapabilities({this.dynamicRegistration});
+  SelectionRangeClientCapabilities({
+    this.dynamicRegistration,
+  });
   static SelectionRangeClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     return SelectionRangeClientCapabilities(
-        dynamicRegistration: dynamicRegistration);
+      dynamicRegistration: dynamicRegistration,
+    );
   }
 
   /// Whether implementation supports dynamic registration for selection range
@@ -22383,16 +24026,22 @@
 
 class SelectionRangeOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SelectionRangeOptions.canParse, SelectionRangeOptions.fromJson);
+    SelectionRangeOptions.canParse,
+    SelectionRangeOptions.fromJson,
+  );
 
-  SelectionRangeOptions({this.workDoneProgress});
+  SelectionRangeOptions({
+    this.workDoneProgress,
+  });
   static SelectionRangeOptions fromJson(Map<String, Object?> json) {
     if (SelectionRangeRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return SelectionRangeRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return SelectionRangeOptions(workDoneProgress: workDoneProgress);
+    return SelectionRangeOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -22443,13 +24092,16 @@
 class SelectionRangeParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SelectionRangeParams.canParse, SelectionRangeParams.fromJson);
+    SelectionRangeParams.canParse,
+    SelectionRangeParams.fromJson,
+  );
 
-  SelectionRangeParams(
-      {required this.textDocument,
-      required this.positions,
-      this.workDoneToken,
-      this.partialResultToken});
+  SelectionRangeParams({
+    required this.textDocument,
+    required this.positions,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static SelectionRangeParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -22475,10 +24127,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return SelectionRangeParams(
-        textDocument: textDocument,
-        positions: positions,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      positions: positions,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -22591,7 +24244,11 @@
 
   @override
   int get hashCode => Object.hash(
-      textDocument, lspHashCode(positions), workDoneToken, partialResultToken);
+        textDocument,
+        lspHashCode(positions),
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -22604,11 +24261,15 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SelectionRangeRegistrationOptions.canParse,
-      SelectionRangeRegistrationOptions.fromJson);
+    SelectionRangeRegistrationOptions.canParse,
+    SelectionRangeRegistrationOptions.fromJson,
+  );
 
-  SelectionRangeRegistrationOptions(
-      {this.workDoneProgress, this.documentSelector, this.id});
+  SelectionRangeRegistrationOptions({
+    this.workDoneProgress,
+    this.documentSelector,
+    this.id,
+  });
   static SelectionRangeRegistrationOptions fromJson(Map<String, Object?> json) {
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
@@ -22619,9 +24280,10 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return SelectionRangeRegistrationOptions(
-        workDoneProgress: workDoneProgress,
-        documentSelector: documentSelector,
-        id: id);
+      workDoneProgress: workDoneProgress,
+      documentSelector: documentSelector,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -22705,8 +24367,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(workDoneProgress, lspHashCode(documentSelector), id);
+  int get hashCode => Object.hash(
+        workDoneProgress,
+        lspHashCode(documentSelector),
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -22793,17 +24458,25 @@
 }
 
 class SemanticTokens implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SemanticTokens.canParse, SemanticTokens.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SemanticTokens.canParse,
+    SemanticTokens.fromJson,
+  );
 
-  SemanticTokens({this.resultId, required this.data});
+  SemanticTokens({
+    this.resultId,
+    required this.data,
+  });
   static SemanticTokens fromJson(Map<String, Object?> json) {
     final resultIdJson = json['resultId'];
     final resultId = resultIdJson as String?;
     final dataJson = json['data'];
     final data =
         (dataJson as List<Object?>).map((item) => item as int).toList();
-    return SemanticTokens(resultId: resultId, data: data);
+    return SemanticTokens(
+      resultId: resultId,
+      data: data,
+    );
   }
 
   /// The actual tokens.
@@ -22872,7 +24545,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(resultId, lspHashCode(data));
+  int get hashCode => Object.hash(
+        resultId,
+        lspHashCode(data),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -22880,17 +24556,19 @@
 
 class SemanticTokensClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensClientCapabilities.canParse,
-      SemanticTokensClientCapabilities.fromJson);
+    SemanticTokensClientCapabilities.canParse,
+    SemanticTokensClientCapabilities.fromJson,
+  );
 
-  SemanticTokensClientCapabilities(
-      {this.dynamicRegistration,
-      required this.requests,
-      required this.tokenTypes,
-      required this.tokenModifiers,
-      required this.formats,
-      this.overlappingTokenSupport,
-      this.multilineTokenSupport});
+  SemanticTokensClientCapabilities({
+    this.dynamicRegistration,
+    required this.requests,
+    required this.tokenTypes,
+    required this.tokenModifiers,
+    required this.formats,
+    this.overlappingTokenSupport,
+    this.multilineTokenSupport,
+  });
   static SemanticTokensClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -22914,13 +24592,14 @@
     final multilineTokenSupportJson = json['multilineTokenSupport'];
     final multilineTokenSupport = multilineTokenSupportJson as bool?;
     return SemanticTokensClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        requests: requests,
-        tokenTypes: tokenTypes,
-        tokenModifiers: tokenModifiers,
-        formats: formats,
-        overlappingTokenSupport: overlappingTokenSupport,
-        multilineTokenSupport: multilineTokenSupport);
+      dynamicRegistration: dynamicRegistration,
+      requests: requests,
+      tokenTypes: tokenTypes,
+      tokenModifiers: tokenModifiers,
+      formats: formats,
+      overlappingTokenSupport: overlappingTokenSupport,
+      multilineTokenSupport: multilineTokenSupport,
+    );
   }
 
   /// Whether implementation supports dynamic registration. If this is set to
@@ -23110,13 +24789,14 @@
 
   @override
   int get hashCode => Object.hash(
-      dynamicRegistration,
-      requests,
-      lspHashCode(tokenTypes),
-      lspHashCode(tokenModifiers),
-      lspHashCode(formats),
-      overlappingTokenSupport,
-      multilineTokenSupport);
+        dynamicRegistration,
+        requests,
+        lspHashCode(tokenTypes),
+        lspHashCode(tokenModifiers),
+        lspHashCode(formats),
+        overlappingTokenSupport,
+        multilineTokenSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -23124,15 +24804,20 @@
 
 class SemanticTokensClientCapabilitiesFull implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensClientCapabilitiesFull.canParse,
-      SemanticTokensClientCapabilitiesFull.fromJson);
+    SemanticTokensClientCapabilitiesFull.canParse,
+    SemanticTokensClientCapabilitiesFull.fromJson,
+  );
 
-  SemanticTokensClientCapabilitiesFull({this.delta});
+  SemanticTokensClientCapabilitiesFull({
+    this.delta,
+  });
   static SemanticTokensClientCapabilitiesFull fromJson(
       Map<String, Object?> json) {
     final deltaJson = json['delta'];
     final delta = deltaJson as bool?;
-    return SemanticTokensClientCapabilitiesFull(delta: delta);
+    return SemanticTokensClientCapabilitiesFull(
+      delta: delta,
+    );
   }
 
   /// The client will send the `textDocument/semanticTokens/full/delta` request
@@ -23185,8 +24870,9 @@
 
 class SemanticTokensClientCapabilitiesRange implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensClientCapabilitiesRange.canParse,
-      SemanticTokensClientCapabilitiesRange.fromJson);
+    SemanticTokensClientCapabilitiesRange.canParse,
+    SemanticTokensClientCapabilitiesRange.fromJson,
+  );
 
   static SemanticTokensClientCapabilitiesRange fromJson(
       Map<String, Object?> json) {
@@ -23226,10 +24912,14 @@
 
 class SemanticTokensClientCapabilitiesRequests implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensClientCapabilitiesRequests.canParse,
-      SemanticTokensClientCapabilitiesRequests.fromJson);
+    SemanticTokensClientCapabilitiesRequests.canParse,
+    SemanticTokensClientCapabilitiesRequests.fromJson,
+  );
 
-  SemanticTokensClientCapabilitiesRequests({this.range, this.full});
+  SemanticTokensClientCapabilitiesRequests({
+    this.range,
+    this.full,
+  });
   static SemanticTokensClientCapabilitiesRequests fromJson(
       Map<String, Object?> json) {
     final rangeJson = json['range'];
@@ -23254,7 +24944,10 @@
                     SemanticTokensClientCapabilitiesFull.fromJson(
                         fullJson as Map<String, Object?>))
                 : (throw '''$fullJson was not one of (bool, SemanticTokensClientCapabilitiesFull)''')));
-    return SemanticTokensClientCapabilitiesRequests(range: range, full: full);
+    return SemanticTokensClientCapabilitiesRequests(
+      range: range,
+      full: full,
+    );
   }
 
   /// The client will send the `textDocument/semanticTokens/full` request if the
@@ -23324,7 +25017,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, full);
+  int get hashCode => Object.hash(
+        range,
+        full,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -23332,9 +25028,14 @@
 
 class SemanticTokensDelta implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensDelta.canParse, SemanticTokensDelta.fromJson);
+    SemanticTokensDelta.canParse,
+    SemanticTokensDelta.fromJson,
+  );
 
-  SemanticTokensDelta({this.resultId, required this.edits});
+  SemanticTokensDelta({
+    this.resultId,
+    required this.edits,
+  });
   static SemanticTokensDelta fromJson(Map<String, Object?> json) {
     final resultIdJson = json['resultId'];
     final resultId = resultIdJson as String?;
@@ -23343,7 +25044,10 @@
         .map(
             (item) => SemanticTokensEdit.fromJson(item as Map<String, Object?>))
         .toList();
-    return SemanticTokensDelta(resultId: resultId, edits: edits);
+    return SemanticTokensDelta(
+      resultId: resultId,
+      edits: edits,
+    );
   }
 
   /// The semantic token edits to transform a previous result into a new result.
@@ -23411,7 +25115,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(resultId, lspHashCode(edits));
+  int get hashCode => Object.hash(
+        resultId,
+        lspHashCode(edits),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -23420,13 +25127,16 @@
 class SemanticTokensDeltaParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensDeltaParams.canParse, SemanticTokensDeltaParams.fromJson);
+    SemanticTokensDeltaParams.canParse,
+    SemanticTokensDeltaParams.fromJson,
+  );
 
-  SemanticTokensDeltaParams(
-      {required this.textDocument,
-      required this.previousResultId,
-      this.workDoneToken,
-      this.partialResultToken});
+  SemanticTokensDeltaParams({
+    required this.textDocument,
+    required this.previousResultId,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static SemanticTokensDeltaParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -23450,10 +25160,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return SemanticTokensDeltaParams(
-        textDocument: textDocument,
-        previousResultId: previousResultId,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      previousResultId: previousResultId,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -23565,7 +25276,11 @@
 
   @override
   int get hashCode => Object.hash(
-      textDocument, previousResultId, workDoneToken, partialResultToken);
+        textDocument,
+        previousResultId,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -23573,17 +25288,22 @@
 
 class SemanticTokensDeltaPartialResult implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensDeltaPartialResult.canParse,
-      SemanticTokensDeltaPartialResult.fromJson);
+    SemanticTokensDeltaPartialResult.canParse,
+    SemanticTokensDeltaPartialResult.fromJson,
+  );
 
-  SemanticTokensDeltaPartialResult({required this.edits});
+  SemanticTokensDeltaPartialResult({
+    required this.edits,
+  });
   static SemanticTokensDeltaPartialResult fromJson(Map<String, Object?> json) {
     final editsJson = json['edits'];
     final edits = (editsJson as List<Object?>)
         .map(
             (item) => SemanticTokensEdit.fromJson(item as Map<String, Object?>))
         .toList();
-    return SemanticTokensDeltaPartialResult(edits: edits);
+    return SemanticTokensDeltaPartialResult(
+      edits: edits,
+    );
   }
 
   final List<SemanticTokensEdit> edits;
@@ -23642,11 +25362,16 @@
 }
 
 class SemanticTokensEdit implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SemanticTokensEdit.canParse, SemanticTokensEdit.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SemanticTokensEdit.canParse,
+    SemanticTokensEdit.fromJson,
+  );
 
-  SemanticTokensEdit(
-      {required this.start, required this.deleteCount, this.data});
+  SemanticTokensEdit({
+    required this.start,
+    required this.deleteCount,
+    this.data,
+  });
   static SemanticTokensEdit fromJson(Map<String, Object?> json) {
     final startJson = json['start'];
     final start = startJson as int;
@@ -23656,7 +25381,10 @@
     final data =
         (dataJson as List<Object?>?)?.map((item) => item as int).toList();
     return SemanticTokensEdit(
-        start: start, deleteCount: deleteCount, data: data);
+      start: start,
+      deleteCount: deleteCount,
+      data: data,
+    );
   }
 
   /// The elements to insert.
@@ -23747,7 +25475,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(start, deleteCount, lspHashCode(data));
+  int get hashCode => Object.hash(
+        start,
+        deleteCount,
+        lspHashCode(data),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -23755,10 +25487,14 @@
 
 class SemanticTokensLegend implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensLegend.canParse, SemanticTokensLegend.fromJson);
+    SemanticTokensLegend.canParse,
+    SemanticTokensLegend.fromJson,
+  );
 
-  SemanticTokensLegend(
-      {required this.tokenTypes, required this.tokenModifiers});
+  SemanticTokensLegend({
+    required this.tokenTypes,
+    required this.tokenModifiers,
+  });
   static SemanticTokensLegend fromJson(Map<String, Object?> json) {
     final tokenTypesJson = json['tokenTypes'];
     final tokenTypes = (tokenTypesJson as List<Object?>)
@@ -23769,7 +25505,9 @@
         .map((item) => item as String)
         .toList();
     return SemanticTokensLegend(
-        tokenTypes: tokenTypes, tokenModifiers: tokenModifiers);
+      tokenTypes: tokenTypes,
+      tokenModifiers: tokenModifiers,
+    );
   }
 
   /// The token modifiers a server uses.
@@ -23846,8 +25584,10 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(tokenTypes), lspHashCode(tokenModifiers));
+  int get hashCode => Object.hash(
+        lspHashCode(tokenTypes),
+        lspHashCode(tokenModifiers),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -23855,10 +25595,16 @@
 
 class SemanticTokensOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensOptions.canParse, SemanticTokensOptions.fromJson);
+    SemanticTokensOptions.canParse,
+    SemanticTokensOptions.fromJson,
+  );
 
-  SemanticTokensOptions(
-      {required this.legend, this.range, this.full, this.workDoneProgress});
+  SemanticTokensOptions({
+    required this.legend,
+    this.range,
+    this.full,
+    this.workDoneProgress,
+  });
   static SemanticTokensOptions fromJson(Map<String, Object?> json) {
     if (SemanticTokensRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return SemanticTokensRegistrationOptions.fromJson(json);
@@ -23890,10 +25636,11 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return SemanticTokensOptions(
-        legend: legend,
-        range: range,
-        full: full,
-        workDoneProgress: workDoneProgress);
+      legend: legend,
+      range: range,
+      full: full,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// Server supports providing semantic tokens for a full document.
@@ -23999,7 +25746,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(legend, range, full, workDoneProgress);
+  int get hashCode => Object.hash(
+        legend,
+        range,
+        full,
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -24007,13 +25759,19 @@
 
 class SemanticTokensOptionsFull implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensOptionsFull.canParse, SemanticTokensOptionsFull.fromJson);
+    SemanticTokensOptionsFull.canParse,
+    SemanticTokensOptionsFull.fromJson,
+  );
 
-  SemanticTokensOptionsFull({this.delta});
+  SemanticTokensOptionsFull({
+    this.delta,
+  });
   static SemanticTokensOptionsFull fromJson(Map<String, Object?> json) {
     final deltaJson = json['delta'];
     final delta = deltaJson as bool?;
-    return SemanticTokensOptionsFull(delta: delta);
+    return SemanticTokensOptionsFull(
+      delta: delta,
+    );
   }
 
   /// The server supports deltas for full documents.
@@ -24064,7 +25822,9 @@
 
 class SemanticTokensOptionsRange implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensOptionsRange.canParse, SemanticTokensOptionsRange.fromJson);
+    SemanticTokensOptionsRange.canParse,
+    SemanticTokensOptionsRange.fromJson,
+  );
 
   static SemanticTokensOptionsRange fromJson(Map<String, Object?> json) {
     return SemanticTokensOptionsRange();
@@ -24103,12 +25863,15 @@
 class SemanticTokensParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensParams.canParse, SemanticTokensParams.fromJson);
+    SemanticTokensParams.canParse,
+    SemanticTokensParams.fromJson,
+  );
 
-  SemanticTokensParams(
-      {required this.textDocument,
-      this.workDoneToken,
-      this.partialResultToken});
+  SemanticTokensParams({
+    required this.textDocument,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static SemanticTokensParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -24130,9 +25893,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return SemanticTokensParams(
-        textDocument: textDocument,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -24219,8 +25983,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -24228,15 +25995,20 @@
 
 class SemanticTokensPartialResult implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensPartialResult.canParse,
-      SemanticTokensPartialResult.fromJson);
+    SemanticTokensPartialResult.canParse,
+    SemanticTokensPartialResult.fromJson,
+  );
 
-  SemanticTokensPartialResult({required this.data});
+  SemanticTokensPartialResult({
+    required this.data,
+  });
   static SemanticTokensPartialResult fromJson(Map<String, Object?> json) {
     final dataJson = json['data'];
     final data =
         (dataJson as List<Object?>).map((item) => item as int).toList();
-    return SemanticTokensPartialResult(data: data);
+    return SemanticTokensPartialResult(
+      data: data,
+    );
   }
 
   final List<int> data;
@@ -24293,13 +26065,16 @@
 class SemanticTokensRangeParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensRangeParams.canParse, SemanticTokensRangeParams.fromJson);
+    SemanticTokensRangeParams.canParse,
+    SemanticTokensRangeParams.fromJson,
+  );
 
-  SemanticTokensRangeParams(
-      {required this.textDocument,
-      required this.range,
-      this.workDoneToken,
-      this.partialResultToken});
+  SemanticTokensRangeParams({
+    required this.textDocument,
+    required this.range,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static SemanticTokensRangeParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -24323,10 +26098,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return SemanticTokensRangeParams(
-        textDocument: textDocument,
-        range: range,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      range: range,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -24436,8 +26212,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, range, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        range,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -24450,16 +26230,18 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensRegistrationOptions.canParse,
-      SemanticTokensRegistrationOptions.fromJson);
+    SemanticTokensRegistrationOptions.canParse,
+    SemanticTokensRegistrationOptions.fromJson,
+  );
 
-  SemanticTokensRegistrationOptions(
-      {this.documentSelector,
-      required this.legend,
-      this.range,
-      this.full,
-      this.workDoneProgress,
-      this.id});
+  SemanticTokensRegistrationOptions({
+    this.documentSelector,
+    required this.legend,
+    this.range,
+    this.full,
+    this.workDoneProgress,
+    this.id,
+  });
   static SemanticTokensRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -24494,12 +26276,13 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return SemanticTokensRegistrationOptions(
-        documentSelector: documentSelector,
-        legend: legend,
-        range: range,
-        full: full,
-        workDoneProgress: workDoneProgress,
-        id: id);
+      documentSelector: documentSelector,
+      legend: legend,
+      range: range,
+      full: full,
+      workDoneProgress: workDoneProgress,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -24648,7 +26431,13 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(documentSelector), legend, range, full, workDoneProgress, id);
+        lspHashCode(documentSelector),
+        legend,
+        range,
+        full,
+        workDoneProgress,
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -24656,16 +26445,20 @@
 
 class SemanticTokensWorkspaceClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SemanticTokensWorkspaceClientCapabilities.canParse,
-      SemanticTokensWorkspaceClientCapabilities.fromJson);
+    SemanticTokensWorkspaceClientCapabilities.canParse,
+    SemanticTokensWorkspaceClientCapabilities.fromJson,
+  );
 
-  SemanticTokensWorkspaceClientCapabilities({this.refreshSupport});
+  SemanticTokensWorkspaceClientCapabilities({
+    this.refreshSupport,
+  });
   static SemanticTokensWorkspaceClientCapabilities fromJson(
       Map<String, Object?> json) {
     final refreshSupportJson = json['refreshSupport'];
     final refreshSupport = refreshSupportJson as bool?;
     return SemanticTokensWorkspaceClientCapabilities(
-        refreshSupport: refreshSupport);
+      refreshSupport: refreshSupport,
+    );
   }
 
   /// Whether the client implementation supports a refresh request sent from the
@@ -24722,39 +26515,42 @@
 }
 
 class ServerCapabilities implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ServerCapabilities.canParse, ServerCapabilities.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ServerCapabilities.canParse,
+    ServerCapabilities.fromJson,
+  );
 
-  ServerCapabilities(
-      {this.textDocumentSync,
-      this.completionProvider,
-      this.hoverProvider,
-      this.signatureHelpProvider,
-      this.declarationProvider,
-      this.definitionProvider,
-      this.typeDefinitionProvider,
-      this.implementationProvider,
-      this.referencesProvider,
-      this.documentHighlightProvider,
-      this.documentSymbolProvider,
-      this.codeActionProvider,
-      this.codeLensProvider,
-      this.documentLinkProvider,
-      this.colorProvider,
-      this.documentFormattingProvider,
-      this.documentRangeFormattingProvider,
-      this.documentOnTypeFormattingProvider,
-      this.renameProvider,
-      this.foldingRangeProvider,
-      this.executeCommandProvider,
-      this.selectionRangeProvider,
-      this.linkedEditingRangeProvider,
-      this.callHierarchyProvider,
-      this.semanticTokensProvider,
-      this.monikerProvider,
-      this.workspaceSymbolProvider,
-      this.workspace,
-      this.experimental});
+  ServerCapabilities({
+    this.textDocumentSync,
+    this.completionProvider,
+    this.hoverProvider,
+    this.signatureHelpProvider,
+    this.declarationProvider,
+    this.definitionProvider,
+    this.typeDefinitionProvider,
+    this.implementationProvider,
+    this.referencesProvider,
+    this.documentHighlightProvider,
+    this.documentSymbolProvider,
+    this.codeActionProvider,
+    this.codeLensProvider,
+    this.documentLinkProvider,
+    this.colorProvider,
+    this.documentFormattingProvider,
+    this.documentRangeFormattingProvider,
+    this.documentOnTypeFormattingProvider,
+    this.renameProvider,
+    this.foldingRangeProvider,
+    this.executeCommandProvider,
+    this.selectionRangeProvider,
+    this.linkedEditingRangeProvider,
+    this.callHierarchyProvider,
+    this.semanticTokensProvider,
+    this.monikerProvider,
+    this.workspaceSymbolProvider,
+    this.workspace,
+    this.experimental,
+  });
   static ServerCapabilities fromJson(Map<String, Object?> json) {
     final textDocumentSyncJson = json['textDocumentSync'];
     final textDocumentSync = textDocumentSyncJson == null
@@ -25087,35 +26883,36 @@
     final experimentalJson = json['experimental'];
     final experimental = experimentalJson;
     return ServerCapabilities(
-        textDocumentSync: textDocumentSync,
-        completionProvider: completionProvider,
-        hoverProvider: hoverProvider,
-        signatureHelpProvider: signatureHelpProvider,
-        declarationProvider: declarationProvider,
-        definitionProvider: definitionProvider,
-        typeDefinitionProvider: typeDefinitionProvider,
-        implementationProvider: implementationProvider,
-        referencesProvider: referencesProvider,
-        documentHighlightProvider: documentHighlightProvider,
-        documentSymbolProvider: documentSymbolProvider,
-        codeActionProvider: codeActionProvider,
-        codeLensProvider: codeLensProvider,
-        documentLinkProvider: documentLinkProvider,
-        colorProvider: colorProvider,
-        documentFormattingProvider: documentFormattingProvider,
-        documentRangeFormattingProvider: documentRangeFormattingProvider,
-        documentOnTypeFormattingProvider: documentOnTypeFormattingProvider,
-        renameProvider: renameProvider,
-        foldingRangeProvider: foldingRangeProvider,
-        executeCommandProvider: executeCommandProvider,
-        selectionRangeProvider: selectionRangeProvider,
-        linkedEditingRangeProvider: linkedEditingRangeProvider,
-        callHierarchyProvider: callHierarchyProvider,
-        semanticTokensProvider: semanticTokensProvider,
-        monikerProvider: monikerProvider,
-        workspaceSymbolProvider: workspaceSymbolProvider,
-        workspace: workspace,
-        experimental: experimental);
+      textDocumentSync: textDocumentSync,
+      completionProvider: completionProvider,
+      hoverProvider: hoverProvider,
+      signatureHelpProvider: signatureHelpProvider,
+      declarationProvider: declarationProvider,
+      definitionProvider: definitionProvider,
+      typeDefinitionProvider: typeDefinitionProvider,
+      implementationProvider: implementationProvider,
+      referencesProvider: referencesProvider,
+      documentHighlightProvider: documentHighlightProvider,
+      documentSymbolProvider: documentSymbolProvider,
+      codeActionProvider: codeActionProvider,
+      codeLensProvider: codeLensProvider,
+      documentLinkProvider: documentLinkProvider,
+      colorProvider: colorProvider,
+      documentFormattingProvider: documentFormattingProvider,
+      documentRangeFormattingProvider: documentRangeFormattingProvider,
+      documentOnTypeFormattingProvider: documentOnTypeFormattingProvider,
+      renameProvider: renameProvider,
+      foldingRangeProvider: foldingRangeProvider,
+      executeCommandProvider: executeCommandProvider,
+      selectionRangeProvider: selectionRangeProvider,
+      linkedEditingRangeProvider: linkedEditingRangeProvider,
+      callHierarchyProvider: callHierarchyProvider,
+      semanticTokensProvider: semanticTokensProvider,
+      monikerProvider: monikerProvider,
+      workspaceSymbolProvider: workspaceSymbolProvider,
+      workspace: workspace,
+      experimental: experimental,
+    );
   }
 
   /// The server provides call hierarchy support.
@@ -25790,7 +27587,7 @@
         monikerProvider,
         workspaceSymbolProvider,
         workspace,
-        experimental
+        experimental,
       ]);
 
   @override
@@ -25799,16 +27596,18 @@
 
 class ServerCapabilitiesFileOperations implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ServerCapabilitiesFileOperations.canParse,
-      ServerCapabilitiesFileOperations.fromJson);
+    ServerCapabilitiesFileOperations.canParse,
+    ServerCapabilitiesFileOperations.fromJson,
+  );
 
-  ServerCapabilitiesFileOperations(
-      {this.didCreate,
-      this.willCreate,
-      this.didRename,
-      this.willRename,
-      this.didDelete,
-      this.willDelete});
+  ServerCapabilitiesFileOperations({
+    this.didCreate,
+    this.willCreate,
+    this.didRename,
+    this.willRename,
+    this.didDelete,
+    this.willDelete,
+  });
   static ServerCapabilitiesFileOperations fromJson(Map<String, Object?> json) {
     final didCreateJson = json['didCreate'];
     final didCreate = didCreateJson != null
@@ -25841,12 +27640,13 @@
             willDeleteJson as Map<String, Object?>)
         : null;
     return ServerCapabilitiesFileOperations(
-        didCreate: didCreate,
-        willCreate: willCreate,
-        didRename: didRename,
-        willRename: willRename,
-        didDelete: didDelete,
-        willDelete: willDelete);
+      didCreate: didCreate,
+      willCreate: willCreate,
+      didRename: didRename,
+      willRename: willRename,
+      didDelete: didDelete,
+      willDelete: willDelete,
+    );
   }
 
   /// The server is interested in receiving didCreateFiles notifications.
@@ -25991,7 +27791,13 @@
 
   @override
   int get hashCode => Object.hash(
-      didCreate, willCreate, didRename, willRename, didDelete, willDelete);
+        didCreate,
+        willCreate,
+        didRename,
+        willRename,
+        didDelete,
+        willDelete,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -25999,10 +27805,14 @@
 
 class ServerCapabilitiesWorkspace implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ServerCapabilitiesWorkspace.canParse,
-      ServerCapabilitiesWorkspace.fromJson);
+    ServerCapabilitiesWorkspace.canParse,
+    ServerCapabilitiesWorkspace.fromJson,
+  );
 
-  ServerCapabilitiesWorkspace({this.workspaceFolders, this.fileOperations});
+  ServerCapabilitiesWorkspace({
+    this.workspaceFolders,
+    this.fileOperations,
+  });
   static ServerCapabilitiesWorkspace fromJson(Map<String, Object?> json) {
     final workspaceFoldersJson = json['workspaceFolders'];
     final workspaceFolders = workspaceFoldersJson != null
@@ -26015,7 +27825,9 @@
             fileOperationsJson as Map<String, Object?>)
         : null;
     return ServerCapabilitiesWorkspace(
-        workspaceFolders: workspaceFolders, fileOperations: fileOperations);
+      workspaceFolders: workspaceFolders,
+      fileOperations: fileOperations,
+    );
   }
 
   /// The server is interested in file notifications/requests.
@@ -26084,23 +27896,32 @@
   }
 
   @override
-  int get hashCode => Object.hash(workspaceFolders, fileOperations);
+  int get hashCode => Object.hash(
+        workspaceFolders,
+        fileOperations,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class SetTraceParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SetTraceParams.canParse, SetTraceParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SetTraceParams.canParse,
+    SetTraceParams.fromJson,
+  );
 
-  SetTraceParams({required this.value});
+  SetTraceParams({
+    required this.value,
+  });
   static SetTraceParams fromJson(Map<String, Object?> json) {
     final valueJson = json['value'];
-    final value = const {'off', 'message', 'verbose'}.contains(valueJson)
+    final value = const {'off', 'messages', 'verbose'}.contains(valueJson)
         ? valueJson as String
-        : throw '''$valueJson was not one of ('off', 'message', 'verbose')''';
-    return SetTraceParams(value: value);
+        : throw '''$valueJson was not one of ('off', 'messages', 'verbose')''';
+    return SetTraceParams(
+      value: value,
+    );
   }
 
   /// The new value that should be assigned to the trace setting.
@@ -26125,9 +27946,9 @@
           reporter.reportError('must not be null');
           return false;
         }
-        if (!((value == 'off' || value == 'message' || value == 'verbose'))) {
+        if (!((value == 'off' || value == 'messages' || value == 'verbose'))) {
           reporter.reportError(
-              'must be one of the literals \'off\', \'message\', \'verbose\'');
+              'must be one of the literals \'off\', \'messages\', \'verbose\'');
           return false;
         }
       } finally {
@@ -26159,14 +27980,19 @@
 ///  @since 3.16.0
 class ShowDocumentClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ShowDocumentClientCapabilities.canParse,
-      ShowDocumentClientCapabilities.fromJson);
+    ShowDocumentClientCapabilities.canParse,
+    ShowDocumentClientCapabilities.fromJson,
+  );
 
-  ShowDocumentClientCapabilities({required this.support});
+  ShowDocumentClientCapabilities({
+    required this.support,
+  });
   static ShowDocumentClientCapabilities fromJson(Map<String, Object?> json) {
     final supportJson = json['support'];
     final support = supportJson as bool;
-    return ShowDocumentClientCapabilities(support: support);
+    return ShowDocumentClientCapabilities(
+      support: support,
+    );
   }
 
   /// The client has support for the show document request.
@@ -26224,11 +28050,17 @@
 /// Params to show a document.
 ///  @since 3.16.0
 class ShowDocumentParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ShowDocumentParams.canParse, ShowDocumentParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ShowDocumentParams.canParse,
+    ShowDocumentParams.fromJson,
+  );
 
-  ShowDocumentParams(
-      {required this.uri, this.external, this.takeFocus, this.selection});
+  ShowDocumentParams({
+    required this.uri,
+    this.external,
+    this.takeFocus,
+    this.selection,
+  });
   static ShowDocumentParams fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
@@ -26241,10 +28073,11 @@
         ? Range.fromJson(selectionJson as Map<String, Object?>)
         : null;
     return ShowDocumentParams(
-        uri: uri,
-        external: external,
-        takeFocus: takeFocus,
-        selection: selection);
+      uri: uri,
+      external: external,
+      takeFocus: takeFocus,
+      selection: selection,
+    );
   }
 
   /// Indicates to show the resource in an external program. To show for example
@@ -26351,7 +28184,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, external, takeFocus, selection);
+  int get hashCode => Object.hash(
+        uri,
+        external,
+        takeFocus,
+        selection,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -26360,14 +28198,20 @@
 /// The result of an show document request.
 ///  @since 3.16.0
 class ShowDocumentResult implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ShowDocumentResult.canParse, ShowDocumentResult.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ShowDocumentResult.canParse,
+    ShowDocumentResult.fromJson,
+  );
 
-  ShowDocumentResult({required this.success});
+  ShowDocumentResult({
+    required this.success,
+  });
   static ShowDocumentResult fromJson(Map<String, Object?> json) {
     final successJson = json['success'];
     final success = successJson as bool;
-    return ShowDocumentResult(success: success);
+    return ShowDocumentResult(
+      success: success,
+    );
   }
 
   /// A boolean indicating if the show was successful.
@@ -26423,16 +28267,24 @@
 }
 
 class ShowMessageParams implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(ShowMessageParams.canParse, ShowMessageParams.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    ShowMessageParams.canParse,
+    ShowMessageParams.fromJson,
+  );
 
-  ShowMessageParams({required this.type, required this.message});
+  ShowMessageParams({
+    required this.type,
+    required this.message,
+  });
   static ShowMessageParams fromJson(Map<String, Object?> json) {
     final typeJson = json['type'];
     final type = MessageType.fromJson(typeJson as int);
     final messageJson = json['message'];
     final message = messageJson as String;
-    return ShowMessageParams(type: type, message: message);
+    return ShowMessageParams(
+      type: type,
+      message: message,
+    );
   }
 
   /// The actual message.
@@ -26502,7 +28354,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(type, message);
+  int get hashCode => Object.hash(
+        type,
+        message,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -26511,10 +28366,13 @@
 /// Show message request client capabilities
 class ShowMessageRequestClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ShowMessageRequestClientCapabilities.canParse,
-      ShowMessageRequestClientCapabilities.fromJson);
+    ShowMessageRequestClientCapabilities.canParse,
+    ShowMessageRequestClientCapabilities.fromJson,
+  );
 
-  ShowMessageRequestClientCapabilities({this.messageActionItem});
+  ShowMessageRequestClientCapabilities({
+    this.messageActionItem,
+  });
   static ShowMessageRequestClientCapabilities fromJson(
       Map<String, Object?> json) {
     final messageActionItemJson = json['messageActionItem'];
@@ -26523,7 +28381,8 @@
             messageActionItemJson as Map<String, Object?>)
         : null;
     return ShowMessageRequestClientCapabilities(
-        messageActionItem: messageActionItem);
+      messageActionItem: messageActionItem,
+    );
   }
 
   /// Capabilities specific to the `MessageActionItem` type.
@@ -26580,18 +28439,21 @@
 class ShowMessageRequestClientCapabilitiesMessageActionItem
     implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ShowMessageRequestClientCapabilitiesMessageActionItem.canParse,
-      ShowMessageRequestClientCapabilitiesMessageActionItem.fromJson);
+    ShowMessageRequestClientCapabilitiesMessageActionItem.canParse,
+    ShowMessageRequestClientCapabilitiesMessageActionItem.fromJson,
+  );
 
-  ShowMessageRequestClientCapabilitiesMessageActionItem(
-      {this.additionalPropertiesSupport});
+  ShowMessageRequestClientCapabilitiesMessageActionItem({
+    this.additionalPropertiesSupport,
+  });
   static ShowMessageRequestClientCapabilitiesMessageActionItem fromJson(
       Map<String, Object?> json) {
     final additionalPropertiesSupportJson = json['additionalPropertiesSupport'];
     final additionalPropertiesSupport =
         additionalPropertiesSupportJson as bool?;
     return ShowMessageRequestClientCapabilitiesMessageActionItem(
-        additionalPropertiesSupport: additionalPropertiesSupport);
+      additionalPropertiesSupport: additionalPropertiesSupport,
+    );
   }
 
   /// Whether the client supports additional attributes which are preserved and
@@ -26647,10 +28509,15 @@
 
 class ShowMessageRequestParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      ShowMessageRequestParams.canParse, ShowMessageRequestParams.fromJson);
+    ShowMessageRequestParams.canParse,
+    ShowMessageRequestParams.fromJson,
+  );
 
-  ShowMessageRequestParams(
-      {required this.type, required this.message, this.actions});
+  ShowMessageRequestParams({
+    required this.type,
+    required this.message,
+    this.actions,
+  });
   static ShowMessageRequestParams fromJson(Map<String, Object?> json) {
     final typeJson = json['type'];
     final type = MessageType.fromJson(typeJson as int);
@@ -26662,7 +28529,10 @@
             (item) => MessageActionItem.fromJson(item as Map<String, Object?>))
         .toList();
     return ShowMessageRequestParams(
-        type: type, message: message, actions: actions);
+      type: type,
+      message: message,
+      actions: actions,
+    );
   }
 
   /// The message action items to present.
@@ -26756,7 +28626,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(type, message, lspHashCode(actions));
+  int get hashCode => Object.hash(
+        type,
+        message,
+        lspHashCode(actions),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -26765,11 +28639,16 @@
 /// Signature help represents the signature of something callable. There can be
 /// multiple signature but only one active and only one active parameter.
 class SignatureHelp implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SignatureHelp.canParse, SignatureHelp.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SignatureHelp.canParse,
+    SignatureHelp.fromJson,
+  );
 
-  SignatureHelp(
-      {required this.signatures, this.activeSignature, this.activeParameter});
+  SignatureHelp({
+    required this.signatures,
+    this.activeSignature,
+    this.activeParameter,
+  });
   static SignatureHelp fromJson(Map<String, Object?> json) {
     final signaturesJson = json['signatures'];
     final signatures = (signaturesJson as List<Object?>)
@@ -26781,9 +28660,10 @@
     final activeParameterJson = json['activeParameter'];
     final activeParameter = activeParameterJson as int?;
     return SignatureHelp(
-        signatures: signatures,
-        activeSignature: activeSignature,
-        activeParameter: activeParameter);
+      signatures: signatures,
+      activeSignature: activeSignature,
+      activeParameter: activeParameter,
+    );
   }
 
   /// The active parameter of the active signature. If omitted or the value lies
@@ -26795,8 +28675,8 @@
   final int? activeParameter;
 
   /// The active signature. If omitted or the value lies outside the range of
-  /// `signatures` the value defaults to zero or is ignore if the
-  /// `SignatureHelp` as no signatures.
+  /// `signatures` the value defaults to zero or is ignored if the
+  /// `SignatureHelp` has no signatures.
   ///
   /// Whenever possible implementors should make an active decision about the
   /// active signature and shouldn't rely on a default value.
@@ -26883,8 +28763,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(signatures), activeSignature, activeParameter);
+  int get hashCode => Object.hash(
+        lspHashCode(signatures),
+        activeSignature,
+        activeParameter,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -26892,13 +28775,15 @@
 
 class SignatureHelpClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureHelpClientCapabilities.canParse,
-      SignatureHelpClientCapabilities.fromJson);
+    SignatureHelpClientCapabilities.canParse,
+    SignatureHelpClientCapabilities.fromJson,
+  );
 
-  SignatureHelpClientCapabilities(
-      {this.dynamicRegistration,
-      this.signatureInformation,
-      this.contextSupport});
+  SignatureHelpClientCapabilities({
+    this.dynamicRegistration,
+    this.signatureInformation,
+    this.contextSupport,
+  });
   static SignatureHelpClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -26910,9 +28795,10 @@
     final contextSupportJson = json['contextSupport'];
     final contextSupport = contextSupportJson as bool?;
     return SignatureHelpClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        signatureInformation: signatureInformation,
-        contextSupport: contextSupport);
+      dynamicRegistration: dynamicRegistration,
+      signatureInformation: signatureInformation,
+      contextSupport: contextSupport,
+    );
   }
 
   /// The client supports to send additional context information for a
@@ -26999,8 +28885,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(dynamicRegistration, signatureInformation, contextSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        signatureInformation,
+        contextSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -27009,17 +28898,20 @@
 class SignatureHelpClientCapabilitiesParameterInformation
     implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureHelpClientCapabilitiesParameterInformation.canParse,
-      SignatureHelpClientCapabilitiesParameterInformation.fromJson);
+    SignatureHelpClientCapabilitiesParameterInformation.canParse,
+    SignatureHelpClientCapabilitiesParameterInformation.fromJson,
+  );
 
-  SignatureHelpClientCapabilitiesParameterInformation(
-      {this.labelOffsetSupport});
+  SignatureHelpClientCapabilitiesParameterInformation({
+    this.labelOffsetSupport,
+  });
   static SignatureHelpClientCapabilitiesParameterInformation fromJson(
       Map<String, Object?> json) {
     final labelOffsetSupportJson = json['labelOffsetSupport'];
     final labelOffsetSupport = labelOffsetSupportJson as bool?;
     return SignatureHelpClientCapabilitiesParameterInformation(
-        labelOffsetSupport: labelOffsetSupport);
+      labelOffsetSupport: labelOffsetSupport,
+    );
   }
 
   /// The client supports processing label offsets instead of a simple label
@@ -27075,13 +28967,15 @@
 class SignatureHelpClientCapabilitiesSignatureInformation
     implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureHelpClientCapabilitiesSignatureInformation.canParse,
-      SignatureHelpClientCapabilitiesSignatureInformation.fromJson);
+    SignatureHelpClientCapabilitiesSignatureInformation.canParse,
+    SignatureHelpClientCapabilitiesSignatureInformation.fromJson,
+  );
 
-  SignatureHelpClientCapabilitiesSignatureInformation(
-      {this.documentationFormat,
-      this.parameterInformation,
-      this.activeParameterSupport});
+  SignatureHelpClientCapabilitiesSignatureInformation({
+    this.documentationFormat,
+    this.parameterInformation,
+    this.activeParameterSupport,
+  });
   static SignatureHelpClientCapabilitiesSignatureInformation fromJson(
       Map<String, Object?> json) {
     final documentationFormatJson = json['documentationFormat'];
@@ -27096,9 +28990,10 @@
     final activeParameterSupportJson = json['activeParameterSupport'];
     final activeParameterSupport = activeParameterSupportJson as bool?;
     return SignatureHelpClientCapabilitiesSignatureInformation(
-        documentationFormat: documentationFormat,
-        parameterInformation: parameterInformation,
-        activeParameterSupport: activeParameterSupport);
+      documentationFormat: documentationFormat,
+      parameterInformation: parameterInformation,
+      activeParameterSupport: activeParameterSupport,
+    );
   }
 
   /// The client supports the `activeParameter` property on
@@ -27106,8 +29001,8 @@
   ///  @since 3.16.0
   final bool? activeParameterSupport;
 
-  /// Client supports the follow content formats for the documentation property.
-  /// The order describes the preferred format of the client.
+  /// Client supports the following content formats for the documentation
+  /// property. The order describes the preferred format of the client.
   final List<MarkupKind>? documentationFormat;
 
   /// Client capabilities specific to parameter information.
@@ -27191,8 +29086,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(documentationFormat),
-      parameterInformation, activeParameterSupport);
+  int get hashCode => Object.hash(
+        lspHashCode(documentationFormat),
+        parameterInformation,
+        activeParameterSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -27203,13 +29101,16 @@
 ///  @since 3.15.0
 class SignatureHelpContext implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureHelpContext.canParse, SignatureHelpContext.fromJson);
+    SignatureHelpContext.canParse,
+    SignatureHelpContext.fromJson,
+  );
 
-  SignatureHelpContext(
-      {required this.triggerKind,
-      this.triggerCharacter,
-      required this.isRetrigger,
-      this.activeSignatureHelp});
+  SignatureHelpContext({
+    required this.triggerKind,
+    this.triggerCharacter,
+    required this.isRetrigger,
+    this.activeSignatureHelp,
+  });
   static SignatureHelpContext fromJson(Map<String, Object?> json) {
     final triggerKindJson = json['triggerKind'];
     final triggerKind =
@@ -27224,10 +29125,11 @@
             activeSignatureHelpJson as Map<String, Object?>)
         : null;
     return SignatureHelpContext(
-        triggerKind: triggerKind,
-        triggerCharacter: triggerCharacter,
-        isRetrigger: isRetrigger,
-        activeSignatureHelp: activeSignatureHelp);
+      triggerKind: triggerKind,
+      triggerCharacter: triggerCharacter,
+      isRetrigger: isRetrigger,
+      activeSignatureHelp: activeSignatureHelp,
+    );
   }
 
   /// The currently active `SignatureHelp`.
@@ -27346,7 +29248,11 @@
 
   @override
   int get hashCode => Object.hash(
-      triggerKind, triggerCharacter, isRetrigger, activeSignatureHelp);
+        triggerKind,
+        triggerCharacter,
+        isRetrigger,
+        activeSignatureHelp,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -27354,12 +29260,15 @@
 
 class SignatureHelpOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureHelpOptions.canParse, SignatureHelpOptions.fromJson);
+    SignatureHelpOptions.canParse,
+    SignatureHelpOptions.fromJson,
+  );
 
-  SignatureHelpOptions(
-      {this.triggerCharacters,
-      this.retriggerCharacters,
-      this.workDoneProgress});
+  SignatureHelpOptions({
+    this.triggerCharacters,
+    this.retriggerCharacters,
+    this.workDoneProgress,
+  });
   static SignatureHelpOptions fromJson(Map<String, Object?> json) {
     if (SignatureHelpRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return SignatureHelpRegistrationOptions.fromJson(json);
@@ -27375,9 +29284,10 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return SignatureHelpOptions(
-        triggerCharacters: triggerCharacters,
-        retriggerCharacters: retriggerCharacters,
-        workDoneProgress: workDoneProgress);
+      triggerCharacters: triggerCharacters,
+      retriggerCharacters: retriggerCharacters,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// List of characters that re-trigger signature help.
@@ -27463,8 +29373,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(triggerCharacters),
-      lspHashCode(retriggerCharacters), workDoneProgress);
+  int get hashCode => Object.hash(
+        lspHashCode(triggerCharacters),
+        lspHashCode(retriggerCharacters),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -27473,13 +29386,16 @@
 class SignatureHelpParams
     implements TextDocumentPositionParams, WorkDoneProgressParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureHelpParams.canParse, SignatureHelpParams.fromJson);
+    SignatureHelpParams.canParse,
+    SignatureHelpParams.fromJson,
+  );
 
-  SignatureHelpParams(
-      {this.context,
-      required this.textDocument,
-      required this.position,
-      this.workDoneToken});
+  SignatureHelpParams({
+    this.context,
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+  });
   static SignatureHelpParams fromJson(Map<String, Object?> json) {
     final contextJson = json['context'];
     final context = contextJson != null
@@ -27499,10 +29415,11 @@
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
     return SignatureHelpParams(
-        context: context,
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken);
+      context: context,
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// The signature help context. This is only available if the client specifies
@@ -27614,8 +29531,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(context, textDocument, position, workDoneToken);
+  int get hashCode => Object.hash(
+        context,
+        textDocument,
+        position,
+        workDoneToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -27627,14 +29548,16 @@
         SignatureHelpOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureHelpRegistrationOptions.canParse,
-      SignatureHelpRegistrationOptions.fromJson);
+    SignatureHelpRegistrationOptions.canParse,
+    SignatureHelpRegistrationOptions.fromJson,
+  );
 
-  SignatureHelpRegistrationOptions(
-      {this.documentSelector,
-      this.triggerCharacters,
-      this.retriggerCharacters,
-      this.workDoneProgress});
+  SignatureHelpRegistrationOptions({
+    this.documentSelector,
+    this.triggerCharacters,
+    this.retriggerCharacters,
+    this.workDoneProgress,
+  });
   static SignatureHelpRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -27651,10 +29574,11 @@
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return SignatureHelpRegistrationOptions(
-        documentSelector: documentSelector,
-        triggerCharacters: triggerCharacters,
-        retriggerCharacters: retriggerCharacters,
-        workDoneProgress: workDoneProgress);
+      documentSelector: documentSelector,
+      triggerCharacters: triggerCharacters,
+      retriggerCharacters: retriggerCharacters,
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -27765,10 +29689,11 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(documentSelector),
-      lspHashCode(triggerCharacters),
-      lspHashCode(retriggerCharacters),
-      workDoneProgress);
+        lspHashCode(documentSelector),
+        lspHashCode(triggerCharacters),
+        lspHashCode(retriggerCharacters),
+        workDoneProgress,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -27812,13 +29737,16 @@
 /// label, like a function-name, a doc-comment, and a set of parameters.
 class SignatureInformation implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      SignatureInformation.canParse, SignatureInformation.fromJson);
+    SignatureInformation.canParse,
+    SignatureInformation.fromJson,
+  );
 
-  SignatureInformation(
-      {required this.label,
-      this.documentation,
-      this.parameters,
-      this.activeParameter});
+  SignatureInformation({
+    required this.label,
+    this.documentation,
+    this.parameters,
+    this.activeParameter,
+  });
   static SignatureInformation fromJson(Map<String, Object?> json) {
     final labelJson = json['label'];
     final label = labelJson as String;
@@ -27839,10 +29767,11 @@
     final activeParameterJson = json['activeParameter'];
     final activeParameter = activeParameterJson as int?;
     return SignatureInformation(
-        label: label,
-        documentation: documentation,
-        parameters: parameters,
-        activeParameter: activeParameter);
+      label: label,
+      documentation: documentation,
+      parameters: parameters,
+      activeParameter: activeParameter,
+    );
   }
 
   /// The index of the active parameter.
@@ -27956,7 +29885,11 @@
 
   @override
   int get hashCode => Object.hash(
-      label, documentation, lspHashCode(parameters), activeParameter);
+        label,
+        documentation,
+        lspHashCode(parameters),
+        activeParameter,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -27965,9 +29898,13 @@
 /// Static registration options to be returned in the initialize request.
 class StaticRegistrationOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      StaticRegistrationOptions.canParse, StaticRegistrationOptions.fromJson);
+    StaticRegistrationOptions.canParse,
+    StaticRegistrationOptions.fromJson,
+  );
 
-  StaticRegistrationOptions({this.id});
+  StaticRegistrationOptions({
+    this.id,
+  });
   static StaticRegistrationOptions fromJson(Map<String, Object?> json) {
     if (DeclarationRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return DeclarationRegistrationOptions.fromJson(json);
@@ -27999,7 +29936,9 @@
     }
     final idJson = json['id'];
     final id = idJson as String?;
-    return StaticRegistrationOptions(id: id);
+    return StaticRegistrationOptions(
+      id: id,
+    );
   }
 
   /// The id used to register the request. The id can be used to deregister the
@@ -28052,16 +29991,19 @@
 /// Represents information about programming constructs like variables, classes,
 /// interfaces etc.
 class SymbolInformation implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(SymbolInformation.canParse, SymbolInformation.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    SymbolInformation.canParse,
+    SymbolInformation.fromJson,
+  );
 
-  SymbolInformation(
-      {required this.name,
-      required this.kind,
-      this.tags,
-      this.deprecated,
-      required this.location,
-      this.containerName});
+  SymbolInformation({
+    required this.name,
+    required this.kind,
+    this.tags,
+    this.deprecated,
+    required this.location,
+    this.containerName,
+  });
   static SymbolInformation fromJson(Map<String, Object?> json) {
     final nameJson = json['name'];
     final name = nameJson as String;
@@ -28078,12 +30020,13 @@
     final containerNameJson = json['containerName'];
     final containerName = containerNameJson as String?;
     return SymbolInformation(
-        name: name,
-        kind: kind,
-        tags: tags,
-        deprecated: deprecated,
-        location: location,
-        containerName: containerName);
+      name: name,
+      kind: kind,
+      tags: tags,
+      deprecated: deprecated,
+      location: location,
+      containerName: containerName,
+    );
   }
 
   /// The name of the symbol containing this symbol. This information is for
@@ -28113,7 +30056,7 @@
   /// The name of this symbol.
   final String name;
 
-  /// Tags for this completion item.
+  /// Tags for this symbol.
   ///  @since 3.16.0
   final List<SymbolTag>? tags;
 
@@ -28245,7 +30188,13 @@
 
   @override
   int get hashCode => Object.hash(
-      name, kind, lspHashCode(tags), deprecated, location, containerName);
+        name,
+        kind,
+        lspHashCode(tags),
+        deprecated,
+        location,
+        containerName,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -28301,7 +30250,7 @@
 }
 
 /// Symbol tags are extra annotations that tweak the rendering of a symbol.
-///  @since 3.16
+///  @since 3.16.0
 class SymbolTag {
   const SymbolTag(this._value);
   const SymbolTag.fromJson(this._value);
@@ -28331,11 +30280,14 @@
 class TextDocumentChangeRegistrationOptions
     implements TextDocumentRegistrationOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentChangeRegistrationOptions.canParse,
-      TextDocumentChangeRegistrationOptions.fromJson);
+    TextDocumentChangeRegistrationOptions.canParse,
+    TextDocumentChangeRegistrationOptions.fromJson,
+  );
 
-  TextDocumentChangeRegistrationOptions(
-      {required this.syncKind, this.documentSelector});
+  TextDocumentChangeRegistrationOptions({
+    required this.syncKind,
+    this.documentSelector,
+  });
   static TextDocumentChangeRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final syncKindJson = json['syncKind'];
@@ -28345,7 +30297,9 @@
         ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     return TextDocumentChangeRegistrationOptions(
-        syncKind: syncKind, documentSelector: documentSelector);
+      syncKind: syncKind,
+      documentSelector: documentSelector,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -28421,7 +30375,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(syncKind, lspHashCode(documentSelector));
+  int get hashCode => Object.hash(
+        syncKind,
+        lspHashCode(documentSelector),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -28430,36 +30387,38 @@
 /// Text document specific client capabilities.
 class TextDocumentClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentClientCapabilities.canParse,
-      TextDocumentClientCapabilities.fromJson);
+    TextDocumentClientCapabilities.canParse,
+    TextDocumentClientCapabilities.fromJson,
+  );
 
-  TextDocumentClientCapabilities(
-      {this.synchronization,
-      this.completion,
-      this.hover,
-      this.signatureHelp,
-      this.declaration,
-      this.definition,
-      this.typeDefinition,
-      this.implementation,
-      this.references,
-      this.documentHighlight,
-      this.documentSymbol,
-      this.codeAction,
-      this.codeLens,
-      this.documentLink,
-      this.colorProvider,
-      this.formatting,
-      this.rangeFormatting,
-      this.onTypeFormatting,
-      this.rename,
-      this.publishDiagnostics,
-      this.foldingRange,
-      this.selectionRange,
-      this.linkedEditingRange,
-      this.callHierarchy,
-      this.semanticTokens,
-      this.moniker});
+  TextDocumentClientCapabilities({
+    this.synchronization,
+    this.completion,
+    this.hover,
+    this.signatureHelp,
+    this.declaration,
+    this.definition,
+    this.typeDefinition,
+    this.implementation,
+    this.references,
+    this.documentHighlight,
+    this.documentSymbol,
+    this.codeAction,
+    this.codeLens,
+    this.documentLink,
+    this.colorProvider,
+    this.formatting,
+    this.rangeFormatting,
+    this.onTypeFormatting,
+    this.rename,
+    this.publishDiagnostics,
+    this.foldingRange,
+    this.selectionRange,
+    this.linkedEditingRange,
+    this.callHierarchy,
+    this.semanticTokens,
+    this.moniker,
+  });
   static TextDocumentClientCapabilities fromJson(Map<String, Object?> json) {
     final synchronizationJson = json['synchronization'];
     final synchronization = synchronizationJson != null
@@ -28590,32 +30549,33 @@
             monikerJson as Map<String, Object?>)
         : null;
     return TextDocumentClientCapabilities(
-        synchronization: synchronization,
-        completion: completion,
-        hover: hover,
-        signatureHelp: signatureHelp,
-        declaration: declaration,
-        definition: definition,
-        typeDefinition: typeDefinition,
-        implementation: implementation,
-        references: references,
-        documentHighlight: documentHighlight,
-        documentSymbol: documentSymbol,
-        codeAction: codeAction,
-        codeLens: codeLens,
-        documentLink: documentLink,
-        colorProvider: colorProvider,
-        formatting: formatting,
-        rangeFormatting: rangeFormatting,
-        onTypeFormatting: onTypeFormatting,
-        rename: rename,
-        publishDiagnostics: publishDiagnostics,
-        foldingRange: foldingRange,
-        selectionRange: selectionRange,
-        linkedEditingRange: linkedEditingRange,
-        callHierarchy: callHierarchy,
-        semanticTokens: semanticTokens,
-        moniker: moniker);
+      synchronization: synchronization,
+      completion: completion,
+      hover: hover,
+      signatureHelp: signatureHelp,
+      declaration: declaration,
+      definition: definition,
+      typeDefinition: typeDefinition,
+      implementation: implementation,
+      references: references,
+      documentHighlight: documentHighlight,
+      documentSymbol: documentSymbol,
+      codeAction: codeAction,
+      codeLens: codeLens,
+      documentLink: documentLink,
+      colorProvider: colorProvider,
+      formatting: formatting,
+      rangeFormatting: rangeFormatting,
+      onTypeFormatting: onTypeFormatting,
+      rename: rename,
+      publishDiagnostics: publishDiagnostics,
+      foldingRange: foldingRange,
+      selectionRange: selectionRange,
+      linkedEditingRange: linkedEditingRange,
+      callHierarchy: callHierarchy,
+      semanticTokens: semanticTokens,
+      moniker: moniker,
+    );
   }
 
   /// Capabilities specific to the various call hierarchy requests.
@@ -28674,8 +30634,7 @@
   ///  @since 3.16.0
   final MonikerClientCapabilities? moniker;
 
-  /// request. Capabilities specific to the `textDocument/onTypeFormatting`
-  /// request.
+  /// Capabilities specific to the `textDocument/onTypeFormatting` request.
   final DocumentOnTypeFormattingClientCapabilities? onTypeFormatting;
 
   /// Capabilities specific to the `textDocument/publishDiagnostics`
@@ -29181,7 +31140,7 @@
         linkedEditingRange,
         callHierarchy,
         semanticTokens,
-        moniker
+        moniker,
       ]);
 
   @override
@@ -29190,11 +31149,15 @@
 
 class TextDocumentContentChangeEvent1 implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentContentChangeEvent1.canParse,
-      TextDocumentContentChangeEvent1.fromJson);
+    TextDocumentContentChangeEvent1.canParse,
+    TextDocumentContentChangeEvent1.fromJson,
+  );
 
-  TextDocumentContentChangeEvent1(
-      {required this.range, this.rangeLength, required this.text});
+  TextDocumentContentChangeEvent1({
+    required this.range,
+    this.rangeLength,
+    required this.text,
+  });
   static TextDocumentContentChangeEvent1 fromJson(Map<String, Object?> json) {
     final rangeJson = json['range'];
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
@@ -29203,7 +31166,10 @@
     final textJson = json['text'];
     final text = textJson as String;
     return TextDocumentContentChangeEvent1(
-        range: range, rangeLength: rangeLength, text: text);
+      range: range,
+      rangeLength: rangeLength,
+      text: text,
+    );
   }
 
   /// The range of the document that changed.
@@ -29294,7 +31260,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, rangeLength, text);
+  int get hashCode => Object.hash(
+        range,
+        rangeLength,
+        text,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -29302,14 +31272,19 @@
 
 class TextDocumentContentChangeEvent2 implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentContentChangeEvent2.canParse,
-      TextDocumentContentChangeEvent2.fromJson);
+    TextDocumentContentChangeEvent2.canParse,
+    TextDocumentContentChangeEvent2.fromJson,
+  );
 
-  TextDocumentContentChangeEvent2({required this.text});
+  TextDocumentContentChangeEvent2({
+    required this.text,
+  });
   static TextDocumentContentChangeEvent2 fromJson(Map<String, Object?> json) {
     final textJson = json['text'];
     final text = textJson as String;
-    return TextDocumentContentChangeEvent2(text: text);
+    return TextDocumentContentChangeEvent2(
+      text: text,
+    );
   }
 
   /// The new text of the whole document.
@@ -29365,10 +31340,15 @@
 }
 
 class TextDocumentEdit implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(TextDocumentEdit.canParse, TextDocumentEdit.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    TextDocumentEdit.canParse,
+    TextDocumentEdit.fromJson,
+  );
 
-  TextDocumentEdit({required this.textDocument, required this.edits});
+  TextDocumentEdit({
+    required this.textDocument,
+    required this.edits,
+  });
   static TextDocumentEdit fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = OptionalVersionedTextDocumentIdentifier.fromJson(
@@ -29386,7 +31366,10 @@
                         TextEdit.fromJson(item as Map<String, Object?>))
                     : (throw '''$item was not one of (SnippetTextEdit, AnnotatedTextEdit, TextEdit)'''))))
         .toList();
-    return TextDocumentEdit(textDocument: textDocument, edits: edits);
+    return TextDocumentEdit(
+      textDocument: textDocument,
+      edits: edits,
+    );
   }
 
   /// The edits to be applied.
@@ -29472,7 +31455,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, lspHashCode(edits));
+  int get hashCode => Object.hash(
+        textDocument,
+        lspHashCode(edits),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -29480,9 +31466,13 @@
 
 class TextDocumentIdentifier implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentIdentifier.canParse, TextDocumentIdentifier.fromJson);
+    TextDocumentIdentifier.canParse,
+    TextDocumentIdentifier.fromJson,
+  );
 
-  TextDocumentIdentifier({required this.uri});
+  TextDocumentIdentifier({
+    required this.uri,
+  });
   static TextDocumentIdentifier fromJson(Map<String, Object?> json) {
     if (VersionedTextDocumentIdentifier.canParse(json, nullLspJsonReporter)) {
       return VersionedTextDocumentIdentifier.fromJson(json);
@@ -29493,7 +31483,9 @@
     }
     final uriJson = json['uri'];
     final uri = uriJson as String;
-    return TextDocumentIdentifier(uri: uri);
+    return TextDocumentIdentifier(
+      uri: uri,
+    );
   }
 
   /// The text document's URI.
@@ -29549,14 +31541,17 @@
 }
 
 class TextDocumentItem implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(TextDocumentItem.canParse, TextDocumentItem.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    TextDocumentItem.canParse,
+    TextDocumentItem.fromJson,
+  );
 
-  TextDocumentItem(
-      {required this.uri,
-      required this.languageId,
-      required this.version,
-      required this.text});
+  TextDocumentItem({
+    required this.uri,
+    required this.languageId,
+    required this.version,
+    required this.text,
+  });
   static TextDocumentItem fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
@@ -29567,7 +31562,11 @@
     final textJson = json['text'];
     final text = textJson as String;
     return TextDocumentItem(
-        uri: uri, languageId: languageId, version: version, text: text);
+      uri: uri,
+      languageId: languageId,
+      version: version,
+      text: text,
+    );
   }
 
   /// The text document's language identifier.
@@ -29686,7 +31685,12 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, languageId, version, text);
+  int get hashCode => Object.hash(
+        uri,
+        languageId,
+        version,
+        text,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -29694,10 +31698,14 @@
 
 class TextDocumentPositionParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentPositionParams.canParse, TextDocumentPositionParams.fromJson);
+    TextDocumentPositionParams.canParse,
+    TextDocumentPositionParams.fromJson,
+  );
 
-  TextDocumentPositionParams(
-      {required this.textDocument, required this.position});
+  TextDocumentPositionParams({
+    required this.textDocument,
+    required this.position,
+  });
   static TextDocumentPositionParams fromJson(Map<String, Object?> json) {
     if (CompletionParams.canParse(json, nullLspJsonReporter)) {
       return CompletionParams.fromJson(json);
@@ -29750,7 +31758,9 @@
     final positionJson = json['position'];
     final position = Position.fromJson(positionJson as Map<String, Object?>);
     return TextDocumentPositionParams(
-        textDocument: textDocument, position: position);
+      textDocument: textDocument,
+      position: position,
+    );
   }
 
   /// The position inside the text document.
@@ -29823,7 +31833,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, position);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -29832,10 +31845,13 @@
 /// General text document registration options.
 class TextDocumentRegistrationOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentRegistrationOptions.canParse,
-      TextDocumentRegistrationOptions.fromJson);
+    TextDocumentRegistrationOptions.canParse,
+    TextDocumentRegistrationOptions.fromJson,
+  );
 
-  TextDocumentRegistrationOptions({this.documentSelector});
+  TextDocumentRegistrationOptions({
+    this.documentSelector,
+  });
   static TextDocumentRegistrationOptions fromJson(Map<String, Object?> json) {
     if (TextDocumentChangeRegistrationOptions.canParse(
         json, nullLspJsonReporter)) {
@@ -29926,7 +31942,9 @@
     final documentSelector = (documentSelectorJson as List<Object?>?)
         ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
-    return TextDocumentRegistrationOptions(documentSelector: documentSelector);
+    return TextDocumentRegistrationOptions(
+      documentSelector: documentSelector,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -30019,11 +32037,14 @@
 class TextDocumentSaveRegistrationOptions
     implements TextDocumentRegistrationOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentSaveRegistrationOptions.canParse,
-      TextDocumentSaveRegistrationOptions.fromJson);
+    TextDocumentSaveRegistrationOptions.canParse,
+    TextDocumentSaveRegistrationOptions.fromJson,
+  );
 
-  TextDocumentSaveRegistrationOptions(
-      {this.includeText, this.documentSelector});
+  TextDocumentSaveRegistrationOptions({
+    this.includeText,
+    this.documentSelector,
+  });
   static TextDocumentSaveRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final includeTextJson = json['includeText'];
@@ -30033,7 +32054,9 @@
         ?.map((item) => DocumentFilter.fromJson(item as Map<String, Object?>))
         .toList();
     return TextDocumentSaveRegistrationOptions(
-        includeText: includeText, documentSelector: documentSelector);
+      includeText: includeText,
+      documentSelector: documentSelector,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -30102,7 +32125,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(includeText, lspHashCode(documentSelector));
+  int get hashCode => Object.hash(
+        includeText,
+        lspHashCode(documentSelector),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -30110,14 +32136,16 @@
 
 class TextDocumentSyncClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentSyncClientCapabilities.canParse,
-      TextDocumentSyncClientCapabilities.fromJson);
+    TextDocumentSyncClientCapabilities.canParse,
+    TextDocumentSyncClientCapabilities.fromJson,
+  );
 
-  TextDocumentSyncClientCapabilities(
-      {this.dynamicRegistration,
-      this.willSave,
-      this.willSaveWaitUntil,
-      this.didSave});
+  TextDocumentSyncClientCapabilities({
+    this.dynamicRegistration,
+    this.willSave,
+    this.willSaveWaitUntil,
+    this.didSave,
+  });
   static TextDocumentSyncClientCapabilities fromJson(
       Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
@@ -30129,10 +32157,11 @@
     final didSaveJson = json['didSave'];
     final didSave = didSaveJson as bool?;
     return TextDocumentSyncClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        willSave: willSave,
-        willSaveWaitUntil: willSaveWaitUntil,
-        didSave: didSave);
+      dynamicRegistration: dynamicRegistration,
+      willSave: willSave,
+      willSaveWaitUntil: willSaveWaitUntil,
+      didSave: didSave,
+    );
   }
 
   /// The client supports did save notifications.
@@ -30230,8 +32259,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(dynamicRegistration, willSave, willSaveWaitUntil, didSave);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        willSave,
+        willSaveWaitUntil,
+        didSave,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -30272,14 +32305,17 @@
 
 class TextDocumentSyncOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TextDocumentSyncOptions.canParse, TextDocumentSyncOptions.fromJson);
+    TextDocumentSyncOptions.canParse,
+    TextDocumentSyncOptions.fromJson,
+  );
 
-  TextDocumentSyncOptions(
-      {this.openClose,
-      this.change,
-      this.willSave,
-      this.willSaveWaitUntil,
-      this.save});
+  TextDocumentSyncOptions({
+    this.openClose,
+    this.change,
+    this.willSave,
+    this.willSaveWaitUntil,
+    this.save,
+  });
   static TextDocumentSyncOptions fromJson(Map<String, Object?> json) {
     final openCloseJson = json['openClose'];
     final openClose = openCloseJson as bool?;
@@ -30301,11 +32337,12 @@
                     SaveOptions.fromJson(saveJson as Map<String, Object?>))
                 : (throw '''$saveJson was not one of (bool, SaveOptions)''')));
     return TextDocumentSyncOptions(
-        openClose: openClose,
-        change: change,
-        willSave: willSave,
-        willSaveWaitUntil: willSaveWaitUntil,
-        save: save);
+      openClose: openClose,
+      change: change,
+      willSave: willSave,
+      willSaveWaitUntil: willSaveWaitUntil,
+      save: save,
+    );
   }
 
   /// Change notifications are sent to the server. See
@@ -30426,18 +32463,28 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(openClose, change, willSave, willSaveWaitUntil, save);
+  int get hashCode => Object.hash(
+        openClose,
+        change,
+        willSave,
+        willSaveWaitUntil,
+        save,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class TextEdit implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(TextEdit.canParse, TextEdit.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    TextEdit.canParse,
+    TextEdit.fromJson,
+  );
 
-  TextEdit({required this.range, required this.newText});
+  TextEdit({
+    required this.range,
+    required this.newText,
+  });
   static TextEdit fromJson(Map<String, Object?> json) {
     if (AnnotatedTextEdit.canParse(json, nullLspJsonReporter)) {
       return AnnotatedTextEdit.fromJson(json);
@@ -30449,7 +32496,10 @@
     final range = Range.fromJson(rangeJson as Map<String, Object?>);
     final newTextJson = json['newText'];
     final newText = newTextJson as String;
-    return TextEdit(range: range, newText: newText);
+    return TextEdit(
+      range: range,
+      newText: newText,
+    );
   }
 
   /// The string to be inserted. For delete operations use an empty string.
@@ -30520,7 +32570,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(range, newText);
+  int get hashCode => Object.hash(
+        range,
+        newText,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -30551,18 +32604,23 @@
 
 class TypeDefinitionClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TypeDefinitionClientCapabilities.canParse,
-      TypeDefinitionClientCapabilities.fromJson);
+    TypeDefinitionClientCapabilities.canParse,
+    TypeDefinitionClientCapabilities.fromJson,
+  );
 
-  TypeDefinitionClientCapabilities(
-      {this.dynamicRegistration, this.linkSupport});
+  TypeDefinitionClientCapabilities({
+    this.dynamicRegistration,
+    this.linkSupport,
+  });
   static TypeDefinitionClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
     final linkSupportJson = json['linkSupport'];
     final linkSupport = linkSupportJson as bool?;
     return TypeDefinitionClientCapabilities(
-        dynamicRegistration: dynamicRegistration, linkSupport: linkSupport);
+      dynamicRegistration: dynamicRegistration,
+      linkSupport: linkSupport,
+    );
   }
 
   /// Whether implementation supports dynamic registration. If this is set to
@@ -30626,7 +32684,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, linkSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        linkSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -30634,16 +32695,22 @@
 
 class TypeDefinitionOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TypeDefinitionOptions.canParse, TypeDefinitionOptions.fromJson);
+    TypeDefinitionOptions.canParse,
+    TypeDefinitionOptions.fromJson,
+  );
 
-  TypeDefinitionOptions({this.workDoneProgress});
+  TypeDefinitionOptions({
+    this.workDoneProgress,
+  });
   static TypeDefinitionOptions fromJson(Map<String, Object?> json) {
     if (TypeDefinitionRegistrationOptions.canParse(json, nullLspJsonReporter)) {
       return TypeDefinitionRegistrationOptions.fromJson(json);
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return TypeDefinitionOptions(workDoneProgress: workDoneProgress);
+    return TypeDefinitionOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -30698,13 +32765,16 @@
         PartialResultParams,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TypeDefinitionParams.canParse, TypeDefinitionParams.fromJson);
+    TypeDefinitionParams.canParse,
+    TypeDefinitionParams.fromJson,
+  );
 
-  TypeDefinitionParams(
-      {required this.textDocument,
-      required this.position,
-      this.workDoneToken,
-      this.partialResultToken});
+  TypeDefinitionParams({
+    required this.textDocument,
+    required this.position,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static TypeDefinitionParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -30728,10 +32798,11 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return TypeDefinitionParams(
-        textDocument: textDocument,
-        position: position,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      textDocument: textDocument,
+      position: position,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -30841,8 +32912,12 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(textDocument, position, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        textDocument,
+        position,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -30855,11 +32930,15 @@
         StaticRegistrationOptions,
         ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      TypeDefinitionRegistrationOptions.canParse,
-      TypeDefinitionRegistrationOptions.fromJson);
+    TypeDefinitionRegistrationOptions.canParse,
+    TypeDefinitionRegistrationOptions.fromJson,
+  );
 
-  TypeDefinitionRegistrationOptions(
-      {this.documentSelector, this.workDoneProgress, this.id});
+  TypeDefinitionRegistrationOptions({
+    this.documentSelector,
+    this.workDoneProgress,
+    this.id,
+  });
   static TypeDefinitionRegistrationOptions fromJson(Map<String, Object?> json) {
     final documentSelectorJson = json['documentSelector'];
     final documentSelector = (documentSelectorJson as List<Object?>?)
@@ -30870,9 +32949,10 @@
     final idJson = json['id'];
     final id = idJson as String?;
     return TypeDefinitionRegistrationOptions(
-        documentSelector: documentSelector,
-        workDoneProgress: workDoneProgress,
-        id: id);
+      documentSelector: documentSelector,
+      workDoneProgress: workDoneProgress,
+      id: id,
+    );
   }
 
   /// A document selector to identify the scope of the registration. If set to
@@ -30956,8 +33036,11 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(lspHashCode(documentSelector), workDoneProgress, id);
+  int get hashCode => Object.hash(
+        lspHashCode(documentSelector),
+        workDoneProgress,
+        id,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -31002,16 +33085,24 @@
 
 /// General parameters to unregister a capability.
 class Unregistration implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(Unregistration.canParse, Unregistration.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    Unregistration.canParse,
+    Unregistration.fromJson,
+  );
 
-  Unregistration({required this.id, required this.method});
+  Unregistration({
+    required this.id,
+    required this.method,
+  });
   static Unregistration fromJson(Map<String, Object?> json) {
     final idJson = json['id'];
     final id = idJson as String;
     final methodJson = json['method'];
     final method = methodJson as String;
-    return Unregistration(id: id, method: method);
+    return Unregistration(
+      id: id,
+      method: method,
+    );
   }
 
   /// The id used to unregister the request or notification. Usually an id
@@ -31082,7 +33173,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(id, method);
+  int get hashCode => Object.hash(
+        id,
+        method,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -31090,15 +33184,21 @@
 
 class UnregistrationParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      UnregistrationParams.canParse, UnregistrationParams.fromJson);
+    UnregistrationParams.canParse,
+    UnregistrationParams.fromJson,
+  );
 
-  UnregistrationParams({required this.unregisterations});
+  UnregistrationParams({
+    required this.unregisterations,
+  });
   static UnregistrationParams fromJson(Map<String, Object?> json) {
     final unregisterationsJson = json['unregisterations'];
     final unregisterations = (unregisterationsJson as List<Object?>)
         .map((item) => Unregistration.fromJson(item as Map<String, Object?>))
         .toList();
-    return UnregistrationParams(unregisterations: unregisterations);
+    return UnregistrationParams(
+      unregisterations: unregisterations,
+    );
   }
 
   /// This should correctly be named `unregistrations`. However changing this //
@@ -31163,16 +33263,23 @@
 class VersionedTextDocumentIdentifier
     implements TextDocumentIdentifier, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      VersionedTextDocumentIdentifier.canParse,
-      VersionedTextDocumentIdentifier.fromJson);
+    VersionedTextDocumentIdentifier.canParse,
+    VersionedTextDocumentIdentifier.fromJson,
+  );
 
-  VersionedTextDocumentIdentifier({required this.version, required this.uri});
+  VersionedTextDocumentIdentifier({
+    required this.version,
+    required this.uri,
+  });
   static VersionedTextDocumentIdentifier fromJson(Map<String, Object?> json) {
     final versionJson = json['version'];
     final version = versionJson as int;
     final uriJson = json['uri'];
     final uri = uriJson as String;
-    return VersionedTextDocumentIdentifier(version: version, uri: uri);
+    return VersionedTextDocumentIdentifier(
+      version: version,
+      uri: uri,
+    );
   }
 
   /// The text document's URI.
@@ -31246,7 +33353,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(version, uri);
+  int get hashCode => Object.hash(
+        version,
+        uri,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -31285,10 +33395,14 @@
 /// The parameters send in a will save text document notification.
 class WillSaveTextDocumentParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WillSaveTextDocumentParams.canParse, WillSaveTextDocumentParams.fromJson);
+    WillSaveTextDocumentParams.canParse,
+    WillSaveTextDocumentParams.fromJson,
+  );
 
-  WillSaveTextDocumentParams(
-      {required this.textDocument, required this.reason});
+  WillSaveTextDocumentParams({
+    required this.textDocument,
+    required this.reason,
+  });
   static WillSaveTextDocumentParams fromJson(Map<String, Object?> json) {
     final textDocumentJson = json['textDocument'];
     final textDocument = TextDocumentIdentifier.fromJson(
@@ -31296,7 +33410,9 @@
     final reasonJson = json['reason'];
     final reason = TextDocumentSaveReason.fromJson(reasonJson as int);
     return WillSaveTextDocumentParams(
-        textDocument: textDocument, reason: reason);
+      textDocument: textDocument,
+      reason: reason,
+    );
   }
 
   /// The 'TextDocumentSaveReason'.
@@ -31369,7 +33485,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(textDocument, reason);
+  int get hashCode => Object.hash(
+        textDocument,
+        reason,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -31377,14 +33496,17 @@
 
 class WorkDoneProgressBegin implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkDoneProgressBegin.canParse, WorkDoneProgressBegin.fromJson);
+    WorkDoneProgressBegin.canParse,
+    WorkDoneProgressBegin.fromJson,
+  );
 
-  WorkDoneProgressBegin(
-      {this.kind = 'begin',
-      required this.title,
-      this.cancellable,
-      this.message,
-      this.percentage}) {
+  WorkDoneProgressBegin({
+    this.kind = 'begin',
+    required this.title,
+    this.cancellable,
+    this.message,
+    this.percentage,
+  }) {
     if (kind != 'begin') {
       throw 'kind may only be the literal \'begin\'';
     }
@@ -31401,11 +33523,12 @@
     final percentageJson = json['percentage'];
     final percentage = percentageJson as int?;
     return WorkDoneProgressBegin(
-        kind: kind,
-        title: title,
-        cancellable: cancellable,
-        message: message,
-        percentage: percentage);
+      kind: kind,
+      title: title,
+      cancellable: cancellable,
+      message: message,
+      percentage: percentage,
+    );
   }
 
   /// Controls if a cancel button should show to allow the user to cancel the
@@ -31541,8 +33664,13 @@
   }
 
   @override
-  int get hashCode =>
-      Object.hash(kind, title, cancellable, message, percentage);
+  int get hashCode => Object.hash(
+        kind,
+        title,
+        cancellable,
+        message,
+        percentage,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -31550,10 +33678,13 @@
 
 class WorkDoneProgressCancelParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkDoneProgressCancelParams.canParse,
-      WorkDoneProgressCancelParams.fromJson);
+    WorkDoneProgressCancelParams.canParse,
+    WorkDoneProgressCancelParams.fromJson,
+  );
 
-  WorkDoneProgressCancelParams({required this.token});
+  WorkDoneProgressCancelParams({
+    required this.token,
+  });
   static WorkDoneProgressCancelParams fromJson(Map<String, Object?> json) {
     final tokenJson = json['token'];
     final token = tokenJson is int
@@ -31561,7 +33692,9 @@
         : (tokenJson is String
             ? Either2<int, String>.t2(tokenJson)
             : (throw '''$tokenJson was not one of (int, String)'''));
-    return WorkDoneProgressCancelParams(token: token);
+    return WorkDoneProgressCancelParams(
+      token: token,
+    );
   }
 
   /// The token to be used to report progress.
@@ -31618,10 +33751,13 @@
 
 class WorkDoneProgressCreateParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkDoneProgressCreateParams.canParse,
-      WorkDoneProgressCreateParams.fromJson);
+    WorkDoneProgressCreateParams.canParse,
+    WorkDoneProgressCreateParams.fromJson,
+  );
 
-  WorkDoneProgressCreateParams({required this.token});
+  WorkDoneProgressCreateParams({
+    required this.token,
+  });
   static WorkDoneProgressCreateParams fromJson(Map<String, Object?> json) {
     final tokenJson = json['token'];
     final token = tokenJson is int
@@ -31629,7 +33765,9 @@
         : (tokenJson is String
             ? Either2<int, String>.t2(tokenJson)
             : (throw '''$tokenJson was not one of (int, String)'''));
-    return WorkDoneProgressCreateParams(token: token);
+    return WorkDoneProgressCreateParams(
+      token: token,
+    );
   }
 
   /// The token to be used to report progress.
@@ -31686,9 +33824,14 @@
 
 class WorkDoneProgressEnd implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkDoneProgressEnd.canParse, WorkDoneProgressEnd.fromJson);
+    WorkDoneProgressEnd.canParse,
+    WorkDoneProgressEnd.fromJson,
+  );
 
-  WorkDoneProgressEnd({this.kind = 'end', this.message}) {
+  WorkDoneProgressEnd({
+    this.kind = 'end',
+    this.message,
+  }) {
     if (kind != 'end') {
       throw 'kind may only be the literal \'end\'';
     }
@@ -31698,7 +33841,10 @@
     final kind = kindJson as String;
     final messageJson = json['message'];
     final message = messageJson as String?;
-    return WorkDoneProgressEnd(kind: kind, message: message);
+    return WorkDoneProgressEnd(
+      kind: kind,
+      message: message,
+    );
   }
 
   final String kind;
@@ -31763,7 +33909,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(kind, message);
+  int get hashCode => Object.hash(
+        kind,
+        message,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -31771,9 +33920,13 @@
 
 class WorkDoneProgressOptions implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkDoneProgressOptions.canParse, WorkDoneProgressOptions.fromJson);
+    WorkDoneProgressOptions.canParse,
+    WorkDoneProgressOptions.fromJson,
+  );
 
-  WorkDoneProgressOptions({this.workDoneProgress});
+  WorkDoneProgressOptions({
+    this.workDoneProgress,
+  });
   static WorkDoneProgressOptions fromJson(Map<String, Object?> json) {
     if (WorkspaceSymbolOptions.canParse(json, nullLspJsonReporter)) {
       return WorkspaceSymbolOptions.fromJson(json);
@@ -31852,7 +34005,9 @@
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return WorkDoneProgressOptions(workDoneProgress: workDoneProgress);
+    return WorkDoneProgressOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -31902,9 +34057,13 @@
 
 class WorkDoneProgressParams implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkDoneProgressParams.canParse, WorkDoneProgressParams.fromJson);
+    WorkDoneProgressParams.canParse,
+    WorkDoneProgressParams.fromJson,
+  );
 
-  WorkDoneProgressParams({this.workDoneToken});
+  WorkDoneProgressParams({
+    this.workDoneToken,
+  });
   static WorkDoneProgressParams fromJson(Map<String, Object?> json) {
     if (InitializeParams.canParse(json, nullLspJsonReporter)) {
       return InitializeParams.fromJson(json);
@@ -32007,7 +34166,9 @@
             : (workDoneTokenJson is String
                 ? Either2<int, String>.t2(workDoneTokenJson)
                 : (throw '''$workDoneTokenJson was not one of (int, String)''')));
-    return WorkDoneProgressParams(workDoneToken: workDoneToken);
+    return WorkDoneProgressParams(
+      workDoneToken: workDoneToken,
+    );
   }
 
   /// An optional token that a server can use to report work done progress.
@@ -32059,10 +34220,16 @@
 
 class WorkDoneProgressReport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkDoneProgressReport.canParse, WorkDoneProgressReport.fromJson);
+    WorkDoneProgressReport.canParse,
+    WorkDoneProgressReport.fromJson,
+  );
 
-  WorkDoneProgressReport(
-      {this.kind = 'report', this.cancellable, this.message, this.percentage}) {
+  WorkDoneProgressReport({
+    this.kind = 'report',
+    this.cancellable,
+    this.message,
+    this.percentage,
+  }) {
     if (kind != 'report') {
       throw 'kind may only be the literal \'report\'';
     }
@@ -32077,15 +34244,15 @@
     final percentageJson = json['percentage'];
     final percentage = percentageJson as int?;
     return WorkDoneProgressReport(
-        kind: kind,
-        cancellable: cancellable,
-        message: message,
-        percentage: percentage);
+      kind: kind,
+      cancellable: cancellable,
+      message: message,
+      percentage: percentage,
+    );
   }
 
   /// Controls enablement state of a cancel button. This property is only valid
-  ///
-  /// if a cancel button got requested in the `WorkDoneProgressStart` payload.
+  /// if a cancel button got requested in the `WorkDoneProgressBegin` payload.
   ///
   /// Clients that don't support cancellation or don't support control the
   /// button's enablement state are allowed to ignore the setting.
@@ -32193,17 +34360,28 @@
   }
 
   @override
-  int get hashCode => Object.hash(kind, cancellable, message, percentage);
+  int get hashCode => Object.hash(
+        kind,
+        cancellable,
+        message,
+        percentage,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
 }
 
 class WorkspaceEdit implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(WorkspaceEdit.canParse, WorkspaceEdit.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    WorkspaceEdit.canParse,
+    WorkspaceEdit.fromJson,
+  );
 
-  WorkspaceEdit({this.changes, this.documentChanges, this.changeAnnotations});
+  WorkspaceEdit({
+    this.changes,
+    this.documentChanges,
+    this.changeAnnotations,
+  });
   static WorkspaceEdit fromJson(Map<String, Object?> json) {
     final changesJson = json['changes'];
     final changes = (changesJson as Map<Object, Object?>?)?.map((key, value) =>
@@ -32236,9 +34414,10 @@
         ?.map((key, value) => MapEntry(key as String,
             ChangeAnnotation.fromJson(value as Map<String, Object?>)));
     return WorkspaceEdit(
-        changes: changes,
-        documentChanges: documentChanges,
-        changeAnnotations: changeAnnotations);
+      changes: changes,
+      documentChanges: documentChanges,
+      changeAnnotations: changeAnnotations,
+    );
   }
 
   /// A map of change annotations that can be referenced in `AnnotatedTextEdit`s
@@ -32361,7 +34540,10 @@
 
   @override
   int get hashCode => Object.hash(
-      lspHashCode(changes), documentChanges, lspHashCode(changeAnnotations));
+        lspHashCode(changes),
+        documentChanges,
+        lspHashCode(changeAnnotations),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -32369,15 +34551,17 @@
 
 class WorkspaceEditClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceEditClientCapabilities.canParse,
-      WorkspaceEditClientCapabilities.fromJson);
+    WorkspaceEditClientCapabilities.canParse,
+    WorkspaceEditClientCapabilities.fromJson,
+  );
 
-  WorkspaceEditClientCapabilities(
-      {this.documentChanges,
-      this.resourceOperations,
-      this.failureHandling,
-      this.normalizesLineEndings,
-      this.changeAnnotationSupport});
+  WorkspaceEditClientCapabilities({
+    this.documentChanges,
+    this.resourceOperations,
+    this.failureHandling,
+    this.normalizesLineEndings,
+    this.changeAnnotationSupport,
+  });
   static WorkspaceEditClientCapabilities fromJson(Map<String, Object?> json) {
     final documentChangesJson = json['documentChanges'];
     final documentChanges = documentChangesJson as bool?;
@@ -32397,11 +34581,12 @@
             changeAnnotationSupportJson as Map<String, Object?>)
         : null;
     return WorkspaceEditClientCapabilities(
-        documentChanges: documentChanges,
-        resourceOperations: resourceOperations,
-        failureHandling: failureHandling,
-        normalizesLineEndings: normalizesLineEndings,
-        changeAnnotationSupport: changeAnnotationSupport);
+      documentChanges: documentChanges,
+      resourceOperations: resourceOperations,
+      failureHandling: failureHandling,
+      normalizesLineEndings: normalizesLineEndings,
+      changeAnnotationSupport: changeAnnotationSupport,
+    );
   }
 
   /// Whether the client in general supports change annotations on text edits,
@@ -32533,11 +34718,12 @@
 
   @override
   int get hashCode => Object.hash(
-      documentChanges,
-      lspHashCode(resourceOperations),
-      failureHandling,
-      normalizesLineEndings,
-      changeAnnotationSupport);
+        documentChanges,
+        lspHashCode(resourceOperations),
+        failureHandling,
+        normalizesLineEndings,
+        changeAnnotationSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -32546,16 +34732,20 @@
 class WorkspaceEditClientCapabilitiesChangeAnnotationSupport
     implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceEditClientCapabilitiesChangeAnnotationSupport.canParse,
-      WorkspaceEditClientCapabilitiesChangeAnnotationSupport.fromJson);
+    WorkspaceEditClientCapabilitiesChangeAnnotationSupport.canParse,
+    WorkspaceEditClientCapabilitiesChangeAnnotationSupport.fromJson,
+  );
 
-  WorkspaceEditClientCapabilitiesChangeAnnotationSupport({this.groupsOnLabel});
+  WorkspaceEditClientCapabilitiesChangeAnnotationSupport({
+    this.groupsOnLabel,
+  });
   static WorkspaceEditClientCapabilitiesChangeAnnotationSupport fromJson(
       Map<String, Object?> json) {
     final groupsOnLabelJson = json['groupsOnLabel'];
     final groupsOnLabel = groupsOnLabelJson as bool?;
     return WorkspaceEditClientCapabilitiesChangeAnnotationSupport(
-        groupsOnLabel: groupsOnLabel);
+      groupsOnLabel: groupsOnLabel,
+    );
   }
 
   /// Whether the client groups edits with equal labels into tree nodes, for
@@ -32609,16 +34799,24 @@
 }
 
 class WorkspaceFolder implements ToJsonable {
-  static const jsonHandler =
-      LspJsonHandler(WorkspaceFolder.canParse, WorkspaceFolder.fromJson);
+  static const jsonHandler = LspJsonHandler(
+    WorkspaceFolder.canParse,
+    WorkspaceFolder.fromJson,
+  );
 
-  WorkspaceFolder({required this.uri, required this.name});
+  WorkspaceFolder({
+    required this.uri,
+    required this.name,
+  });
   static WorkspaceFolder fromJson(Map<String, Object?> json) {
     final uriJson = json['uri'];
     final uri = uriJson as String;
     final nameJson = json['name'];
     final name = nameJson as String;
-    return WorkspaceFolder(uri: uri, name: name);
+    return WorkspaceFolder(
+      uri: uri,
+      name: name,
+    );
   }
 
   /// The name of the workspace folder. Used to refer to this workspace folder
@@ -32689,7 +34887,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(uri, name);
+  int get hashCode => Object.hash(
+        uri,
+        name,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -32698,10 +34899,14 @@
 /// The workspace folder change event.
 class WorkspaceFoldersChangeEvent implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceFoldersChangeEvent.canParse,
-      WorkspaceFoldersChangeEvent.fromJson);
+    WorkspaceFoldersChangeEvent.canParse,
+    WorkspaceFoldersChangeEvent.fromJson,
+  );
 
-  WorkspaceFoldersChangeEvent({required this.added, required this.removed});
+  WorkspaceFoldersChangeEvent({
+    required this.added,
+    required this.removed,
+  });
   static WorkspaceFoldersChangeEvent fromJson(Map<String, Object?> json) {
     final addedJson = json['added'];
     final added = (addedJson as List<Object?>)
@@ -32711,7 +34916,10 @@
     final removed = (removedJson as List<Object?>)
         .map((item) => WorkspaceFolder.fromJson(item as Map<String, Object?>))
         .toList();
-    return WorkspaceFoldersChangeEvent(added: added, removed: removed);
+    return WorkspaceFoldersChangeEvent(
+      added: added,
+      removed: removed,
+    );
   }
 
   /// The array of added workspace folders
@@ -32790,7 +34998,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(lspHashCode(added), lspHashCode(removed));
+  int get hashCode => Object.hash(
+        lspHashCode(added),
+        lspHashCode(removed),
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -32798,11 +35009,14 @@
 
 class WorkspaceFoldersServerCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceFoldersServerCapabilities.canParse,
-      WorkspaceFoldersServerCapabilities.fromJson);
+    WorkspaceFoldersServerCapabilities.canParse,
+    WorkspaceFoldersServerCapabilities.fromJson,
+  );
 
-  WorkspaceFoldersServerCapabilities(
-      {this.supported, this.changeNotifications});
+  WorkspaceFoldersServerCapabilities({
+    this.supported,
+    this.changeNotifications,
+  });
   static WorkspaceFoldersServerCapabilities fromJson(
       Map<String, Object?> json) {
     final supportedJson = json['supported'];
@@ -32816,7 +35030,9 @@
                 ? Either2<String, bool>.t2(changeNotificationsJson)
                 : (throw '''$changeNotificationsJson was not one of (String, bool)''')));
     return WorkspaceFoldersServerCapabilities(
-        supported: supported, changeNotifications: changeNotifications);
+      supported: supported,
+      changeNotifications: changeNotifications,
+    );
   }
 
   /// Whether the server wants to receive workspace folder change notifications.
@@ -32884,7 +35100,10 @@
   }
 
   @override
-  int get hashCode => Object.hash(supported, changeNotifications);
+  int get hashCode => Object.hash(
+        supported,
+        changeNotifications,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -32892,11 +35111,15 @@
 
 class WorkspaceSymbolClientCapabilities implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceSymbolClientCapabilities.canParse,
-      WorkspaceSymbolClientCapabilities.fromJson);
+    WorkspaceSymbolClientCapabilities.canParse,
+    WorkspaceSymbolClientCapabilities.fromJson,
+  );
 
-  WorkspaceSymbolClientCapabilities(
-      {this.dynamicRegistration, this.symbolKind, this.tagSupport});
+  WorkspaceSymbolClientCapabilities({
+    this.dynamicRegistration,
+    this.symbolKind,
+    this.tagSupport,
+  });
   static WorkspaceSymbolClientCapabilities fromJson(Map<String, Object?> json) {
     final dynamicRegistrationJson = json['dynamicRegistration'];
     final dynamicRegistration = dynamicRegistrationJson as bool?;
@@ -32911,9 +35134,10 @@
             tagSupportJson as Map<String, Object?>)
         : null;
     return WorkspaceSymbolClientCapabilities(
-        dynamicRegistration: dynamicRegistration,
-        symbolKind: symbolKind,
-        tagSupport: tagSupport);
+      dynamicRegistration: dynamicRegistration,
+      symbolKind: symbolKind,
+      tagSupport: tagSupport,
+    );
   }
 
   /// Symbol request supports dynamic registration.
@@ -33000,7 +35224,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(dynamicRegistration, symbolKind, tagSupport);
+  int get hashCode => Object.hash(
+        dynamicRegistration,
+        symbolKind,
+        tagSupport,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -33008,17 +35236,22 @@
 
 class WorkspaceSymbolClientCapabilitiesSymbolKind implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceSymbolClientCapabilitiesSymbolKind.canParse,
-      WorkspaceSymbolClientCapabilitiesSymbolKind.fromJson);
+    WorkspaceSymbolClientCapabilitiesSymbolKind.canParse,
+    WorkspaceSymbolClientCapabilitiesSymbolKind.fromJson,
+  );
 
-  WorkspaceSymbolClientCapabilitiesSymbolKind({this.valueSet});
+  WorkspaceSymbolClientCapabilitiesSymbolKind({
+    this.valueSet,
+  });
   static WorkspaceSymbolClientCapabilitiesSymbolKind fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>?)
         ?.map((item) => SymbolKind.fromJson(item as int))
         .toList();
-    return WorkspaceSymbolClientCapabilitiesSymbolKind(valueSet: valueSet);
+    return WorkspaceSymbolClientCapabilitiesSymbolKind(
+      valueSet: valueSet,
+    );
   }
 
   /// The symbol kind values the client supports. When this property exists the
@@ -33080,17 +35313,22 @@
 
 class WorkspaceSymbolClientCapabilitiesTagSupport implements ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceSymbolClientCapabilitiesTagSupport.canParse,
-      WorkspaceSymbolClientCapabilitiesTagSupport.fromJson);
+    WorkspaceSymbolClientCapabilitiesTagSupport.canParse,
+    WorkspaceSymbolClientCapabilitiesTagSupport.fromJson,
+  );
 
-  WorkspaceSymbolClientCapabilitiesTagSupport({required this.valueSet});
+  WorkspaceSymbolClientCapabilitiesTagSupport({
+    required this.valueSet,
+  });
   static WorkspaceSymbolClientCapabilitiesTagSupport fromJson(
       Map<String, Object?> json) {
     final valueSetJson = json['valueSet'];
     final valueSet = (valueSetJson as List<Object?>)
         .map((item) => SymbolTag.fromJson(item as int))
         .toList();
-    return WorkspaceSymbolClientCapabilitiesTagSupport(valueSet: valueSet);
+    return WorkspaceSymbolClientCapabilitiesTagSupport(
+      valueSet: valueSet,
+    );
   }
 
   /// The tags supported by the client.
@@ -33151,9 +35389,13 @@
 
 class WorkspaceSymbolOptions implements WorkDoneProgressOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceSymbolOptions.canParse, WorkspaceSymbolOptions.fromJson);
+    WorkspaceSymbolOptions.canParse,
+    WorkspaceSymbolOptions.fromJson,
+  );
 
-  WorkspaceSymbolOptions({this.workDoneProgress});
+  WorkspaceSymbolOptions({
+    this.workDoneProgress,
+  });
   static WorkspaceSymbolOptions fromJson(Map<String, Object?> json) {
     if (WorkspaceSymbolRegistrationOptions.canParse(
         json, nullLspJsonReporter)) {
@@ -33161,7 +35403,9 @@
     }
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
-    return WorkspaceSymbolOptions(workDoneProgress: workDoneProgress);
+    return WorkspaceSymbolOptions(
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
@@ -33213,10 +35457,15 @@
 class WorkspaceSymbolParams
     implements WorkDoneProgressParams, PartialResultParams, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceSymbolParams.canParse, WorkspaceSymbolParams.fromJson);
+    WorkspaceSymbolParams.canParse,
+    WorkspaceSymbolParams.fromJson,
+  );
 
-  WorkspaceSymbolParams(
-      {required this.query, this.workDoneToken, this.partialResultToken});
+  WorkspaceSymbolParams({
+    required this.query,
+    this.workDoneToken,
+    this.partialResultToken,
+  });
   static WorkspaceSymbolParams fromJson(Map<String, Object?> json) {
     final queryJson = json['query'];
     final query = queryJson as String;
@@ -33237,9 +35486,10 @@
                 ? Either2<int, String>.t2(partialResultTokenJson)
                 : (throw '''$partialResultTokenJson was not one of (int, String)''')));
     return WorkspaceSymbolParams(
-        query: query,
-        workDoneToken: workDoneToken,
-        partialResultToken: partialResultToken);
+      query: query,
+      workDoneToken: workDoneToken,
+      partialResultToken: partialResultToken,
+    );
   }
 
   /// An optional token that a server can use to report partial results (e.g.
@@ -33327,7 +35577,11 @@
   }
 
   @override
-  int get hashCode => Object.hash(query, workDoneToken, partialResultToken);
+  int get hashCode => Object.hash(
+        query,
+        workDoneToken,
+        partialResultToken,
+      );
 
   @override
   String toString() => jsonEncoder.convert(toJson());
@@ -33336,16 +35590,20 @@
 class WorkspaceSymbolRegistrationOptions
     implements WorkspaceSymbolOptions, ToJsonable {
   static const jsonHandler = LspJsonHandler(
-      WorkspaceSymbolRegistrationOptions.canParse,
-      WorkspaceSymbolRegistrationOptions.fromJson);
+    WorkspaceSymbolRegistrationOptions.canParse,
+    WorkspaceSymbolRegistrationOptions.fromJson,
+  );
 
-  WorkspaceSymbolRegistrationOptions({this.workDoneProgress});
+  WorkspaceSymbolRegistrationOptions({
+    this.workDoneProgress,
+  });
   static WorkspaceSymbolRegistrationOptions fromJson(
       Map<String, Object?> json) {
     final workDoneProgressJson = json['workDoneProgress'];
     final workDoneProgress = workDoneProgressJson as bool?;
     return WorkspaceSymbolRegistrationOptions(
-        workDoneProgress: workDoneProgress);
+      workDoneProgress: workDoneProgress,
+    );
   }
 
   final bool? workDoneProgress;
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart
index 3c7181e..93248df 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_code_actions.dart
@@ -21,6 +21,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/dart/ast/utilities.dart';
 import 'package:analyzer/src/util/file_paths.dart' as file_paths;
+import 'package:analyzer/src/util/performance/operation_performance.dart';
 import 'package:analyzer_plugin/protocol/protocol.dart' as plugin;
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
 import 'package:collection/collection.dart' show groupBy;
@@ -86,6 +87,11 @@
 
     final unit = await path.mapResult(requireResolvedUnit);
 
+    /// Whether a fix of kind [kind] should be included in the results.
+    ///
+    /// Unlike [shouldIncludeAnyOfKind], this function is called with a more
+    /// specific action kind and answers the question "Should we include this
+    /// specific fix kind?".
     bool shouldIncludeKind(CodeActionKind? kind) {
       /// Checks whether the kind matches the [wanted] kind.
       ///
@@ -94,7 +100,7 @@
       ///  - refactor.foobar - not included
       ///  - refactor.foo.bar - included
       bool isMatch(CodeActionKind wanted) =>
-          kind == wanted || kind.toString().startsWith('${wanted.toString()}.');
+          kind == wanted || kind.toString().startsWith('$wanted.');
 
       // If the client wants only a specific set, use only that filter.
       final only = params.context.only;
@@ -111,6 +117,30 @@
       return true;
     }
 
+    /// Whether any fixes of kind [kind] should be included in the results.
+    ///
+    /// Unlike [shouldIncludeKind], this function is called with a more general
+    /// action kind and answers the question "Should we include any actions of
+    /// kind CodeActionKind.Source?".
+    bool shouldIncludeAnyOfKind(CodeActionKind? kind) {
+      /// Checks whether the kind matches the [wanted] kind.
+      ///
+      /// If `kind` is `refactor.foo` then for these `wanted` values:
+      ///  - wanted=refactor.foo - true
+      ///  - wanted=refactor.foo.bar - true
+      ///  - wanted=refactor - false
+      ///  - wanted=refactor.bar - false
+      bool isMatch(CodeActionKind wanted) =>
+          kind == wanted || wanted.toString().startsWith('$kind.');
+
+      final only = params.context.only;
+      if (only != null) {
+        return only.any(isMatch);
+      }
+
+      return true;
+    }
+
     return unit.mapResult((unit) {
       final startOffset = toOffset(unit.lineInfo, params.range.start);
       final endOffset = toOffset(unit.lineInfo, params.range.end);
@@ -118,8 +148,12 @@
         return endOffset.mapResult((endOffset) {
           final offset = startOffset;
           final length = endOffset - startOffset;
-          return _getCodeActions(
+          return message.performance.runAsync(
+            'getCodeActions',
+            (performance) => _getCodeActions(
+              performance,
               shouldIncludeKind,
+              shouldIncludeAnyOfKind,
               supportsLiteralCodeActions,
               supportsApplyEdit,
               supportedDiagnosticTags,
@@ -127,7 +161,9 @@
               params.range,
               offset,
               length,
-              unit);
+              unit,
+            ),
+          );
         });
       });
     });
@@ -298,7 +334,9 @@
   }
 
   Future<ErrorOr<List<Either2<Command, CodeAction>>>> _getCodeActions(
+    OperationPerformanceImpl performance,
     bool Function(CodeActionKind?) shouldIncludeKind,
+    bool Function(CodeActionKind?) shouldIncludeAnyOfKind,
     bool supportsLiterals,
     bool supportsWorkspaceApplyEdit,
     Set<DiagnosticTag> supportedDiagnosticTags,
@@ -309,14 +347,31 @@
     ResolvedUnitResult unit,
   ) async {
     final results = await Future.wait([
-      _getSourceActions(shouldIncludeKind, supportsLiterals,
-          supportsWorkspaceApplyEdit, path),
-      _getAssistActions(shouldIncludeKind, supportsLiterals, path, range,
-          offset, length, unit),
-      _getRefactorActions(
-          shouldIncludeKind, supportsLiterals, path, offset, length, unit),
-      _getFixActions(shouldIncludeKind, supportsLiterals, path, offset,
-          supportedDiagnosticTags, range, unit),
+      if (shouldIncludeAnyOfKind(CodeActionKind.Source))
+        performance.runAsync(
+          '_getSourceActions',
+          (_) => _getSourceActions(shouldIncludeKind, supportsLiterals,
+              supportsWorkspaceApplyEdit, path),
+        ),
+      // Assists go under the Refactor CodeActionKind so check that here.
+      if (shouldIncludeAnyOfKind(CodeActionKind.Refactor))
+        performance.runAsync(
+          '_getAssistActions',
+          (_) => _getAssistActions(shouldIncludeKind, supportsLiterals, path,
+              range, offset, length, unit),
+        ),
+      if (shouldIncludeAnyOfKind(CodeActionKind.Refactor))
+        performance.runAsync(
+          '_getRefactorActions',
+          (_) => _getRefactorActions(
+              shouldIncludeKind, supportsLiterals, path, offset, length, unit),
+        ),
+      if (shouldIncludeAnyOfKind(CodeActionKind.QuickFix))
+        performance.runAsync(
+          '_getFixActions',
+          (_) => _getFixActions(shouldIncludeKind, supportsLiterals, path,
+              offset, supportedDiagnosticTags, range, unit),
+        ),
     ]);
     final flatResults = results.expand((x) => x).toList();
 
@@ -343,15 +398,15 @@
     final pluginFuture = _getPluginFixActions(unit, offset);
 
     try {
+      var workspace = DartChangeWorkspace(
+        await server.currentSessions,
+      );
       for (final error in unit.errors) {
         // Server lineNumber is one-based so subtract one.
         var errorLine = lineInfo.getLocation(error.offset).lineNumber - 1;
         if (errorLine < range.start.line || errorLine > range.end.line) {
           continue;
         }
-        var workspace = DartChangeWorkspace(
-          await server.currentSessions,
-        );
         var context = DartFixContextImpl(
             server.instrumentationService, workspace, unit, error);
         final fixes = await fixContributor.computeFixes(context);
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
index 62dfcd7..b624eed 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
@@ -110,7 +110,7 @@
     CompletionPerformance? completionPerformance;
     if (fileExtension == '.dart' && !unit.isError) {
       final result = unit.result;
-      var performance = OperationPerformanceImpl('<root>');
+      var performance = message.performance;
       serverResultsFuture = performance.runAsync(
         'request',
         (performance) async {
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart b/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
index 2751311..a51eed8 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handlers.dart
@@ -16,6 +16,7 @@
 import 'package:analysis_server/src/request_handler_mixin.dart';
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/source/line_info.dart';
+import 'package:analyzer/src/util/performance/operation_performance.dart';
 import 'package:analyzer/src/utilities/cancellation.dart';
 import 'package:analyzer_plugin/protocol/protocol.dart';
 import 'package:analyzer_plugin/src/protocol/protocol_internal.dart';
@@ -167,8 +168,8 @@
   /// Handle the given [message]. If the [message] is a [RequestMessage], then the
   /// return value will be sent back in a [ResponseMessage].
   /// [NotificationMessage]s are not expected to return results.
-  FutureOr<ErrorOr<R>> handleMessage(
-      IncomingMessage message, CancellationToken token) {
+  FutureOr<ErrorOr<R>> handleMessage(IncomingMessage message,
+      MessageInfo messageInfo, CancellationToken token) {
     final reporter = LspJsonReporter('params');
     final paramsJson = message.params as Map<String, Object?>?;
     if (!jsonHandler.validateParams(paramsJson, reporter)) {
@@ -183,7 +184,6 @@
 
     final params =
         paramsJson != null ? jsonHandler.convertParams(paramsJson) : null as P;
-    final messageInfo = MessageInfo(timeSinceRequest: message.timeSinceRequest);
     return handle(params, messageInfo, token);
   }
 }
@@ -195,7 +195,9 @@
   /// request or `null` if the client did not provide [clientRequestTime].
   final int? timeSinceRequest;
 
-  MessageInfo({this.timeSinceRequest});
+  OperationPerformanceImpl performance;
+
+  MessageInfo({required this.performance, this.timeSinceRequest});
 }
 
 /// A message handler that handles all messages for a given server state.
@@ -213,14 +215,15 @@
   /// Handle the given [message]. If the [message] is a [RequestMessage], then the
   /// return value will be sent back in a [ResponseMessage].
   /// [NotificationMessage]s are not expected to return results.
-  FutureOr<ErrorOr<Object?>> handleMessage(IncomingMessage message) async {
+  FutureOr<ErrorOr<Object?>> handleMessage(
+      IncomingMessage message, MessageInfo messageInfo) async {
     final handler = _messageHandlers[message.method];
     if (handler == null) {
       return handleUnknownMessage(message);
     }
 
     if (message is! RequestMessage) {
-      return handler.handleMessage(message, _notCancelableToken);
+      return handler.handleMessage(message, messageInfo, _notCancelableToken);
     }
 
     // Create a cancellation token that will allow us to cancel this request if
@@ -228,7 +231,7 @@
     // check the token after `await` points).
     final token = _cancelHandler.createToken(message);
     try {
-      final result = await handler.handleMessage(message, token);
+      final result = await handler.handleMessage(message, messageInfo, token);
       // Do a final check before returning the result, because if the request was
       // cancelled we can save the overhead of serialising everything to JSON
       // and the client to deserialising the same in order to read the ID to see
diff --git a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
index fe24db5..0869d24 100644
--- a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
+++ b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
@@ -350,31 +350,32 @@
       try {
         if (message is ResponseMessage) {
           handleClientResponse(message);
-        } else if (message is RequestMessage) {
+        } else if (message is IncomingMessage) {
+          final incomingMessage = message as IncomingMessage;
+
           // Record performance information for the request.
           final performance = OperationPerformanceImpl('<root>');
           await performance.runAsync('request', (performance) async {
             final requestPerformance = RequestPerformance(
-              operation: message.method.toString(),
+              operation: incomingMessage.method.toString(),
               performance: performance,
-              requestLatency: message.timeSinceRequest,
+              requestLatency: incomingMessage.timeSinceRequest,
             );
             recentPerformance.requests.add(requestPerformance);
-            final result = await messageHandler.handleMessage(message);
-            if (result.isError) {
-              sendErrorResponse(message, result.error);
+
+            final messageInfo = MessageInfo(
+              performance: performance,
+              timeSinceRequest: incomingMessage.timeSinceRequest,
+            );
+
+            if (message is RequestMessage) {
+              await _handleRequestMessage(message, messageInfo);
+            } else if (message is NotificationMessage) {
+              await _handleNotificationMessage(message, messageInfo);
             } else {
-              channel.sendResponse(ResponseMessage(
-                  id: message.id,
-                  result: result.result,
-                  jsonrpc: jsonRpcVersion));
+              showErrorMessageToUser('Unknown incoming message type');
             }
           });
-        } else if (message is NotificationMessage) {
-          final result = await messageHandler.handleMessage(message);
-          if (result.isError) {
-            sendErrorResponse(message, result.error);
-          }
         } else {
           showErrorMessageToUser('Unknown message type');
         }
@@ -783,6 +784,32 @@
     ];
   }
 
+  Future<void> _handleNotificationMessage(
+    NotificationMessage message,
+    MessageInfo messageInfo,
+  ) async {
+    final result = await messageHandler.handleMessage(message, messageInfo);
+    if (result.isError) {
+      sendErrorResponse(message, result.error);
+    }
+  }
+
+  Future<void> _handleRequestMessage(
+    RequestMessage message,
+    MessageInfo messageInfo,
+  ) async {
+    final result = await messageHandler.handleMessage(message, messageInfo);
+    if (result.isError) {
+      sendErrorResponse(message, result.error);
+    } else {
+      channel.sendResponse(ResponseMessage(
+        id: message.id,
+        result: result.result,
+        jsonrpc: jsonRpcVersion,
+      ));
+    }
+  }
+
   void _onPluginsChanged() {
     capabilitiesComputer.performDynamicRegistration();
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart
index c8320f8..c308c1d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart
@@ -35,7 +35,12 @@
         return;
       }
       var className = node.name;
-      var canBeConst = _canBeConst(parent.declaredElement);
+      var constructors = parent.declaredElement?.supertype?.constructors;
+      if (constructors == null) {
+        return;
+      }
+
+      var canBeConst = _canBeConst(parent, constructors);
       await builder.addDartFileEdit(file, (builder) {
         builder.addInsertion(targetLocation.offset, (builder) {
           builder.write(targetLocation.prefix);
@@ -94,16 +99,28 @@
     }
   }
 
-  /// Return `true` if the [classElement] can be instantiated as a `const`.
-  bool _canBeConst(ClassElement? classElement) {
-    var currentClass = classElement;
-    while (currentClass != null && !currentClass.isDartCoreObject) {
-      for (var field in currentClass.fields) {
-        if (!field.isSynthetic && !field.isFinal) {
+  /// Return `true` if the [classDeclaration] can be instantiated as a `const`.
+  bool _canBeConst(ClassDeclaration classDeclaration,
+      List<ConstructorElement> constructors) {
+    for (var constructor in constructors) {
+      if (constructor.isDefaultConstructor && !constructor.isConst) {
+        return false;
+      }
+    }
+
+    for (var member in classDeclaration.members) {
+      if (member is FieldDeclaration && !member.isStatic) {
+        if (!member.fields.isFinal) {
           return false;
         }
+        for (var variableDeclaration in member.fields.variables) {
+          var initializer = variableDeclaration.initializer;
+          if (initializer is InstanceCreationExpression &&
+              !initializer.isConst) {
+            return false;
+          }
+        }
       }
-      currentClass = currentClass.supertype?.element;
     }
     return true;
   }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_manager.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_manager.dart
index d971585..9270917 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_manager.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_manager.dart
@@ -29,9 +29,9 @@
     if (package == null) {
       return transformSets;
     }
-    var packageMap = package.packagesAvailableTo(libraryPath);
-    for (var entry in packageMap.entries) {
-      var directory = entry.value[0];
+    var packages = package.packagesAvailableTo(libraryPath);
+    for (var package in packages.packages) {
+      var directory = package.libFolder;
       var file = directory.getChildAssumingFile(dataFileName);
       var transformSet = _loadTransformSet(file);
       if (transformSet != null) {
diff --git a/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart b/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
index 8da3e4a..3ee9a6a 100644
--- a/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
+++ b/pkg/analysis_server/test/src/plugin/plugin_manager_test.dart
@@ -8,6 +8,7 @@
 import 'package:analysis_server/src/plugin/plugin_manager.dart';
 import 'package:analyzer/file_system/physical_file_system.dart';
 import 'package:analyzer/instrumentation/instrumentation.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/dart/analysis/context_root.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer/src/util/file_paths.dart' as file_paths;
@@ -962,7 +963,7 @@
     return ContextRootImpl(
       resourceProvider,
       resourceProvider.getFolder(root),
-      BasicWorkspace.find(resourceProvider, {}, root),
+      BasicWorkspace.find(resourceProvider, Packages.empty, root),
     );
   }
 }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart
index ff5317c..834a76c 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_key_to_constructors_test.dart
@@ -181,4 +181,133 @@
 }
 ''', errorFilter: (error) => error.errorCode is LintCode);
   }
+
+  Future<void> test_initializer_final_constant() async {
+    await resolveTestCode('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  final t = const Text('');
+}
+''');
+    await assertHasFix('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  final t = const Text('');
+
+  const MyWidget({Key? key}) : super(key: key);
+}
+''',
+        //TODO(asashour) there should be no other errors
+        errorFilter: (error) => error.errorCode is LintCode);
+  }
+
+  Future<void> test_initializer_final_not_constant() async {
+    await resolveTestCode('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  final c = Container();
+}
+''');
+    await assertHasFix('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  final c = Container();
+
+  MyWidget({Key? key}) : super(key: key);
+}
+''');
+  }
+
+  Future<void> test_initializer_not_final_constant() async {
+    await resolveTestCode('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  var t = const Text('');
+}
+''');
+    await assertHasFix('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  var t = const Text('');
+
+  MyWidget({Key? key}) : super(key: key);
+}
+''',
+        //TODO(asashour) there should be no other errors
+        errorFilter: (error) => error.errorCode is LintCode);
+  }
+
+  Future<void> test_initializer_not_final_not_constant() async {
+    await resolveTestCode('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  var c = Container();
+}
+''');
+    await assertHasFix('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  var c = Container();
+
+  MyWidget({Key? key}) : super(key: key);
+}
+''');
+  }
+
+  Future<void> test_initializer_static() async {
+    await resolveTestCode('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  static Text t = const Text('');
+}
+''');
+    await assertHasFix('''
+import 'package:flutter/material.dart';
+
+class MyWidget extends StatelessWidget {
+  static Text t = const Text('');
+
+  const MyWidget({Key? key}) : super(key: key);
+}
+''',
+        //TODO(asashour) there should be no other errors
+        errorFilter: (error) => error.errorCode is LintCode);
+  }
+
+  Future<void> test_super_not_constant() async {
+    await resolveTestCode('''
+import 'package:flutter/material.dart';
+
+class ParentWidget extends StatelessWidget {
+  final c = Container();
+
+  ParentWidget({Key? key}) : super(key: key);
+}
+
+class MyWidget extends ParentWidget {
+}
+''');
+    await assertHasFix('''
+import 'package:flutter/material.dart';
+
+class ParentWidget extends StatelessWidget {
+  final c = Container();
+
+  ParentWidget({Key? key}) : super(key: key);
+}
+
+class MyWidget extends ParentWidget {
+  MyWidget({Key? key}) : super(key: key);
+}
+''', errorFilter: (error) => error.errorCode is LintCode);
+  }
 }
diff --git a/pkg/analysis_server/test/tool/lsp_spec/json_test.dart b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
index 2ecc605..7b8ab8b 100644
--- a/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
+++ b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
@@ -180,7 +180,8 @@
       // Value whether expected to parse
       const testTraceValues = {
         'off': true,
-        'message': true,
+        'message': false,
+        'messages': true,
         'verbose': true,
         null: true,
         'invalid': false,
diff --git a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
index 12998d6..b8e03a0 100644
--- a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
+++ b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
@@ -38,7 +38,12 @@
 String generateDartForTypes(List<AstNode> types) {
   final buffer = IndentableStringBuffer();
   _getSortedUnique(types).forEach((t) => _writeType(buffer, t));
+  final stopwatch = Stopwatch()..start();
   final formattedCode = _formatCode(buffer.toString());
+  stopwatch.stop();
+  if (stopwatch.elapsed.inSeconds > 10) {
+    print('WARN: Formatting took ${stopwatch.elapsed} (${types.length} types)');
+  }
   return '${formattedCode.trim()}\n'; // Ensure a single trailing newline.
 }
 
@@ -310,8 +315,8 @@
       final requiredKeyword = isRequired ? 'required' : '';
       final valueCode =
           isLiteral ? ' = ${(field.type as LiteralType).literal}' : '';
-      return '$requiredKeyword this.${field.name}$valueCode';
-    }).join(', '))
+      return '$requiredKeyword this.${field.name}$valueCode, ';
+    }).join())
     ..write('})');
   final fieldsWithValidation =
       allFields.where((f) => f.type is LiteralType).toList();
@@ -642,7 +647,7 @@
   }
   buffer
     ..writeIndented('return ${interface.nameWithTypeArgs}(')
-    ..write(allFields.map((field) => '${field.name}: ${field.name}').join(', '))
+    ..write(allFields.map((field) => '${field.name}: ${field.name}, ').join())
     ..writeln(');')
     ..outdent()
     ..writeIndented('}');
@@ -663,10 +668,10 @@
     endWith = ';';
   } else if (fields.length > 20) {
     buffer.write('Object.hashAll([');
-    endWith = ']);';
+    endWith = ',]);';
   } else {
     buffer.write('Object.hash(');
-    endWith = ');';
+    endWith = ',);';
   }
 
   buffer.writeAll(
@@ -729,7 +734,7 @@
   buffer
     ..writeIndented('static const jsonHandler = ')
     ..write('LspJsonHandler(')
-    ..write('${interface.name}.canParse, ${interface.name}.fromJson')
+    ..write('${interface.name}.canParse, ${interface.name}.fromJson,')
     ..writeln(');')
     ..writeln();
 }
diff --git a/pkg/analysis_server/tool/lsp_spec/lsp_specification.md b/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
index 76cf862..90cf478 100644
--- a/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
+++ b/pkg/analysis_server/tool/lsp_spec/lsp_specification.md
@@ -22,13 +22,13 @@
 
 ---
 title: Specification
-shortTitle: 3.16 - Upcoming
+shortTitle: 3.16 (Current)
 layout: specifications
 sectionid: specification-3-16
 toc: specification-3-16-toc
+fullTitle: Language Server Protocol Specification - 3.16
 index: 2
 ---
-# Language Server Protocol Specification - 3.16
 
 This document describes the 3.16.x version of the language server protocol. An implementation for node of the 3.16.x version of the protocol can be found [here](https://github.com/Microsoft/vscode-languageserver-node).
 
@@ -211,20 +211,26 @@
 	 * are left in the range.
 	 *
 	 * @since 3.16.0
-	*/
+	 */
 	export const jsonrpcReservedErrorRangeStart: integer = -32099;
-	/** @deprecated use  jsonrpcReservedErrorRangeStart */
+	/** @deprecated use jsonrpcReservedErrorRangeStart */
 	export const serverErrorStart: integer = jsonrpcReservedErrorRangeStart;
 
+	/**
+	 * Error code indicating that a server received a notification or
+	 * request before the server has received the `initialize` request.
+	 */
 	export const ServerNotInitialized: integer = -32002;
 	export const UnknownErrorCode: integer = -32001;
 
 	/**
-	 * This is the start range of JSON RPC reserved error codes.
+	 * This is the end range of JSON RPC reserved error codes.
 	 * It doesn't denote a real error code.
-	*/
+	 *
+	 * @since 3.16.0
+	 */
 	export const jsonrpcReservedErrorRangeEnd = -32000;
-	/** @deprecated use  jsonrpcReservedErrorRangeEnd */
+	/** @deprecated use jsonrpcReservedErrorRangeEnd */
 	export const serverErrorEnd: integer = jsonrpcReservedErrorRangeEnd;
 
 	/**
@@ -267,7 +273,7 @@
 
 #### <a href="#dollarRequests" name="dollarRequests" class="anchor"> $ Notifications and Requests </a>
 
-Notification and requests whose methods start with '\$/' are messages which are protocol implementation dependent and might not be implementable in all clients or servers. For example if the server implementation uses a single threaded synchronous programming language then there is little a server can do to react to a `$/cancelRequest` notification. If a server or client receives notifications starting with '\$/' it is free to ignore the notification. If a server or client receives a requests starting with '\$/' it must error the request with error code `MethodNotFound` (e.g. `-32601`).
+Notification and requests whose methods start with '\$/' are messages which are protocol implementation dependent and might not be implementable in all clients or servers. For example if the server implementation uses a single threaded synchronous programming language then there is little a server can do to react to a `$/cancelRequest` notification. If a server or client receives notifications starting with '\$/' it is free to ignore the notification. If a server or client receives a request starting with '\$/' it must error the request with error code `MethodNotFound` (e.g. `-32601`).
 
 #### <a href="#cancelRequest" name="cancelRequest" class="anchor"> Cancellation Support (:arrow_right: :arrow_left:)</a>
 
@@ -330,7 +336,7 @@
 
 #### <a href="#uri" name="uri" class="anchor"> URI </a>
 
-URI's are transferred as strings. The URI's format is defined in [http://tools.ietf.org/html/rfc3986](http://tools.ietf.org/html/rfc3986)
+URI's are transferred as strings. The URI's format is defined in [https://tools.ietf.org/html/rfc3986](https://tools.ietf.org/html/rfc3986)
 
 ```
   foo://example.com:8042/over/there?name=ferret#nose
@@ -404,6 +410,12 @@
 
 The only regular expression flag that a client needs to support is 'i' to specify a case insensitive search.
 
+### <a href="#enumerations" name="enumerations" class="anchor"> Enumerations </a>
+
+The protocol supports two kind of enumerations: (a) integer based enumerations and (b) strings based enumerations. Integer based enumerations usually start with `1`. The onces that don't are historical and they were kept to stay backwards compatible. If appropriate the value set of an enumeration is announced by the defining side (e.g. client or server) and transmitted to the other side during the initialize handshake. An example is the `CompletionItemKind` enumeration. It is announced by the client using the `textDocument.completion.completionItemKind` client property.
+
+To support the evolution of enumerations the using side of an enumeration shouldn't fail on a enumeration value it doesn't know. It should simply ignore it as a value it can use and try to do its best to preserve the value on round trips. Lets look at the `CompletionItemKind` enumeration as an example again: if in a future version of the specification an additional completion item kind with the value `n` gets added and announced by a client a (older) server not knowing about the value should not fail but simply ignore the value as a usable item kind.
+
 #### <a href="#textDocuments" name="textDocuments" class="anchor"> Text Documents </a>
 
 The current protocol is tailored for textual documents whose content can be represented as a string. There is currently no support for binary documents. A position inside a document (see Position definition below) is expressed as a zero-based line and character offset. The offsets are based on a UTF-16 string representation. So a string of the form `a𐐀b` the character offset of the character `a` is 0, the character offset of `𐐀` is 1 and the character offset of b is 3 since `𐐀` is represented using two code units in UTF-16. To ensure that both client and server split the string into the same line representation the protocol specifies the following end-of-line sequences: '\n', '\r\n' and '\r'.
@@ -416,7 +428,7 @@
 
 #### <a href="#position" name="position" class="anchor"> Position </a>
 
-Position in a text document expressed as zero-based line and zero-based character offset. A position is between two characters like an 'insert' cursor in a editor. Special values like for example `-1` to denote the end of a line are not supported.
+Position in a text document expressed as zero-based line and zero-based character offset. A position is between two characters like an 'insert' cursor in an editor. Special values like for example `-1` to denote the end of a line are not supported.
 
 ```typescript
 interface Position {
@@ -500,7 +512,7 @@
 
 	/**
 	 * The range that should be selected and revealed when this link is being
-	 * followed, e.g the name of a function. Must be contained by the
+	 * followed, e.g the name of a function. Must be contained by the the
 	 * `targetRange`. See also `DocumentSymbol#range`
 	 */
 	targetSelectionRange: Range;
@@ -601,19 +613,19 @@
  * @since 3.15.0
  */
 export namespace DiagnosticTag {
-    /**
-     * Unused or unnecessary code.
-     *
-     * Clients are allowed to render diagnostics with this tag faded out
+	/**
+	 * Unused or unnecessary code.
+	 *
+	 * Clients are allowed to render diagnostics with this tag faded out
 	 * instead of having an error squiggle.
-     */
-    export const Unnecessary: 1 = 1;
-    /**
-     * Deprecated or obsolete code.
-     *
-     * Clients are allowed to rendered diagnostics with this tag strike through.
-     */
-    export const Deprecated: 2 = 2;
+	 */
+	export const Unnecessary: 1 = 1;
+	/**
+	 * Deprecated or obsolete code.
+	 *
+	 * Clients are allowed to rendered diagnostics with this tag strike through.
+	 */
+	export const Deprecated: 2 = 2;
 }
 
 export type DiagnosticTag = 1 | 2;
@@ -678,7 +690,7 @@
 }
 ```
 
-#### <a href="#textEdit" name="textEdit" class="anchor"> TextEdit  & AnnotatedTextEdit </a>
+#### <a href="#textEdit" name="textEdit" class="anchor"> TextEdit & AnnotatedTextEdit </a>
 
 > New in version 3.16: Support for `AnnotatedTextEdit`.
 
@@ -737,7 +749,7 @@
  * An identifier referring to a change annotation managed by a workspace
  * edit.
  *
- * @since 3.16.0.
+ * @since 3.16.0
  */
 export type ChangeAnnotationIdentifier = string;
 
@@ -745,7 +757,7 @@
 /**
  * A special text edit with an additional change annotation.
  *
- * @since 3.16.0.
+ * @since 3.16.0
  */
 export interface AnnotatedTextEdit extends TextEdit {
 	/**
@@ -927,6 +939,9 @@
 
 A workspace edit represents changes to many resources managed in the workspace. The edit should either provide `changes` or `documentChanges`. If the client can handle versioned document edits and if `documentChanges` are present, the latter are preferred over `changes`.
 
+ Since version 3.13.0 a workspace edit can contain resource operations (create, delete or rename files and folders) as well. If resource operations are present clients need to execute the operations in the order in which they are provided. So a workspace edit for example can consist of the following two changes: (1) create file a.txt and (2) a text document edit which insert text into file a.txt. An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will cause failure of the operation. How the client recovers from the failure is described by the client capability: `workspace.workspaceEdit.failureHandling`
+
+
 ```typescript
 export interface WorkspaceEdit {
 	/**
@@ -966,7 +981,7 @@
 	 */
 	changeAnnotations?: {
 		[id: string /* ChangeAnnotationIdentifier */]: ChangeAnnotation;
-	}
+	};
 }
 ```
 
@@ -976,7 +991,7 @@
 
 
 The capabilities of a workspace edit has evolved over the time. Clients can describe their support using the following client capability:
-
+_Client Capability_:
 * property path (optional): `workspace.workspaceEdit`
 * property type: `WorkspaceEditClientCapabilities` defined as follows:
 
@@ -1020,12 +1035,12 @@
 	 * @since 3.16.0
 	 */
 	changeAnnotationSupport?: {
-        /**
-         * Whether the client groups edits with equal labels into tree nodes,
-         * for instance all edits labelled with "Changes in Strings" would
-         * be a tree node.
-         */
-        groupsOnLabel?: boolean;
+		/**
+		 * Whether the client groups edits with equal labels into tree nodes,
+		 * for instance all edits labelled with "Changes in Strings" would
+		 * be a tree node.
+		 */
+		groupsOnLabel?: boolean;
 	};
 }
 
@@ -1271,8 +1286,8 @@
 	 * - `*` to match one or more characters in a path segment
 	 * - `?` to match on one character in a path segment
 	 * - `**` to match any number of path segments, including none
-	 * - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript
-	 *   and JavaScript files)
+	 * - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
+	 *   matches all TypeScript and JavaScript files)
 	 * - `[]` to declare a range of characters to match in a path segment
 	 *   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
 	 * - `[!...]` to negate a range of characters to match in a path segment
@@ -1360,14 +1375,14 @@
  * JavaScript / TypeScript:
  * ```typescript
  * let markdown: MarkdownContent = {
- *  kind: MarkupKind.Markdown,
- *	value: [
- *		'# Header',
- *		'Some text',
- *		'```typescript',
- *		'someCode();',
- *		'```'
- *	].join('\n')
+ * 	kind: MarkupKind.Markdown,
+ * 	value: [
+ * 		'# Header',
+ * 		'Some text',
+ * 		'```typescript',
+ * 		'someCode();',
+ * 		'```'
+ * 	].join('\n')
  * };
  * ```
  *
@@ -1389,7 +1404,7 @@
 
 In addition clients should signal the markdown parser they are using via the client capability `general.markdown` introduced in version 3.16.0 defined as follows:
 
- ```typescript
+```typescript
 /**
  * Client capabilities specific to the used markdown parser.
  *
@@ -1406,7 +1421,7 @@
 	 */
 	version?: string;
 }
- ```
+```
 
 Known markdown parsers used by clients right now are:
 
@@ -1477,7 +1492,7 @@
 
 	/**
 	 * Controls enablement state of a cancel button. This property is only valid
-	 *  if a cancel button got requested in the `WorkDoneProgressStart` payload.
+	 * if a cancel button got requested in the `WorkDoneProgressBegin` payload.
 	 *
 	 * Clients that don't support cancellation or don't support control the
 	 * button's enablement state are allowed to ignore the setting.
@@ -1613,7 +1628,7 @@
 		 * `window/workDoneProgress/create` request.
 		 */
 		workDoneProgress?: boolean;
-	}
+	};
 ```
 
 #### <a href="#partialResults" name="partialResults" class="anchor"> Partial Result Progress </a>
@@ -1670,7 +1685,7 @@
 The initial trace value is set by the client at initialization and can be modified later using the [$/setTrace](#setTrace) notification.
 
 ```typescript
-export type TraceValue = 'off' | 'message' | 'verbose'
+export type TraceValue = 'off' | 'messages' | 'verbose';
 ```
 
 ### Actual Protocol
@@ -1888,14 +1903,14 @@
 	/**
 	 * Capabilities specific to the `textDocument/formatting` request.
 	 */
-	formatting?: DocumentFormattingClientCapabilities
+	formatting?: DocumentFormattingClientCapabilities;
 
 	/**
 	 * Capabilities specific to the `textDocument/rangeFormatting` request.
 	 */
 	rangeFormatting?: DocumentRangeFormattingClientCapabilities;
 
-	/** request.
+	/**
 	 * Capabilities specific to the `textDocument/onTypeFormatting` request.
 	 */
 	onTypeFormatting?: DocumentOnTypeFormattingClientCapabilities;
@@ -2070,7 +2085,7 @@
 			 * The client has support for sending willDeleteFiles requests.
 			 */
 			willDelete?: boolean;
-		}
+		};
 	};
 
 	/**
@@ -2104,7 +2119,7 @@
 		 * @since 3.16.0
 		 */
 		showDocument?: ShowDocumentClientCapabilities;
-	}
+	};
 
 	/**
 	 * General client capabilities.
@@ -2125,7 +2140,7 @@
 		 * @since 3.16.0
 		 */
 		markdown?: MarkdownClientCapabilities;
-	}
+	};
 
 	/**
 	 * Experimental client capabilities.
@@ -2362,7 +2377,7 @@
 	 *
 	 * @since 3.16.0
 	 */
-    monikerProvider?: boolean | MonikerOptions | MonikerRegistrationOptions;
+	monikerProvider?: boolean | MonikerOptions | MonikerRegistrationOptions;
 
 	/**
 	 * The server provides workspace symbol support.
@@ -2419,8 +2434,8 @@
 			 * requests.
 			 */
 			willDelete?: FileOperationRegistrationOptions;
-		}
-	}
+		};
+	};
 
 	/**
 	 * Experimental server capabilities.
@@ -2444,7 +2459,9 @@
 
 #### <a href="#shutdown" name="shutdown" class="anchor">Shutdown Request (:leftwards_arrow_with_hook:)</a>
 
-The shutdown request is sent from the client to the server. It asks the server to shut down, but to not exit (otherwise the response might not be delivered correctly to the client). There is a separate exit notification that asks the server to exit. Clients must not send any notifications other than `exit` or requests to a server to which they have sent a shutdown request. If a server receives requests after a shutdown request those requests should error with `InvalidRequest`.
+The shutdown request is sent from the client to the server. It asks the server to shut down, but to not exit (otherwise the response might not be delivered correctly to the client). There is a separate exit notification that asks the server to exit. Clients must not send any notifications other than `exit` or requests to a server to which they have sent a shutdown request. Clients should also wait with sending the `exit` notification until they have received a response from the `shutdown` request.
+
+If a server receives requests after a shutdown request those requests should error with `InvalidRequest`.
 
 _Request_:
 * method: 'shutdown'
@@ -2468,7 +2485,7 @@
 A notification to log the trace of the server's execution.
 The amount and content of these notifications depends on the current `trace` configuration.
 If `trace` is `'off'`, the server should not send any `logTrace` notification.
-If `trace` is `'message'`, the server should not add the `'verbose'` field in the `LogTraceParams`.
+If `trace` is `'messages'`, the server should not add the `'verbose'` field in the `LogTraceParams`.
 
 `$/logTrace` should be used for systematic trace reporting. For single debugging messages, the server should send [`window/logMessage`](#window_logMessage) notifications.
 
@@ -2578,7 +2595,7 @@
 		 * request's response.
 		 */
 		additionalPropertiesSupport?: boolean;
-	}
+	};
 }
 ```
 
@@ -2961,7 +2978,11 @@
 
 > *Since version 3.6.0*
 
-The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server to inform the server about workspace folder configuration changes. The notification is sent by default if both _client capability_ `workspace.workspaceFolders` and the _server capability_ `workspace.workspaceFolders.supported` are true; or if the server has registered itself to receive this notification. To register for the `workspace/didChangeWorkspaceFolders` send a `client/registerCapability` request from the server to the client. The registration parameter must have a `registrations` item of the following form, where `id` is a unique id used to unregister the capability (the example uses a UUID):
+> *Correction in 3.16.0*
+
+The spec stated that the notification is sent by default if both _client capability_ `workspace.workspaceFolders` and the _server capability_ `workspace.workspaceFolders.supported` are true. This was incorrect and the correct way is to use the `changeNotification` property defined above which was introduced in 3.6.0 as well.
+
+The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server to inform the server about workspace folder configuration changes. The notification is sent automatically if the servers signals interest in it using the server capability `workspace.workspaceFolders.changeNotification` or if the server has registered itself to receive this notification. To register for the `workspace/didChangeWorkspaceFolders` send a `client/registerCapability` request from the server to the client. The registration parameter must have a `registrations` item of the following form, where `id` is a unique id used to unregister the capability (the example uses a UUID):
 ```ts
 {
 	id: "28c6150c-bd7b-11e7-abc4-cec278b6b50a",
@@ -3105,14 +3126,14 @@
 
 export interface FileSystemWatcher {
 	/**
-	 * The  glob pattern to watch.
+	 * The glob pattern to watch.
 	 *
 	 * Glob patterns can have the following syntax:
 	 * - `*` to match one or more characters in a path segment
 	 * - `?` to match on one character in a path segment
 	 * - `**` to match any number of path segments, including none
-	 * - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript
-	 *   and JavaScript files)
+	 * - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
+	 *   matches all TypeScript and JavaScript files)
 	 * - `[]` to declare a range of characters to match in a path segment
 	 *   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
 	 * - `[!...]` to negate a range of characters to match in a path segment
@@ -3227,7 +3248,7 @@
 		 * the initial version of the protocol.
 		 */
 		valueSet?: SymbolKind[];
-	}
+	};
 
 	/**
 	 * The client supports tags on `SymbolInformation`.
@@ -3239,8 +3260,8 @@
 		/**
 		 * The tags supported by the client.
 		 */
-		valueSet: SymbolTag[]
-	}
+		valueSet: SymbolTag[];
+	};
 }
 ```
 
@@ -3309,7 +3330,7 @@
 	/**
 	 * The commands to be executed on the server
 	 */
-	commands: string[]
+	commands: string[];
 }
 ```
 
@@ -3323,7 +3344,7 @@
 }
 ```
 
-_Request:_
+_Request_:
 * method: 'workspace/executeCommand'
 * params: `ExecuteCommandParams` defined as follows:
 
@@ -3397,7 +3418,7 @@
 	/**
 	 * Depending on the client's failure handling strategy `failedChange`
 	 * might contain the index of the change that failed. This property is
-	 * only available if the client signals a `failureHandlingStrategy`
+	 * only available if the client signals a `failureHandling` strategy
 	 * in its client capabilities.
 	 */
 	failedChange?: uinteger;
@@ -3407,7 +3428,7 @@
 
 #### <a href="#workspace_willCreateFiles" name="workspace_willCreateFiles" class="anchor">WillCreateFiles Request (:leftwards_arrow_with_hook:)</a>
 
-The will create files request is sent from the client to the server before files are actually created as long as the creation is triggered from within the client. The request can return a WorkspaceEdit which will be applied to workspace before the files are created. Please note that clients might drop results if computing the edit took too long or if a server constantly fails on this request. This is done to keep creates fast and reliable.
+The will create files request is sent from the client to the server before files are actually created as long as the creation is triggered from within the client either by a user action or by applying a workspace edit. The request can return a WorkspaceEdit which will be applied to workspace before the files are created. Please note that clients might drop results if computing the edit took too long or if a server constantly fails on this request. This is done to keep creates fast and reliable.
 
 _Client Capability_:
 * property name (optional): `workspace.fileOperations.willCreate`
@@ -3477,8 +3498,8 @@
 	 * - `*` to match one or more characters in a path segment
 	 * - `?` to match on one character in a path segment
 	 * - `**` to match any number of path segments, including none
-	 * - `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript
-	 *   and JavaScript files)
+	 * - `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}`
+	 *   matches all TypeScript and JavaScript files)
 	 * - `[]` to declare a range of characters to match in a path segment
 	 *   (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
 	 * - `[!...]` to negate a range of characters to match in a path segment
@@ -3582,7 +3603,7 @@
 
 #### <a href="#workspace_willRenameFiles" name="workspace_willRenameFiles" class="anchor">WillRenameFiles Request (:leftwards_arrow_with_hook:)</a>
 
-The will rename files request is sent from the client to the server before files are actually renamed as long as the rename is triggered from within the client. The request can return a WorkspaceEdit which will be applied to workspace before the files are renamed. Please note that clients might drop results if computing the edit took too long or if a server constantly fails on this request. This is done to keep renames fast and reliable.
+The will rename files request is sent from the client to the server before files are actually renamed as long as the rename is triggered from within the client either by a user action or by applying a workspace edit. The request can return a WorkspaceEdit which will be applied to workspace before the files are renamed. Please note that clients might drop results if computing the edit took too long or if a server constantly fails on this request. This is done to keep renames fast and reliable.
 
 _Client Capability_:
 * property name (optional): `workspace.fileOperations.willRename`
@@ -3662,7 +3683,7 @@
 
 #### <a href="#workspace_willDeleteFiles" name="workspace_willDeleteFiles" class="anchor">WillDeleteFiles Request (:leftwards_arrow_with_hook:)</a>
 
-The will delete files request is sent from the client to the server before files are actually deleted as long as the deletion is triggered from within the client. The request can return a WorkspaceEdit which will be applied to workspace before the files are deleted. Please note that clients might drop results if computing the edit took too long or if a server constantly fails on this request. This is done to keep deletes fast and reliable.
+The will delete files request is sent from the client to the server before files are actually deleted as long as the deletion is triggered from within the client either by a user action or by applying a workspace edit. The request can return a WorkspaceEdit which will be applied to workspace before the files are deleted. Please note that clients might drop results if computing the edit took too long or if a server constantly fails on this request. This is done to keep deletes fast and reliable.
 
 _Client Capability_:
 * property name (optional): `workspace.fileOperations.willDelete`
@@ -3794,7 +3815,7 @@
 
 The document open notification is sent from the client to the server to signal newly opened text documents. The document's content is now managed by the client and the server must not try to read the document's content using the document's Uri. Open in this sense means it is managed by the client. It doesn't necessarily mean that its content is presented in an editor. An open notification must not be sent more than once without a corresponding close notification send before. This means open and close notification must be balanced and the max open count for a particular textDocument is one. Note that a server's ability to fulfill requests is independent of whether a text document is open or closed.
 
-The `DidOpenTextDocumentParams` contain the language id the document is associated with. If the language Id of a document changes, the client needs to send a `textDocument/didClose` to the server followed by a `textDocument/didOpen` with the new language id if the server handles the new language id as well.
+The `DidOpenTextDocumentParams` contain the language id the document is associated with. If the language id of a document changes, the client needs to send a `textDocument/didClose` to the server followed by a `textDocument/didOpen` with the new language id if the server handles the new language id as well.
 
 _Client Capability_:
 See general synchronization [client capabilities](#textDocument_synchronization_cc).
@@ -3819,7 +3840,7 @@
 
 #### <a href="#textDocument_didChange" name="textDocument_didChange" class="anchor">DidChangeTextDocument Notification (:arrow_right:)</a>
 
-The document change notification is sent from the client to the server to signal changes to a text document. Before a client can change a text document it must claim ownership of its content using the `textDocument/didOpen` notification. In 2.0 the shape of the params has changed to include proper version numbers and language ids.
+The document change notification is sent from the client to the server to signal changes to a text document. Before a client can change a text document it must claim ownership of its content using the `textDocument/didOpen` notification. In 2.0 the shape of the params has changed to include proper version numbers.
 
 _Client Capability_:
 See general synchronization [client capabilities](#textDocument_synchronization_cc).
@@ -3899,7 +3920,7 @@
 	 * The new text of the whole document.
 	 */
 	text: string;
-}
+};
 ```
 
 #### <a href="#textDocument_willSave" name="textDocument_willSave" class="anchor">WillSaveTextDocument Notification (:arrow_right:)</a>
@@ -3988,7 +4009,7 @@
 * params: `WillSaveTextDocumentParams`
 
 _Response_:
-* result:`TextEdit[]` \| `null`
+* result:[`TextEdit[]`](#textEdit) \| `null`
 * error: code and message set in case an exception happens during the `willSaveWaitUntil` request.
 
 #### <a href="#textDocument_didSave" name="textDocument_didSave" class="anchor">DidSaveTextDocument Notification (:arrow_right:)</a>
@@ -4170,7 +4191,7 @@
 
 _Client Capability_:
 * property name (optional): `textDocument.publishDiagnostics`
-* property type `PublishDiagnosticsClientCapabilities` defined as follows:
+* property type: `PublishDiagnosticsClientCapabilities` defined as follows:
 
 ```typescript
 export interface PublishDiagnosticsClientCapabilities {
@@ -4235,7 +4256,7 @@
 	 *
 	 * @since 3.15.0
 	 */
-	version?: uinteger;
+	version?: integer;
 
 	/**
 	 * An array of diagnostic information items.
@@ -4278,10 +4299,10 @@
 		/**
 		 * Client supports commit characters on a completion item.
 		 */
-		commitCharactersSupport?: boolean
+		commitCharactersSupport?: boolean;
 
 		/**
-		 * Client supports the follow content formats for the documentation
+		 * Client supports the following content formats for the documentation
 		 * property. The order describes the preferred format of the client.
 		 */
 		documentationFormat?: MarkupKind[];
@@ -4308,8 +4329,8 @@
 			/**
 			 * The tags supported by the client.
 			 */
-			valueSet: CompletionItemTag[]
-		}
+			valueSet: CompletionItemTag[];
+		};
 
 		/**
 		 * Client supports insert replace edit to control different behavior if
@@ -4322,7 +4343,7 @@
 		/**
 		 * Indicates which properties a client can resolve lazily on a
 		 * completion item. Before version 3.16.0 only the predefined properties
-		 * `documentation` and `details` could be resolved lazily.
+		 * `documentation` and `detail` could be resolved lazily.
 		 *
 		 * @since 3.16.0
 		 */
@@ -4336,13 +4357,13 @@
 		/**
 		 * The client supports the `insertTextMode` property on
 		 * a completion item to override the whitespace handling mode
-		 * as defined by the client (see `insertTextMode`).
+		 * as defined by the client.
 		 *
 		 * @since 3.16.0
 		 */
 		insertTextModeSupport?: {
 			valueSet: InsertTextMode[];
-		}
+		};
 	};
 
 	completionItemKind?: {
@@ -4487,8 +4508,11 @@
  */
 export interface CompletionList {
 	/**
-	 * This list it not complete. Further typing should result in recomputing
+	 * This list is not complete. Further typing should result in recomputing
 	 * this list.
+	 *
+	 * Recomputed lists have all their items replaced (not appended) in the
+	 * incomplete completion sessions.
 	 */
 	isIncomplete: boolean;
 
@@ -4639,19 +4663,22 @@
 
 	/**
 	 * A string that should be used when comparing this item
-	 * with other items. When `falsy` the label is used.
+	 * with other items. When `falsy` the label is used
+	 * as the sort text for this item.
 	 */
 	sortText?: string;
 
 	/**
 	 * A string that should be used when filtering a set of
-	 * completion items. When `falsy` the label is used.
+	 * completion items. When `falsy` the label is used as the
+	 * filter text for this item.
 	 */
 	filterText?: string;
 
 	/**
 	 * A string that should be inserted into a document when selecting
-	 * this completion. When `falsy` the label is used.
+	 * this completion. When `falsy` the label is used as the insert text
+	 * for this item.
 	 *
 	 * The `insertText` is subject to interpretation by the client side.
 	 * Some tools might not take the string literally. For example
@@ -4672,8 +4699,7 @@
 
 	/**
 	 * How whitespace and indentation is handled during completion
-	 * item insertion. If not provided the client's default value depends on
-	 * the `textDocument.completion.insertTextMode` client capability.
+	 * item insertion. If not provided the client's default value is used.
 	 *
 	 * @since 3.16.0
 	 */
@@ -4690,7 +4716,7 @@
 	 * item. One is to insert a completion text and the other is to replace an
 	 * existing text with a completion text. Since this can usually not be
 	 * predetermined by a server it can report both ranges. Clients need to
-	 * signal support for `InsertReplaceEdits` via the
+	 * signal support for `InsertReplaceEdit`s via the
 	 * `textDocument.completion.insertReplaceSupport` client capability
 	 * property.
 	 *
@@ -4735,7 +4761,7 @@
 	 * A data entry field that is preserved on a completion item between
 	 * a completion and a completion resolve request.
 	 */
-	data?: any
+	data?: any;
 }
 
 /**
@@ -4769,7 +4795,7 @@
 	export const TypeParameter = 25;
 }
 ```
-* partial result: `CompletionItem[]`  or `CompletionList` followed by `CompletionItem[]`. If the first provided result item is of type `CompletionList` subsequent partial results of `CompletionItem[]` add to the `items` property of the `CompletionList`.
+* partial result: `CompletionItem[]` or `CompletionList` followed by `CompletionItem[]`. If the first provided result item is of type `CompletionList` subsequent partial results of `CompletionItem[]` add to the `items` property of the `CompletionList`.
 * error: code and message set in case an exception happens during the completion request.
 
 Completion items support snippets (see `InsertTextFormat.Snippet`). The snippet format is as follows:
@@ -4882,7 +4908,7 @@
 	dynamicRegistration?: boolean;
 
 	/**
-	 * Client supports the follow content formats if the content
+	 * Client supports the following content formats if the content
 	 * property refers to a `literal of type MarkupContent`.
 	 * The order describes the preferred format of the client.
 	 */
@@ -4982,7 +5008,7 @@
 	 */
 	signatureInformation?: {
 		/**
-		 * Client supports the follow content formats for the documentation
+		 * Client supports the following content formats for the documentation
 		 * property. The order describes the preferred format of the client.
 		 */
 		documentationFormat?: MarkupKind[];
@@ -5149,8 +5175,8 @@
 
 	/**
 	 * The active signature. If omitted or the value lies outside the
-	 * range of `signatures` the value defaults to zero or is ignore if
-	 * the `SignatureHelp` as no signatures.
+	 * range of `signatures` the value defaults to zero or is ignored if
+	 * the `SignatureHelp` has no signatures.
 	 *
 	 * Whenever possible implementors should make an active decision about
 	 * the active signature and shouldn't rely on a default value.
@@ -5275,7 +5301,7 @@
 _Registration Options_: `DeclarationRegistrationOptions` defined as follows:
 ```typescript
 export interface DeclarationRegistrationOptions extends DeclarationOptions,
-	TextDocumentRegistrationOptions, StaticRegistrationOptions  {
+	TextDocumentRegistrationOptions, StaticRegistrationOptions {
 }
 ```
 
@@ -5515,7 +5541,7 @@
 ```typescript
 export interface ReferenceParams extends TextDocumentPositionParams,
 	WorkDoneProgressParams, PartialResultParams {
-	context: ReferenceContext
+	context: ReferenceContext;
 }
 
 export interface ReferenceContext {
@@ -5660,7 +5686,7 @@
 		 * the initial version of the protocol.
 		 */
 		valueSet?: SymbolKind[];
-	}
+	};
 
 	/**
 	 * The client supports hierarchical document symbols.
@@ -5678,8 +5704,8 @@
 		/**
 		 * The tags supported by the client.
 		 */
-		valueSet: SymbolTag[]
-	}
+		valueSet: SymbolTag[];
+	};
 
 	/**
 	 * The client supports an additional label presented in the UI when
@@ -5767,7 +5793,7 @@
 /**
  * Symbol tags are extra annotations that tweak the rendering of a symbol.
  *
- * @since 3.16
+ * @since 3.16.0
  */
 export namespace SymbolTag {
 
@@ -5855,7 +5881,7 @@
 	kind: SymbolKind;
 
 	/**
-	 * Tags for this completion item.
+	 * Tags for this symbol.
 	 *
 	 * @since 3.16.0
 	 */
@@ -5976,12 +6002,12 @@
 	resolveSupport?: {
 		/**
 		 * The properties that a client can resolve lazily.
-		*/
+		 */
 		properties: string[];
 	};
 
 	/**
-	 * Whether th client honors the change annotations in
+	 * Whether the client honors the change annotations in
 	 * text edits and resource operations returned via the
 	 * `CodeAction#edit` property by for example presenting
 	 * the workspace edit in the user interface and asking
@@ -6250,7 +6276,7 @@
 	 *
 	 * @since 3.16.0
 	 */
-	data?: any
+	data?: any;
 }
 ```
 * partial result: `(Command | CodeAction)[]`
@@ -6266,7 +6292,7 @@
 Consider the clients announces the `edit` property as a property that can be resolved lazy using the client capability
 
 ```typescript
-textDocument.codeAction.resolveSupport = { properties: ['edit']};
+textDocument.codeAction.resolveSupport = { properties: ['edit'] };
 ```
 
 then a code action
@@ -6369,7 +6395,7 @@
 	 * A data entry field that is preserved on a code lens item between
 	 * a code lens and a code lens resolve request.
 	 */
-	data?: any
+	data?: any;
 }
 ```
 * partial result: `CodeLens[]`
@@ -6682,7 +6708,7 @@
 	label: string;
 	/**
 	 * An [edit](#TextEdit) which is applied to a document when selecting
-	 * this presentation for the color.  When `falsy` the
+	 * this presentation for the color. When `falsy` the
 	 * [label](#ColorPresentation.label) is used.
 	 */
 	textEdit?: TextEdit;
@@ -6791,7 +6817,7 @@
 ```
 
 _Response_:
-* result: [`TextEdit[]`](#textedit) \| `null` describing the modification to the document to be formatted.
+* result: [`TextEdit[]`](#textEdit) \| `null` describing the modification to the document to be formatted.
 * error: code and message set in case an exception happens during the formatting request.
 
 #### <a href="#textDocument_rangeFormatting" name="textDocument_rangeFormatting" class="anchor">Document Range Formatting Request (:leftwards_arrow_with_hook:)</a>
@@ -6852,7 +6878,7 @@
 ```
 
 _Response_:
-* result: [`TextEdit[]`](#textedit) \| `null` describing the modification to the document to be formatted.
+* result: [`TextEdit[]`](#textEdit) \| `null` describing the modification to the document to be formatted.
 * error: code and message set in case an exception happens during the range formatting request.
 
 #### <a href="#textDocument_onTypeFormatting" name="textDocument_onTypeFormatting" class="anchor">Document on Type Formatting Request (:leftwards_arrow_with_hook:)</a>
@@ -6916,7 +6942,7 @@
 ```
 
 _Response_:
-* result: [`TextEdit[]`](#textedit) \| `null` describing the modification to the document.
+* result: [`TextEdit[]`](#textEdit) \| `null` describing the modification to the document.
 * error: code and message set in case an exception happens during the range formatting request.
 
 #### <a href="#textDocument_rename" name="textDocument_rename" class="anchor">Rename Request (:leftwards_arrow_with_hook:)</a>
@@ -6945,7 +6971,7 @@
 	 * Client supports testing for validity of rename operations
 	 * before execution.
 	 *
-	 * @since version 3.12.0
+	 * @since 3.12.0
 	 */
 	prepareSupport?: boolean;
 
@@ -6956,12 +6982,12 @@
 	 * The value indicates the default behavior used by the
 	 * client.
 	 *
-	 * @since version 3.16.0
+	 * @since 3.16.0
 	 */
 	prepareSupportDefaultBehavior?: PrepareSupportDefaultBehavior;
 
 	/**
-	 * Whether th client honors the change annotations in
+	 * Whether the client honors the change annotations in
 	 * text edits and resource operations returned via the
 	 * rename request's workspace edit by for example presenting
 	 * the workspace edit in the user interface and asking
@@ -7173,7 +7199,7 @@
 
 The selection range request is sent from the client to the server to return suggested selection ranges at an array of given positions. A selection range is a range around the cursor position which the user might be interested in selecting.
 
-A selection range in the return array is for the position in the provided parameters at the same index. Therefore positions[i] must be contained in result[i].range.
+A selection range in the return array is for the position in the provided parameters at the same index. Therefore positions[i] must be contained in result[i].range. To allow for results where some positions have selection ranges and others do not, result[i].range is allowed to be the empty range at positions[i].
 
 Typically, but not necessary, selection ranges correspond to the nodes of the syntax tree.
 
@@ -7236,15 +7262,15 @@
 
 ```typescript
 export interface SelectionRange {
-    /**
-     * The [range](#Range) of this selection range.
-     */
-    range: Range;
-    /**
-     * The parent selection range containing this range. Therefore
+	/**
+	 * The [range](#Range) of this selection range.
+	 */
+	range: Range;
+	/**
+	 * The parent selection range containing this range. Therefore
 	 * `parent.range` must contain `this.range`.
-     */
-    parent?: SelectionRange;
+	 */
+	parent?: SelectionRange;
 }
 ```
 
@@ -7536,7 +7562,9 @@
 - at index `5*i+3` - `tokenType`: will be looked up in `SemanticTokensLegend.tokenTypes`. We currently ask that `tokenType` < 65536.
 - at index `5*i+4` - `tokenModifiers`: each set bit will be looked up in `SemanticTokensLegend.tokenModifiers`
 
-Whether a token can span multiple lines is defined by the client capability `multilineTokenSupport`. The client capability `overlappingTokenSupport` defines whether tokens can overlap each other.
+Whether a token can span multiple lines is defined by the client capability `multilineTokenSupport`. If multiline tokens are not supported and a tokens length takes it past the end of the line, it should be treated as if the token ends at the end of the line and will not wrap onto the next line.
+
+The client capability `overlappingTokenSupport` defines whether tokens can overlap each other.
 
 Lets look at a concrete example which uses single line tokens without overlaps for encoding a file with 3 tokens in a number array. We start with absolute positions to demonstrate how they can easily be transformed into relative positions:
 
@@ -7599,6 +7627,8 @@
 
 The delta is now expressed on these number arrays without any form of interpretation what these numbers mean. This is comparable to the text document edits send from the server to the client to modify the content of a file. Those are character based and don't make any assumption about the meaning of the characters. So `[  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]` can be transformed into `[  3,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0]` using the following edit description: `{ start:  0, deleteCount: 1, data: [3] }` which tells the client to simply replace the first number (e.g. `2`) in the array with `3`.
 
+Semantic token edits behave conceptually like [text edits](#textEditArray) on documents: if an edit description consists of n edits all n edits are based on the same state Sm of the number array. They will move the number array from state Sm to Sm+1. A client applying the edits must not assume that they are sorted. An easy algorithm to apply them to the number array is to sort the edits and apply them from the back to the front of the number array.
+
 
 _Client Capability_:
 
@@ -7643,10 +7673,10 @@
 			/**
 			 * The client will send the `textDocument/semanticTokens/full/delta`
 			 * request if the server provides a corresponding handler.
-			*/
-			delta?: boolean
-		}
-	}
+			 */
+			delta?: boolean;
+		};
+	};
 
 	/**
 	 * The token types that the client supports.
@@ -7704,7 +7734,7 @@
 		 * The server supports deltas for full documents.
 		 */
 		delta?: boolean;
-	}
+	};
 }
 ```
 
@@ -7826,7 +7856,7 @@
 
 ```typescript
 export interface SemanticTokensDeltaPartialResult {
-	edits: SemanticTokensEdit[]
+	edits: SemanticTokensEdit[];
 }
 ```
 
@@ -7834,7 +7864,10 @@
 
 **Requesting semantic tokens for a range**
 
-When a user opens a file it can be beneficial to only compute the semantic tokens for the visible range (faster rendering of the tokens in the user interface). If a server can compute these tokens faster than for the whole file it can provide a handler for the `textDocument/semanticTokens/range` request to handle this case special. Please note that if a client also announces that it will send the `textDocument/semanticTokens/range` server should implement this request as well to allow for flicker free scrolling and semantic coloring of a minimap.
+There are two uses cases where it can be beneficial to only compute semantic tokens for a visible range:
+
+- for faster rendering of the tokens in the user interface when a user opens a file. In this use cases servers should also implement the `textDocument/semanticTokens/full` request as well to allow for flicker free scrolling and semantic coloring of a minimap.
+- if computing semantic tokens for a full document is too expensive servers can only provide a range call. In this case the client might not render a minimap correctly or might even decide to not show any semantic tokens at all.
 
 _Request_:
 
@@ -7858,7 +7891,7 @@
 
 _Response_:
 
-* result: `SemanticTokens | null` where `SemanticTokensDelta`
+* result: `SemanticTokens | null`
 * partial result: `SemanticTokensPartialResult`
 * error: code and message set in case an exception happens during the 'textDocument/semanticTokens/range' request
 
@@ -7999,7 +8032,7 @@
 _Server Capability_:
 
 * property name (optional): `monikerProvider`
-* property type: `boolean | MonikerOptions | MonikerRegistrationOptions`  is defined as follows:
+* property type: `boolean | MonikerOptions | MonikerRegistrationOptions` is defined as follows:
 
 ```typescript
 export interface MonikerOptions extends WorkDoneProgressOptions {
@@ -8035,8 +8068,8 @@
 
 ```typescript
 /**
-  * Moniker uniqueness level to define scope of the moniker.
-  */
+ * Moniker uniqueness level to define scope of the moniker.
+ */
 export enum UniquenessLevel {
 	/**
 	 * The moniker is only unique inside a document
@@ -8116,16 +8149,19 @@
 
 Server implementations of this method should ensure that the moniker calculation matches to those used in the corresponding LSIF implementation to ensure symbols can be associated correctly across IDE sessions and LSIF indexes.
 
-### Implementation considerations
+### <a href="#implementationConsiderations" name="implementationConsiderations" class="anchor">Implementation Considerations</a>
 
 Language servers usually run in a separate process and client communicate with them in an asynchronous fashion. Additionally clients usually allow users to interact with the source code even if request results are pending. We recommend the following implementation pattern to avoid that clients apply outdated response results:
 
-- if a client sends a request to the server and the client state changes in a way that the result will be invalid it should cancel the server request and ignore the result. If necessary it can resend the request to receive an up to date result.
-- if a server detects a state change that invalidates the result of a request in execution the server can error these requests with `ContentModified`. If clients receive a `ContentModified` error, it generally should not show it in the UI for the end-user. Clients can resend the request if appropriate.
+- if a client sends a request to the server and the client state changes in a way that it invalidates the response it should do the following:
+  - cancel the server request and ignore the result if the result is not useful for the client anymore. If necessary the client should resend the request.
+  - keep the request running if the client can still make use of the result by for example transforming it to a new result by applying the state change to the result.
+- servers should therefore not decide by themselves to cancel requests simply due to that fact that a state change notification is detected in the queue. As said the result could still be useful for the client.
+- if a server detects an internal state change (for example a project context changed) that invalidates the result of a request in execution the server can error these requests with `ContentModified`. If clients receive a `ContentModified` error, it generally should not show it in the UI for the end-user. Clients can resend the request if they know how to do so. It should be noted that for all position based requests it might be especially hard for clients to re-craft a request.
 - if servers end up in an inconsistent state they should log this to the client using the `window/logMessage` request. If they can't recover from this the best they can do right now is to exit themselves. We are considering an [extension to the protocol](https://github.com/Microsoft/language-server-protocol/issues/646) that allows servers to request a restart on the client side.
 - if a client notices that a server exits unexpectedly, it should try to restart the server. However clients should be careful not to restart a crashing server endlessly. VS Code, for example, doesn't restart a server which has crashed 5 times in the last 180 seconds.
 
-Servers usually support different communication channels (e.g. stdio, pipes, ...). To easy the usage of servers in different clients it is highly recommended that a server implementation supports the following command line arguments to pick the communication channel:
+Servers usually support different communication channels (e.g. stdio, pipes, ...). To ease the usage of servers in different clients it is highly recommended that a server implementation supports the following command line arguments to pick the communication channel:
 
 - **stdio**: uses stdio as the communication channel.
 - **pipe**: use pipes (Windows) or socket files (Linux, Mac) as the communication channel. The pipe / socket file name is passed as the next arg or with `--pipe=`.
diff --git a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart
index 033fcb4..daa8e97 100644
--- a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart
@@ -372,12 +372,6 @@
       packages = Packages.empty;
     }
 
-    // TODO(scheglov) Can we use Packages instead?
-    var packageMap = <String, List<Folder>>{};
-    for (var package in packages.packages) {
-      packageMap[package.name] = [package.libFolder];
-    }
-
     var rootPath = folder.path;
 
     Workspace? workspace;
@@ -385,9 +379,9 @@
         lookForBuildFileSubstitutes: false);
     workspace ??= GnWorkspace.find(resourceProvider, rootPath);
     workspace ??=
-        PackageBuildWorkspace.find(resourceProvider, packageMap, rootPath);
-    workspace ??= PubWorkspace.find(resourceProvider, packageMap, rootPath);
-    workspace ??= BasicWorkspace.find(resourceProvider, packageMap, rootPath);
+        PackageBuildWorkspace.find(resourceProvider, packages, rootPath);
+    workspace ??= PubWorkspace.find(resourceProvider, packages, rootPath);
+    workspace ??= BasicWorkspace.find(resourceProvider, packages, rootPath);
     return workspace;
   }
 
diff --git a/pkg/analyzer/lib/src/error/use_result_verifier.dart b/pkg/analyzer/lib/src/error/use_result_verifier.dart
index 539e971..3a0fd4f 100644
--- a/pkg/analyzer/lib/src/error/use_result_verifier.dart
+++ b/pkg/analyzer/lib/src/error/use_result_verifier.dart
@@ -15,6 +15,15 @@
 
   UseResultVerifier(this._errorReporter);
 
+  void checkFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+    var element = node.staticElement;
+    if (element == null) {
+      return;
+    }
+
+    _check(node, element);
+  }
+
   void checkMethodInvocation(MethodInvocation node) {
     var element = node.methodName.staticElement;
     if (element == null) {
@@ -39,8 +48,11 @@
     }
 
     var parent = node.parent;
-    // Covered by checkPropertyAccess and checkMethodInvocation respectively.
-    if (parent is PropertyAccess || parent is MethodInvocation) {
+    // Covered by checkPropertyAccess, checkMethodInvocation
+    // and checkFunctionExpressionInvocation respectively.
+    if (parent is PropertyAccess ||
+        parent is MethodInvocation ||
+        parent is FunctionExpressionInvocation) {
       return;
     }
 
@@ -71,15 +83,21 @@
       return;
     }
 
-    var displayName = element.displayName;
+    var toAnnotate = _getNodeToAnnotate(node);
+    String displayName;
+    if (toAnnotate is SimpleIdentifier) {
+      displayName = toAnnotate.name;
+    } else {
+      displayName = element.displayName;
+    }
 
     var message = _getUseResultMessage(annotation);
     if (message == null || message.isEmpty) {
       _errorReporter.reportErrorForNode(
-          HintCode.UNUSED_RESULT, _getNodeToAnnotate(node), [displayName]);
+          HintCode.UNUSED_RESULT, toAnnotate, [displayName]);
     } else {
       _errorReporter.reportErrorForNode(HintCode.UNUSED_RESULT_WITH_MESSAGE,
-          _getNodeToAnnotate(node), [displayName, message]);
+          toAnnotate, [displayName, message]);
     }
   }
 
@@ -116,6 +134,9 @@
     if (node is PropertyAccess) {
       return node.propertyName;
     }
+    if (node is FunctionExpressionInvocation) {
+      return _getNodeToAnnotate(node.function);
+    }
     return node;
   }
 
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 7ccf2f3..d6491fa 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -244,14 +244,10 @@
     push(_Modifiers()..abstractKeyword = abstractToken);
     if (!enableMacros) {
       if (macroToken != null) {
-        var feature = ExperimentalFeatures.macros;
-        handleRecoverableError(
-            templateExperimentNotEnabled.withArguments(
-              feature.enableString,
-              _versionAsString(ExperimentStatus.currentVersion),
-            ),
-            macroToken,
-            macroToken);
+        _reportFeatureNotEnabled(
+          feature: ExperimentalFeatures.macros,
+          startToken: macroToken,
+        );
         // Pretend that 'macro' didn't occur while this feature is incomplete.
         macroToken = null;
       }
@@ -399,14 +395,10 @@
     push(_Modifiers()..abstractKeyword = abstractToken);
     if (!enableMacros) {
       if (macroToken != null) {
-        var feature = ExperimentalFeatures.macros;
-        handleRecoverableError(
-            templateExperimentNotEnabled.withArguments(
-              feature.enableString,
-              _versionAsString(ExperimentStatus.currentVersion),
-            ),
-            macroToken,
-            macroToken);
+        _reportFeatureNotEnabled(
+          feature: ExperimentalFeatures.macros,
+          startToken: macroToken,
+        );
         // Pretend that 'macro' didn't occur while this feature is incomplete.
         macroToken = null;
       }
@@ -765,14 +757,9 @@
         ),
       );
       if (!enableTripleShift && operatorToken.type == TokenType.GT_GT_GT) {
-        var feature = ExperimentalFeatures.triple_shift;
-        handleRecoverableError(
-          templateExperimentNotEnabled.withArguments(
-            feature.enableString,
-            _versionAsString(ExperimentStatus.currentVersion),
-          ),
-          operatorToken,
-          operatorToken,
+        _reportFeatureNotEnabled(
+          feature: ExperimentalFeatures.triple_shift,
+          startToken: operatorToken,
         );
       }
     }
@@ -1320,25 +1307,18 @@
   void endExtensionDeclaration(Token extensionKeyword, Token? typeKeyword,
       Token onKeyword, Token? showKeyword, Token? hideKeyword, Token token) {
     if (typeKeyword != null && !enableExtensionTypes) {
-      var feature = ExperimentalFeatures.extension_types;
-      handleRecoverableError(
-          templateExperimentNotEnabled.withArguments(
-            feature.enableString,
-            _versionAsString(ExperimentStatus.currentVersion),
-          ),
-          typeKeyword,
-          typeKeyword);
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.extension_types,
+        startToken: typeKeyword,
+      );
     }
 
-    if ((showKeyword != null || hideKeyword != null) && !enableExtensionTypes) {
-      var feature = ExperimentalFeatures.extension_types;
-      handleRecoverableError(
-          templateExperimentNotEnabled.withArguments(
-            feature.enableString,
-            _versionAsString(ExperimentStatus.currentVersion),
-          ),
-          (showKeyword ?? hideKeyword)!,
-          (showKeyword ?? hideKeyword)!);
+    final showOrHideKeyword = showKeyword ?? hideKeyword;
+    if (showOrHideKeyword != null && !enableExtensionTypes) {
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.extension_types,
+        startToken: showOrHideKeyword,
+      );
     }
 
     ShowClause? showClause = pop(NullValue.ShowClause) as ShowClause?;
@@ -1533,14 +1513,9 @@
     debugEvent("FormalParameter");
 
     if (superKeyword != null && !enableSuperParameters) {
-      var feature = ExperimentalFeatures.super_parameters;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        superKeyword,
-        superKeyword,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.super_parameters,
+        startToken: superKeyword,
       );
     }
 
@@ -1551,8 +1526,11 @@
     var keyword = modifiers?.finalConstOrVarKeyword;
     var covariantKeyword = modifiers?.covariantKeyword;
     var requiredKeyword = modifiers?.requiredToken;
-    if (!enableNonNullable) {
-      reportNonNullableModifierError(requiredKeyword);
+    if (!enableNonNullable && requiredKeyword != null) {
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.non_nullable,
+        startToken: requiredKeyword,
+      );
     }
     var metadata = pop() as List<Annotation>?;
     var comment = _findComment(metadata,
@@ -1845,14 +1823,10 @@
 
     if (!enableMacros) {
       if (augmentToken != null) {
-        var feature = ExperimentalFeatures.macros;
-        handleRecoverableError(
-            templateExperimentNotEnabled.withArguments(
-              feature.enableString,
-              _versionAsString(ExperimentStatus.currentVersion),
-            ),
-            augmentToken,
-            augmentToken);
+        _reportFeatureNotEnabled(
+          feature: ExperimentalFeatures.macros,
+          startToken: augmentToken,
+        );
         // Pretend that 'augment' didn't occur while this feature is incomplete.
         augmentToken = null;
       }
@@ -2050,14 +2024,9 @@
     var typeArguments = pop() as TypeArgumentList?;
     if (typeArguments != null &&
         !_featureSet.isEnabled(Feature.generic_metadata)) {
-      var feature = Feature.generic_metadata;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        typeArguments.beginToken,
-        typeArguments.beginToken,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.generic_metadata,
+        startToken: typeArguments.beginToken,
       );
     }
     var name = pop() as Identifier;
@@ -2510,14 +2479,9 @@
       var metadata = pop() as List<Annotation>?;
       var comment = _findComment(metadata, typedefKeyword);
       if (type is! GenericFunctionType && !enableNonFunctionTypeAliases) {
-        var feature = Feature.nonfunction_type_aliases;
-        handleRecoverableError(
-          templateExperimentNotEnabled.withArguments(
-            feature.enableString,
-            _versionAsString(ExperimentStatus.currentVersion),
-          ),
-          equals,
-          equals,
+        _reportFeatureNotEnabled(
+          feature: ExperimentalFeatures.nonfunction_type_aliases,
+          startToken: equals,
         );
       }
       declarations.add(ast.genericTypeAlias(comment, metadata, typedefKeyword,
@@ -2670,14 +2634,9 @@
       ),
     );
     if (!enableTripleShift && token.type == TokenType.GT_GT_GT_EQ) {
-      var feature = ExperimentalFeatures.triple_shift;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(ExperimentStatus.currentVersion),
-        ),
-        token,
-        token,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.triple_shift,
+        startToken: token,
       );
     }
   }
@@ -2921,14 +2880,9 @@
       Token token = tmpArguments != null
           ? tmpArguments.argumentList.beginToken
           : tmpConstructor!.beginToken;
-      var feature = ExperimentalFeatures.enhanced_enums;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        token,
-        token,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.enhanced_enums,
+        startToken: token,
       );
     }
 
@@ -2977,14 +2931,9 @@
     }
 
     if (!enableEnhancedEnums && optional(';', elementsEndToken)) {
-      var feature = ExperimentalFeatures.enhanced_enums;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        elementsEndToken,
-        elementsEndToken,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.enhanced_enums,
+        startToken: elementsEndToken,
       );
     }
   }
@@ -3011,14 +2960,9 @@
           : implementsClause != null
               ? implementsClause.implementsKeyword
               : typeParameters!.beginToken;
-      var feature = ExperimentalFeatures.enhanced_enums;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        token,
-        token,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.enhanced_enums,
+        startToken: token,
       );
     }
 
@@ -3691,14 +3635,10 @@
   @override
   void handleNewAsIdentifier(Token token) {
     if (!enableConstructorTearoffs) {
-      var feature = ExperimentalFeatures.constructor_tearoffs;
-      handleRecoverableError(
-          templateExperimentNotEnabled.withArguments(
-            feature.enableString,
-            _versionAsString(ExperimentStatus.currentVersion),
-          ),
-          token,
-          token);
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.constructor_tearoffs,
+        startToken: token,
+      );
     }
   }
 
@@ -3730,7 +3670,10 @@
   void handleNonNullAssertExpression(Token bang) {
     debugEvent('NonNullAssertExpression');
     if (!enableNonNullable) {
-      reportNonNullAssertExpressionNotEnabled(bang);
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.non_nullable,
+        startToken: bang,
+      );
     } else {
       push(ast.postfixExpression(pop() as Expression, bang));
     }
@@ -3945,14 +3888,9 @@
       push(ast.spreadElement(
           spreadOperator: spreadToken, expression: expression));
     } else {
-      var feature = Feature.spread_collections;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        spreadToken,
-        spreadToken,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.spread_collections,
+        startToken: spreadToken,
       );
       push(_invalidCollectionElement);
     }
@@ -4029,14 +3967,10 @@
     var typeArguments = pop() as TypeArgumentList;
     var receiver = pop() as Expression;
     if (!enableConstructorTearoffs) {
-      var feature = ExperimentalFeatures.constructor_tearoffs;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(ExperimentStatus.currentVersion),
-        ),
-        typeArguments.leftBracket,
-        typeArguments.rightBracket,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.constructor_tearoffs,
+        startToken: typeArguments.leftBracket,
+        endToken: typeArguments.rightBracket,
       );
     }
     push(ast.functionReference(
@@ -4212,14 +4146,9 @@
         body: entry as CollectionElement,
       ));
     } else {
-      var feature = Feature.control_flow_collections;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        forToken,
-        forToken,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.control_flow_collections,
+        startToken: forToken,
       );
       push(_invalidCollectionElement);
     }
@@ -4245,14 +4174,9 @@
         elseElement: elseElement,
       ));
     } else {
-      var feature = ExperimentalFeatures.control_flow_collections;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        ifToken,
-        ifToken,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.control_flow_collections,
+        startToken: ifToken,
       );
       push(_invalidCollectionElement);
     }
@@ -4261,14 +4185,9 @@
   void reportErrorIfNullableType(Token? questionMark) {
     if (questionMark != null) {
       assert(optional('?', questionMark));
-      var feature = ExperimentalFeatures.non_nullable;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        questionMark,
-        questionMark,
+      _reportFeatureNotEnabled(
+        feature: ExperimentalFeatures.non_nullable,
+        startToken: questionMark,
       );
     }
   }
@@ -4281,32 +4200,6 @@
     }
   }
 
-  void reportNonNullableModifierError(Token? modifierToken) {
-    if (modifierToken != null) {
-      var feature = ExperimentalFeatures.non_nullable;
-      handleRecoverableError(
-        templateExperimentNotEnabled.withArguments(
-          feature.enableString,
-          _versionAsString(feature.releaseVersion!),
-        ),
-        modifierToken,
-        modifierToken,
-      );
-    }
-  }
-
-  void reportNonNullAssertExpressionNotEnabled(Token bang) {
-    var feature = ExperimentalFeatures.non_nullable;
-    handleRecoverableError(
-      templateExperimentNotEnabled.withArguments(
-        feature.enableString,
-        _versionAsString(feature.releaseVersion!),
-      ),
-      bang,
-      bang,
-    );
-  }
-
   Comment? _findComment(List<Annotation>? metadata, Token tokenAfterMetadata) {
     // Find the dartdoc tokens
     var dartdoc = parser.findDartDoc(tokenAfterMetadata);
@@ -4363,6 +4256,23 @@
     return ast.variableDeclaration(name, equals, initializer);
   }
 
+  void _reportFeatureNotEnabled({
+    required ExperimentalFeature feature,
+    required Token startToken,
+    Token? endToken,
+  }) {
+    final requiredVersion =
+        feature.releaseVersion ?? ExperimentStatus.currentVersion;
+    handleRecoverableError(
+      templateExperimentNotEnabled.withArguments(
+        feature.enableString,
+        _versionAsString(requiredVersion),
+      ),
+      startToken,
+      endToken ?? startToken,
+    );
+  }
+
   ArgumentListImpl _syntheticArgumentList(Token precedingToken) {
     var syntheticOffset = precedingToken.end;
     var left = SyntheticToken(TokenType.OPEN_PAREN, syntheticOffset)
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 0963a17..a860d87 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -793,6 +793,7 @@
       _typeArgumentsVerifier.checkFunctionExpressionInvocation(node);
     }
     _requiredParametersVerifier.visitFunctionExpressionInvocation(node);
+    _checkUseVerifier.checkFunctionExpressionInvocation(node);
     super.visitFunctionExpressionInvocation(node);
   }
 
diff --git a/pkg/analyzer/lib/src/lint/io.dart b/pkg/analyzer/lib/src/lint/io.dart
index 30bd983..3e66efc 100644
--- a/pkg/analyzer/lib/src/lint/io.dart
+++ b/pkg/analyzer/lib/src/lint/io.dart
@@ -5,11 +5,8 @@
 import 'dart:io';
 
 import 'package:analyzer/src/lint/util.dart';
-import 'package:glob/glob.dart';
 import 'package:path/path.dart' as p;
 
-final dartMatcher = Glob('**.dart');
-
 /// Shared IO sink for standard error reporting.
 /// Visible for testing
 IOSink errorSink = stderr;
diff --git a/pkg/analyzer/lib/src/workspace/basic.dart b/pkg/analyzer/lib/src/workspace/basic.dart
index 81697c4..98c81fe 100644
--- a/pkg/analyzer/lib/src/workspace/basic.dart
+++ b/pkg/analyzer/lib/src/workspace/basic.dart
@@ -19,9 +19,9 @@
 
   BasicWorkspace._(
     ResourceProvider provider,
-    Map<String, List<Folder>> packageMap,
+    Packages packages,
     String root,
-  ) : super(provider, packageMap, root) {
+  ) : super(provider, packages, root) {
     _theOnlyPackage = BasicWorkspacePackage(root, this);
   }
 
@@ -42,14 +42,14 @@
   /// (or [path]'s parent if [path] points to a file).
   static BasicWorkspace find(
     ResourceProvider provider,
-    Map<String, List<Folder>> packageMap,
+    Packages packages,
     String path,
   ) {
     Resource resource = provider.getResource(path);
     if (resource is File) {
       path = resource.parent.path;
     }
-    return BasicWorkspace._(provider, packageMap, path);
+    return BasicWorkspace._(provider, packages, path);
   }
 }
 
@@ -79,8 +79,7 @@
   }
 
   @override
-  Map<String, List<Folder>> packagesAvailableTo(String libraryPath) =>
-      workspace.packageMap;
+  Packages packagesAvailableTo(String libraryPath) => workspace.packages;
 
   @override
   bool sourceIsInPublicApi(Source source) {
diff --git a/pkg/analyzer/lib/src/workspace/bazel.dart b/pkg/analyzer/lib/src/workspace/bazel.dart
index 0e2aa32..201b8c9 100644
--- a/pkg/analyzer/lib/src/workspace/bazel.dart
+++ b/pkg/analyzer/lib/src/workspace/bazel.dart
@@ -6,6 +6,7 @@
 import 'dart:collection';
 
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/summary/package_bundle_reader.dart';
@@ -661,8 +662,7 @@
   @override
   // TODO(brianwilkerson) Implement this by looking in the BUILD file for 'deps'
   //  lists.
-  Map<String, List<Folder>> packagesAvailableTo(String libraryPath) =>
-      <String, List<Folder>>{};
+  Packages packagesAvailableTo(String libraryPath) => Packages.empty;
 
   @override
   bool sourceIsInPublicApi(Source source) {
diff --git a/pkg/analyzer/lib/src/workspace/gn.dart b/pkg/analyzer/lib/src/workspace/gn.dart
index 3bc7b3e..1d068a9 100644
--- a/pkg/analyzer/lib/src/workspace/gn.dart
+++ b/pkg/analyzer/lib/src/workspace/gn.dart
@@ -10,7 +10,6 @@
 import 'package:analyzer/src/summary/package_bundle_reader.dart';
 import 'package:analyzer/src/workspace/workspace.dart';
 import 'package:collection/collection.dart';
-import 'package:meta/meta.dart';
 import 'package:path/path.dart' as path;
 
 /// Information about a Gn workspace.
@@ -31,17 +30,23 @@
   @override
   final String root;
 
-  /// The map from a package name to the list of its `lib/` folders.
-  final Map<String, List<Folder>> _packageMap;
+  /// Information about packages available in the workspace.
+  final Packages packages;
 
-  GnWorkspace._(this.provider, this.root, this._packageMap);
+  GnWorkspace._(this.provider, this.root, this.packages);
 
-  @visibleForTesting
-  Map<String, List<Folder>> get packageMap => _packageMap;
+  /// TODO(scheglov) Finish switching to [packages].
+  Map<String, List<Folder>> get packageMap {
+    var packageMap = <String, List<Folder>>{};
+    for (var package in packages.packages) {
+      packageMap[package.name] = [package.libFolder];
+    }
+    return packageMap;
+  }
 
   @override
   UriResolver get packageUriResolver =>
-      PackageMapUriResolver(provider, _packageMap);
+      PackageMapUriResolver(provider, packageMap);
 
   @override
   SourceFactory createSourceFactory(
@@ -113,15 +118,15 @@
           return null;
         }
 
-        var packageMap = <String, List<Folder>>{};
+        var packageMap = <String, Package>{};
         for (var packagesFile in packagesFiles) {
           var packages = parsePackagesFile(provider, packagesFile);
           for (var package in packages.packages) {
-            packageMap[package.name] = [package.libFolder];
+            packageMap[package.name] = package;
           }
         }
 
-        return GnWorkspace._(provider, root, packageMap);
+        return GnWorkspace._(provider, root, Packages(packageMap));
       }
     }
     return null;
@@ -229,8 +234,7 @@
   }
 
   @override
-  Map<String, List<Folder>> packagesAvailableTo(String libraryPath) =>
-      workspace.packageMap;
+  Packages packagesAvailableTo(String libraryPath) => workspace.packages;
 
   @override
   bool sourceIsInPublicApi(Source source) {
diff --git a/pkg/analyzer/lib/src/workspace/package_build.dart b/pkg/analyzer/lib/src/workspace/package_build.dart
index a43ef0a..e9ce5dc 100644
--- a/pkg/analyzer/lib/src/workspace/package_build.dart
+++ b/pkg/analyzer/lib/src/workspace/package_build.dart
@@ -56,6 +56,7 @@
       : _workspace = workspace,
         _context = workspace.provider.pathContext;
 
+  /// TODO(scheglov) Finish switching to [Packages].
   Map<String, List<Folder>> get packageMap => _workspace.packageMap;
 
   @override
@@ -142,9 +143,8 @@
   /// We read it once, so that all usages return consistent results.
   final String? _pubspecContent;
 
-  /// The map from a package name to the list of its `lib/` folders.
   @override
-  final Map<String, List<Folder>> packageMap;
+  final Packages packages;
 
   /// The resource provider used to access the file system.
   @override
@@ -172,7 +172,7 @@
 
   PackageBuildWorkspace._(
     this.provider,
-    this.packageMap,
+    this.packages,
     this.root,
     this.projectPackageName,
     this.generatedRootPath,
@@ -188,6 +188,16 @@
     return _fileContentOrNull(_pubspecFile) == _pubspecContent;
   }
 
+  /// TODO(scheglov) Finish switching to [packages].
+  @override
+  Map<String, List<Folder>> get packageMap {
+    var packageMap = <String, List<Folder>>{};
+    for (var package in packages.packages) {
+      packageMap[package.name] = [package.libFolder];
+    }
+    return packageMap;
+  }
+
   @override
   UriResolver get packageUriResolver => PackageBuildPackageUriResolver(
       this, PackageMapUriResolver(provider, packageMap));
@@ -200,7 +210,7 @@
   /// use [builtPackageSourcePath]. For `bin/`, `web/`, etc, it must be relative
   /// to the project root.
   File? builtFile(String builtPath, String packageName) {
-    if (!packageMap.containsKey(packageName)) {
+    if (packages[packageName] == null) {
       return null;
     }
     path.Context context = provider.pathContext;
@@ -289,8 +299,8 @@
   /// Find the package:build workspace that contains the given [filePath].
   ///
   /// Return `null` if the filePath is not in a package:build workspace.
-  static PackageBuildWorkspace? find(ResourceProvider provider,
-      Map<String, List<Folder>> packageMap, String filePath) {
+  static PackageBuildWorkspace? find(
+      ResourceProvider provider, Packages packages, String filePath) {
     var startFolder = provider.getFolder(filePath);
     for (var folder in startFolder.withAncestors) {
       final File pubspec = folder.getChildAssumingFile(file_paths.pubspecYaml);
@@ -309,7 +319,7 @@
               .joinAll([folder.path, ..._generatedPathParts]);
           final generatedThisPath =
               provider.pathContext.join(generatedRootPath, packageName);
-          return PackageBuildWorkspace._(provider, packageMap, folder.path,
+          return PackageBuildWorkspace._(provider, packages, folder.path,
               packageName, generatedRootPath, generatedThisPath, pubspec);
         } catch (_) {
           return null;
@@ -377,8 +387,7 @@
   }
 
   @override
-  Map<String, List<Folder>> packagesAvailableTo(String libraryPath) =>
-      workspace.packageMap;
+  Packages packagesAvailableTo(String libraryPath) => workspace.packages;
 
   @override
   bool sourceIsInPublicApi(Source source) {
diff --git a/pkg/analyzer/lib/src/workspace/pub.dart b/pkg/analyzer/lib/src/workspace/pub.dart
index a6e66ce..0daefae 100644
--- a/pkg/analyzer/lib/src/workspace/pub.dart
+++ b/pkg/analyzer/lib/src/workspace/pub.dart
@@ -28,12 +28,12 @@
 
   PubWorkspace._(
     ResourceProvider provider,
-    Map<String, List<Folder>> packageMap,
+    Packages packages,
     String root,
     File pubspecFile,
   )   : _pubspecFile = pubspecFile,
         _pubspecContent = _fileContentOrNull(pubspecFile),
-        super(provider, packageMap, root) {
+        super(provider, packages, root) {
     _theOnlyPackage = PubWorkspacePackage(root, this);
   }
 
@@ -61,7 +61,7 @@
   /// Find the pub workspace that contains the given [filePath].
   static PubWorkspace? find(
     ResourceProvider provider,
-    Map<String, List<Folder>> packageMap,
+    Packages packages,
     String filePath,
   ) {
     var start = provider.getFolder(filePath);
@@ -69,7 +69,7 @@
       var pubspec = current.getChildAssumingFile(file_paths.pubspecYaml);
       if (pubspec.exists) {
         var root = current.path;
-        return PubWorkspace._(provider, packageMap, root, pubspec);
+        return PubWorkspace._(provider, packages, root, pubspec);
       }
     }
     return null;
@@ -128,10 +128,10 @@
   }
 
   @override
-  Map<String, List<Folder>> packagesAvailableTo(String libraryPath) {
+  Packages packagesAvailableTo(String libraryPath) {
     // TODO(brianwilkerson) Consider differentiating based on whether the
     //  [libraryPath] is inside the `lib` directory.
-    return workspace.packageMap;
+    return workspace.packages;
   }
 
   @override
diff --git a/pkg/analyzer/lib/src/workspace/simple.dart b/pkg/analyzer/lib/src/workspace/simple.dart
index 02413ce..dc9b694 100644
--- a/pkg/analyzer/lib/src/workspace/simple.dart
+++ b/pkg/analyzer/lib/src/workspace/simple.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/source/package_map_resolver.dart';
@@ -15,13 +16,23 @@
   /// The [ResourceProvider] by which paths are converted into [Resource]s.
   final ResourceProvider provider;
 
-  final Map<String, List<Folder>> packageMap;
+  /// Information about packages available in the workspace.
+  final Packages packages;
 
   /// The absolute workspace root path.
   @override
   final String root;
 
-  SimpleWorkspace(this.provider, this.packageMap, this.root);
+  SimpleWorkspace(this.provider, this.packages, this.root);
+
+  /// TODO(scheglov) Finish switching to [packages].
+  Map<String, List<Folder>> get packageMap {
+    var packageMap = <String, List<Folder>>{};
+    for (var package in packages.packages) {
+      packageMap[package.name] = [package.libFolder];
+    }
+    return packageMap;
+  }
 
   @override
   UriResolver get packageUriResolver =>
diff --git a/pkg/analyzer/lib/src/workspace/workspace.dart b/pkg/analyzer/lib/src/workspace/workspace.dart
index 58c019a..b872e4e 100644
--- a/pkg/analyzer/lib/src/workspace/workspace.dart
+++ b/pkg/analyzer/lib/src/workspace/workspace.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/summary/api_signature.dart';
@@ -92,7 +92,7 @@
   /// Return a map from the names of packages to the absolute and normalized
   /// path of the root of those packages for all of the packages that could
   /// validly be imported by the library with the given [libraryPath].
-  Map<String, List<Folder>> packagesAvailableTo(String libraryPath);
+  Packages packagesAvailableTo(String libraryPath);
 
   /// Return whether [source] is located in this package's public API.
   bool sourceIsInPublicApi(Source source);
diff --git a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
index a6f0ab8..419816c 100644
--- a/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/context_builder_test.dart
@@ -6,6 +6,7 @@
 import 'package:analyzer/dart/analysis/context_root.dart';
 import 'package:analyzer/dart/analysis/declared_variables.dart';
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/context/source.dart';
 import 'package:analyzer/src/dart/analysis/context_builder.dart';
 import 'package:analyzer/src/dart/analysis/context_locator.dart';
@@ -54,7 +55,8 @@
 
     var folder = newFolder('/home/test');
     contextBuilder = ContextBuilderImpl(resourceProvider: resourceProvider);
-    var workspace = BasicWorkspace.find(resourceProvider, {}, folder.path);
+    var workspace =
+        BasicWorkspace.find(resourceProvider, Packages.empty, folder.path);
     contextRoot = ContextRootImpl(resourceProvider, folder, workspace);
   }
 
diff --git a/pkg/analyzer/test/src/dart/analysis/context_root_test.dart b/pkg/analyzer/test/src/dart/analysis/context_root_test.dart
index 3557e07..713ccb7 100644
--- a/pkg/analyzer/test/src/dart/analysis/context_root_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/context_root_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/dart/analysis/context_root.dart';
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/dart/analysis/context_root.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer/src/workspace/basic.dart';
@@ -29,7 +30,7 @@
   void setUp() {
     rootPath = convertPath('/test/root');
     rootFolder = newFolder(rootPath);
-    workspace = BasicWorkspace.find(resourceProvider, {}, rootPath);
+    workspace = BasicWorkspace.find(resourceProvider, Packages.empty, rootPath);
     contextRoot = ContextRootImpl(resourceProvider, rootFolder, workspace);
     contextRoot.included.add(rootFolder);
   }
@@ -247,7 +248,8 @@
   ContextRootImpl _createContextRoot(String posixPath) {
     var rootPath = convertPath(posixPath);
     var rootFolder = newFolder(rootPath);
-    var workspace = BasicWorkspace.find(resourceProvider, {}, rootPath);
+    var workspace =
+        BasicWorkspace.find(resourceProvider, Packages.empty, rootPath);
     var contextRoot = ContextRootImpl(resourceProvider, rootFolder, workspace);
     contextRoot.included.add(rootFolder);
     return contextRoot;
diff --git a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
index c789b2e..2ec38e5 100644
--- a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
@@ -146,9 +146,24 @@
       'bbb': [getFolder('/bbb/lib')],
     };
 
+    var packages = Packages({
+      'aaa': Package(
+        name: 'aaa',
+        rootFolder: newFolder('/packages/aaa'),
+        libFolder: newFolder('/packages/aaa/lib'),
+        languageVersion: null,
+      ),
+      'bbb': Package(
+        name: 'bbb',
+        rootFolder: newFolder('/packages/bbb'),
+        libFolder: newFolder('/packages/bbb/lib'),
+        languageVersion: null,
+      ),
+    });
+
     var workspace = BasicWorkspace.find(
       resourceProvider,
-      packageMap,
+      packages,
       convertPath('/test'),
     );
 
diff --git a/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart b/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart
index 2b229fc..563cba7 100644
--- a/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/uri_converter_test.dart
@@ -4,6 +4,7 @@
 
 import 'package:analyzer/dart/analysis/analysis_context.dart';
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/dart/analysis/context_root.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart';
@@ -49,7 +50,7 @@
     ]);
 
     var contextRoot = ContextRootImpl(resourceProvider, barFolder,
-        BasicWorkspace.find(resourceProvider, {}, barFolder.path));
+        BasicWorkspace.find(resourceProvider, Packages.empty, barFolder.path));
 
     MockAnalysisDriver driver = MockAnalysisDriver();
     driver.resourceProvider = resourceProvider;
diff --git a/pkg/analyzer/test/src/diagnostics/unused_result_test.dart b/pkg/analyzer/test/src/diagnostics/unused_result_test.dart
index e7583c4..df5b5d2 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_result_test.dart
@@ -59,6 +59,90 @@
     ]);
   }
 
+  test_callable() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+
+class A {
+
+  @useResult
+  int call() => 1;
+}
+
+void f(A a) {
+  a();
+}
+''', [
+      error(HintCode.UNUSED_RESULT, 96, 1,
+          text: "The value of 'a' should be used."),
+    ]);
+  }
+
+  test_callable_method() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+
+class A {
+  B b() => B();
+}
+class B {
+  @useResult
+  int call(int i) => i;
+}
+
+void f(A a) {
+  a.b()(5);
+}
+''', [
+      error(HintCode.UNUSED_RESULT, 130, 1,
+          text: "The value of 'b' should be used."),
+    ]);
+  }
+
+  test_callable_propertyAccess() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+
+class A {
+  B get b => B();
+}
+class B {
+  @useResult
+  int call() => 1;
+}
+
+void f(A a) {
+  a.b();
+}
+''', [
+      error(HintCode.UNUSED_RESULT, 127, 1,
+          text: "The value of 'b' should be used."),
+    ]);
+  }
+
+  test_callable_recursive() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+
+class A {
+  B call(List l) => B();
+}
+class B {
+  C call() => C();
+}
+class C {
+  @useResult
+  int call(String s) => 1;
+}
+void f(A a) {
+  a([])()('');
+}
+''', [
+      error(HintCode.UNUSED_RESULT, 170, 1,
+          text: "The value of 'a' should be used."),
+    ]);
+  }
+
   test_field_result_assigned() async {
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
@@ -948,7 +1032,8 @@
   A().foo();
 }
 ''', [
-      error(HintCode.UNUSED_RESULT, 98, 3),
+      error(HintCode.UNUSED_RESULT, 98, 3,
+          text: "The value of 'foo' should be used."),
     ]);
   }
 
@@ -959,16 +1044,16 @@
 class C {
   @useResult
   C m1() => throw '';
-  
+
   C m2() => throw '';
-  
+
   void m3() {
     m2()..m1();
   }
 }
 ''', [
-      error(HintCode.UNUSED_RESULT, 131, 2,
-          messageContains: ["'m1' should be used."]),
+      error(HintCode.UNUSED_RESULT, 127, 2,
+          text: "The value of 'm1' should be used."),
     ]);
   }
 
diff --git a/pkg/analyzer/test/src/summary/elements_base.dart b/pkg/analyzer/test/src/summary/elements_base.dart
index 0254431..16267e1 100644
--- a/pkg/analyzer/test/src/summary/elements_base.dart
+++ b/pkg/analyzer/test/src/summary/elements_base.dart
@@ -11,6 +11,7 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/context/context.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/dart/analysis/session.dart';
 import 'package:analyzer/src/dart/ast/ast.dart';
 import 'package:analyzer/src/dart/element/class_hierarchy.dart';
@@ -61,16 +62,6 @@
       root: sdkRoot,
     );
     sdk = FolderBasedDartSdk(resourceProvider, sdkRoot);
-
-    sourceFactory = SourceFactory([
-      DartUriResolver(sdk),
-      PackageMapUriResolver(resourceProvider, {
-        'test': [
-          getFolder('/home/test/lib'),
-        ],
-      }),
-      ResourceUriResolver(resourceProvider),
-    ]);
   }
 
   /// We need to test both cases - when we keep linking libraries (happens for
@@ -137,6 +128,8 @@
     bool dumpSummaries = false,
     List<Set<String>>? preBuildSequence,
   }) async {
+    _buildSourceFactory();
+
     var testFile = newFile(testFilePath, text);
     var testUri = sourceFactory.pathToUri(testFile.path)!;
     var testSource = sourceFactory.forUri2(testUri)!;
@@ -207,6 +200,9 @@
   }
 
   @mustCallSuper
+  Future<void> setUp() async {}
+
+  @mustCallSuper
   Future<void> tearDown() async {
     await _macroExecutor.close();
     KernelCompilationService.disposeDelayed(
@@ -344,6 +340,25 @@
     }
   }
 
+  void _buildSourceFactory() {
+    final packages = parsePackageConfigJsonFile(
+      resourceProvider,
+      getFile('$testPackageRootPath/.dart_tool/package_config.json'),
+    );
+
+    // TODO(scheglov) Can we use Packages instead?
+    final packageMap = <String, List<Folder>>{};
+    for (final package in packages.packages) {
+      packageMap[package.name] = [package.libFolder];
+    }
+
+    sourceFactory = SourceFactory([
+      DartUriResolver(sdk),
+      PackageMapUriResolver(resourceProvider, packageMap),
+      ResourceUriResolver(resourceProvider),
+    ]);
+  }
+
   /// If there are any libraries in the [uriStrSetList], link these subsets
   /// of [inputLibraries] (and remove from it), build macro kernels, prepare
   /// for executing macros.
diff --git a/pkg/analyzer/test/src/summary/elements_test.dart b/pkg/analyzer/test/src/summary/elements_test.dart
index 1c9ff23..1d82985 100644
--- a/pkg/analyzer/test/src/summary/elements_test.dart
+++ b/pkg/analyzer/test/src/summary/elements_test.dart
@@ -7,6 +7,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -42,6 +43,15 @@
 }
 
 abstract class ElementsTest extends ElementsBaseTest {
+  @override
+  Future<void> setUp() async {
+    await super.setUp();
+
+    _writeTestPackageConfig(
+      PackageConfigFileBuilder(),
+    );
+  }
+
   test_class_abstract() async {
     var library = await buildLibrary('abstract class C {}');
     checkElementText(library, r'''
@@ -38097,4 +38107,20 @@
     var elementFactory = library.linkedData!.elementFactory;
     return elementFactory.elementOfReference(reference)!;
   }
+
+  void _writeTestPackageConfig(PackageConfigFileBuilder config) {
+    config = config.copy();
+
+    config.add(
+      name: 'test',
+      rootPath: testPackageRootPath,
+    );
+
+    newPackageConfigJsonFile(
+      testPackageRootPath,
+      config.toContent(
+        toUriStr: toUriStr,
+      ),
+    );
+  }
 }
diff --git a/pkg/analyzer/test/src/summary/macro_test.dart b/pkg/analyzer/test/src/summary/macro_test.dart
index 5c0869f..e883e47 100644
--- a/pkg/analyzer/test/src/summary/macro_test.dart
+++ b/pkg/analyzer/test/src/summary/macro_test.dart
@@ -71,7 +71,15 @@
         .readAsStringSync();
   }
 
+  Set<String> get _macroApiSet {
+    return {
+      'package:_fe_analyzer_shared/src/macros/api.dart',
+    };
+  }
+
+  @override
   Future<void> setUp() async {
+    await super.setUp();
     writeTestPackageConfig(
       PackageConfigFileBuilder(),
       macrosEnvironment: MacrosEnvironment.instance,
@@ -101,6 +109,7 @@
 @myMacro
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -161,6 +170,7 @@
 @myMacro
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -219,6 +229,7 @@
 @prefix.myMacro
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -287,6 +298,7 @@
 @prefix.myMacro
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -351,6 +363,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -412,6 +425,7 @@
 @MyMacro.named()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -478,6 +492,7 @@
 @prefix.MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -546,6 +561,7 @@
 @prefix.MyMacro.named()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -856,6 +872,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -907,6 +924,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -965,6 +983,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -1018,6 +1037,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -1071,6 +1091,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -1129,6 +1150,7 @@
 @myMacro
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -1572,6 +1594,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -1601,6 +1624,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -1630,6 +1654,7 @@
 @MyMacro()
 class A {}
 ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/a.dart'}
     ]);
 
@@ -1774,6 +1799,7 @@
 ${usingGetter ? '@argumentsTextMacro' : '@ArgumentsTextMacro$argumentsCode'}
 class A {}
     ''', preBuildSequence: [
+      _macroApiSet,
       {'package:test/arguments_text.dart'}
     ]);
 
@@ -1837,6 +1863,7 @@
 @DeclarationTextMacro()
 $declarationCode
 ''', preBuildSequence: [
+      _macroApiSet,
       {
         'package:test/introspect_shared.dart',
         'package:test/declaration_text.dart',
@@ -1872,6 +1899,7 @@
 import 'introspect_declarations_phase.dart';
 $declarationCode
 ''', preBuildSequence: [
+      _macroApiSet,
       {
         'package:test/introspect_shared.dart',
         'package:test/introspect_declarations_phase.dart',
diff --git a/pkg/analyzer/test/src/workspace/basic_test.dart b/pkg/analyzer/test/src/workspace/basic_test.dart
index 55d8b3d..3392a96 100644
--- a/pkg/analyzer/test/src/workspace/basic_test.dart
+++ b/pkg/analyzer/test/src/workspace/basic_test.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer/src/workspace/basic.dart';
 import 'package:test/test.dart';
@@ -21,13 +22,25 @@
 class BasicWorkspacePackageTest extends WorkspacePackageTest {
   setUp() {
     newFolder('/workspace');
+
     workspace = BasicWorkspace.find(
-        resourceProvider,
-        {
-          'p1': [getFolder('/.pubcache/p1/lib')],
-          'workspace': [getFolder('/workspace/lib')]
-        },
-        convertPath('/workspace'));
+      resourceProvider,
+      Packages({
+        'p1': Package(
+          name: 'p1',
+          rootFolder: getFolder('/.pubcache/p1'),
+          libFolder: getFolder('/.pubcache/p1/lib'),
+          languageVersion: null,
+        ),
+        'workspace': Package(
+          name: 'workspace',
+          rootFolder: getFolder('/workspace'),
+          libFolder: getFolder('/workspace/lib'),
+          languageVersion: null,
+        ),
+      }),
+      convertPath('/workspace'),
+    );
     expect(workspace.isBazel, isFalse);
   }
 
@@ -78,8 +91,11 @@
   void test_packagesAvailableTo() {
     var libraryPath = convertPath('/workspace/lib/test.dart');
     var package = findPackage(libraryPath)!;
-    var packageMap = package.packagesAvailableTo(libraryPath);
-    expect(packageMap.keys, unorderedEquals(['p1', 'workspace']));
+    var packages = package.packagesAvailableTo(libraryPath);
+    expect(
+      packages.packages.map((e) => e.name),
+      unorderedEquals(['p1', 'workspace']),
+    );
   }
 }
 
@@ -90,8 +106,8 @@
   }
 
   void test_find_directory() {
-    BasicWorkspace workspace =
-        BasicWorkspace.find(resourceProvider, {}, convertPath('/workspace'));
+    BasicWorkspace workspace = BasicWorkspace.find(
+        resourceProvider, Packages.empty, convertPath('/workspace'));
     expect(workspace.root, convertPath('/workspace'));
     expect(workspace.isBazel, isFalse);
   }
@@ -99,13 +115,13 @@
   void test_find_fail_notAbsolute() {
     expect(
         () => BasicWorkspace.find(
-            resourceProvider, {}, convertPath('not_absolute')),
+            resourceProvider, Packages.empty, convertPath('not_absolute')),
         throwsA(TypeMatcher<ArgumentError>()));
   }
 
   void test_find_file() {
-    BasicWorkspace workspace = BasicWorkspace.find(
-        resourceProvider, {}, convertPath('/workspace/project/lib/lib1.dart'));
+    BasicWorkspace workspace = BasicWorkspace.find(resourceProvider,
+        Packages.empty, convertPath('/workspace/project/lib/lib1.dart'));
     expect(workspace.root, convertPath('/workspace/project/lib'));
     expect(workspace.isBazel, isFalse);
   }
diff --git a/pkg/analyzer/test/src/workspace/bazel_test.dart b/pkg/analyzer/test/src/workspace/bazel_test.dart
index 34b86ec..a79b85e 100644
--- a/pkg/analyzer/test/src/workspace/bazel_test.dart
+++ b/pkg/analyzer/test/src/workspace/bazel_test.dart
@@ -883,9 +883,9 @@
 
   void test_packagesAvailableTo() {
     _setUpPackage();
-    var packageMap = package
-        ?.packagesAvailableTo(convertPath('/ws/some/code/lib/code.dart'));
-    expect(packageMap, isEmpty);
+    var path = convertPath('/ws/some/code/lib/code.dart');
+    var packages = package?.packagesAvailableTo(path);
+    expect(packages?.packages, isEmpty);
   }
 
   /// Create new files and directories from [paths].
diff --git a/pkg/analyzer/test/src/workspace/gn_test.dart b/pkg/analyzer/test/src/workspace/gn_test.dart
index 9f697a5..2de0362 100644
--- a/pkg/analyzer/test/src/workspace/gn_test.dart
+++ b/pkg/analyzer/test/src/workspace/gn_test.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer/src/workspace/gn.dart';
 import 'package:test/test.dart';
@@ -97,8 +99,11 @@
     newFile('/ws/some/code/BUILD.gn', '');
     var libraryPath = newFile('/ws/some/code/lib/code.dart', '').path;
     var package = workspace.findPackageFor(libraryPath)!;
-    var packageMap = package.packagesAvailableTo(libraryPath);
-    expect(packageMap.keys, unorderedEquals(['p1', 'workspace']));
+    var packages = package.packagesAvailableTo(libraryPath);
+    expect(
+      packages.packages.map((e) => e.name),
+      unorderedEquals(['p1', 'workspace']),
+    );
   }
 
   GnWorkspace _buildStandardGnWorkspace() {
@@ -194,9 +199,15 @@
     var workspace = GnWorkspace.find(
         resourceProvider, convertPath('/workspace/some/code'))!;
     expect(workspace.root, convertPath('/workspace'));
-    expect(workspace.packageMap.length, 1);
-    expect(workspace.packageMap['flutter']![0].path,
-        convertPath("$packageLocation/lib"));
+    expect(
+      workspace.packages.packages,
+      unorderedEquals([
+        _PackageMatcher(
+          name: 'flutter',
+          rootFolder: getFolder(packageLocation),
+        ),
+      ]),
+    );
   }
 
   void test_packages_absoluteBuildDir() {
@@ -223,9 +234,15 @@
     var workspace = GnWorkspace.find(
         resourceProvider, convertPath('/workspace/some/code'))!;
     expect(workspace.root, convertPath('/workspace'));
-    expect(workspace.packageMap.length, 1);
-    expect(workspace.packageMap['flutter']![0].path,
-        convertPath("$packageLocation/lib"));
+    expect(
+      workspace.packages.packages,
+      unorderedEquals([
+        _PackageMatcher(
+          name: 'flutter',
+          rootFolder: getFolder(packageLocation),
+        ),
+      ]),
+    );
   }
 
   void test_packages_fallbackBuildDir() {
@@ -250,9 +267,15 @@
     var workspace = GnWorkspace.find(
         resourceProvider, convertPath('/workspace/some/code'))!;
     expect(workspace.root, convertPath('/workspace'));
-    expect(workspace.packageMap.length, 1);
-    expect(workspace.packageMap['flutter']![0].path,
-        convertPath("$packageLocation/lib"));
+    expect(
+      workspace.packages.packages,
+      unorderedEquals([
+        _PackageMatcher(
+          name: 'flutter',
+          rootFolder: getFolder(packageLocation),
+        ),
+      ]),
+    );
   }
 
   void test_packages_fallbackBuildDirWithUselessConfig() {
@@ -278,9 +301,15 @@
     var workspace = GnWorkspace.find(
         resourceProvider, convertPath('/workspace/some/code'))!;
     expect(workspace.root, convertPath('/workspace'));
-    expect(workspace.packageMap.length, 1);
-    expect(workspace.packageMap['flutter']![0].path,
-        convertPath("$packageLocation/lib"));
+    expect(
+      workspace.packages.packages,
+      unorderedEquals([
+        _PackageMatcher(
+          name: 'flutter',
+          rootFolder: getFolder(packageLocation),
+        ),
+      ]),
+    );
   }
 
   void test_packages_multipleCandidates() {
@@ -323,9 +352,16 @@
     var workspace = GnWorkspace.find(
         resourceProvider, convertPath('/workspace/some/code'))!;
     expect(workspace.root, convertPath('/workspace'));
-    expect(workspace.packageMap.length, 1);
-    expect(workspace.packageMap['rettulf']![0].path,
-        convertPath("$otherPackageLocation/lib2"));
+    expect(
+      workspace.packages.packages,
+      unorderedEquals([
+        _PackageMatcher(
+          name: 'rettulf',
+          rootFolder: getFolder(otherPackageLocation),
+          libFolder: getFolder('$otherPackageLocation/lib2'),
+        ),
+      ]),
+    );
   }
 
   void test_packages_multipleFiles() {
@@ -368,10 +404,48 @@
     var workspace = GnWorkspace.find(
         resourceProvider, convertPath('/workspace/some/code'))!;
     expect(workspace.root, convertPath('/workspace'));
-    expect(workspace.packageMap.length, 2);
-    expect(workspace.packageMap['flutter']![0].path,
-        convertPath("$packageOneLocation/one/lib"));
-    expect(workspace.packageMap['rettulf']![0].path,
-        convertPath("$packageTwoLocation/two/lib"));
+    expect(
+      workspace.packages.packages,
+      unorderedEquals([
+        _PackageMatcher(
+          name: 'flutter',
+          rootFolder: getFolder(packageOneLocation),
+          libFolder: getFolder('$packageOneLocation/one/lib'),
+        ),
+        _PackageMatcher(
+          name: 'rettulf',
+          rootFolder: getFolder(packageTwoLocation),
+          libFolder: getFolder('$packageTwoLocation/two/lib'),
+        ),
+      ]),
+    );
+  }
+}
+
+class _PackageMatcher extends Matcher {
+  final String name;
+  final Folder rootFolder;
+  final Folder libFolder;
+
+  _PackageMatcher({
+    required this.name,
+    required this.rootFolder,
+    Folder? libFolder,
+  }) : libFolder = libFolder ?? rootFolder.getChildAssumingFolder('lib');
+
+  @override
+  Description describe(Description description) => description
+      .add('Package(name:')
+      .addDescriptionOf(name)
+      .add(', rootFolder:')
+      .addDescriptionOf(rootFolder.path)
+      .add(')');
+
+  @override
+  bool matches(Object? item, Map matchState) {
+    return item is Package &&
+        item.name == name &&
+        item.rootFolder == rootFolder &&
+        item.libFolder == libFolder;
   }
 }
diff --git a/pkg/analyzer/test/src/workspace/package_build_test.dart b/pkg/analyzer/test/src/workspace/package_build_test.dart
index 43fde355..9f659a6 100644
--- a/pkg/analyzer/test/src/workspace/package_build_test.dart
+++ b/pkg/analyzer/test/src/workspace/package_build_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer/src/workspace/package_build.dart';
@@ -52,9 +53,14 @@
 
     workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {
-        'project': [getFolder('/workspace')]
-      },
+      Packages({
+        'project': Package(
+          name: 'project',
+          rootFolder: getFolder('/workspace'),
+          libFolder: getFolder('/workspace'),
+          languageVersion: null,
+        ),
+      }),
       convertPath('/workspace'),
     )!;
     resolver = PackageBuildFileUriResolver(workspace);
@@ -191,9 +197,14 @@
     }
     workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {
-        'project': [getFolder('/workspace')]
-      },
+      Packages({
+        'project': Package(
+          name: 'project',
+          rootFolder: getFolder('/workspace'),
+          libFolder: getFolder('/workspace'),
+          languageVersion: null,
+        ),
+      }),
       convertPath(workspacePath),
     )!;
     packageUriResolver = MockUriResolver();
@@ -240,10 +251,20 @@
 
     myWorkspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {
-        'my': [getFolder(myPackageLibPath)],
-        'foo': [getFolder(fooPackageLibPath)],
-      },
+      Packages({
+        'my': Package(
+          name: 'my',
+          rootFolder: getFolder(myPackageRootPath),
+          libFolder: getFolder(myPackageLibPath),
+          languageVersion: null,
+        ),
+        'foo': Package(
+          name: 'foo',
+          rootFolder: getFolder(fooPackageRootPath),
+          libFolder: getFolder(fooPackageLibPath),
+          languageVersion: null,
+        ),
+      }),
       convertPath(myPackageRootPath),
     )!;
 
@@ -423,7 +444,7 @@
       () {
         return PackageBuildWorkspace.find(
           resourceProvider,
-          {},
+          Packages.empty,
           convertPath('not_absolute'),
         );
       },
@@ -440,7 +461,7 @@
 
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace/aaa/lib'),
     );
     expect(workspace, isNull);
@@ -451,7 +472,7 @@
     newPubspecYamlFile('/workspace', 'name: project');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace'),
     )!;
     expect(workspace.root, convertPath('/workspace'));
@@ -465,7 +486,7 @@
     newPubspecYamlFile('/workspace', 'name: project');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace/opened/up/a/child/dir'),
     )!;
     expect(workspace.root, convertPath('/workspace/opened/up/a/child/dir'));
@@ -479,7 +500,7 @@
     newPubspecYamlFile('/workspace', 'name: project');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace/opened/up/a/child/dir'),
     )!;
     expect(workspace.root, convertPath('/workspace'));
@@ -492,7 +513,7 @@
     newPubspecYamlFile('/workspace', 'name: project');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace'),
     );
     expect(workspace, isNull);
@@ -502,7 +523,7 @@
     newFolder('/workspace/.dart_tool/build/generated/project/lib');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace'),
     );
     expect(workspace, isNull);
@@ -514,7 +535,7 @@
     newPubspecYamlFile('/workspace', 'name: project');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace'),
     );
     expect(workspace, isNull);
@@ -525,7 +546,7 @@
     newPubspecYamlFile('/workspace', 'not: yaml: here! 1111');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace'),
     );
     expect(workspace, isNull);
@@ -539,7 +560,7 @@
 
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace/aaa/lib'),
     );
     expect(workspace, isNull);
@@ -549,7 +570,7 @@
     newPubspecYamlFile('/workspace', 'name: project');
     var workspace = PackageBuildWorkspace.find(
       resourceProvider,
-      {},
+      Packages.empty,
       convertPath('/workspace'),
     );
     expect(workspace, isNull);
@@ -649,14 +670,19 @@
 
   PackageBuildWorkspace _createWorkspace(
       String root, List<String> packageNames) {
+    var packageMap = <String, Package>{};
+    for (var name in packageNames) {
+      packageMap[name] = Package(
+        name: name,
+        rootFolder: getFolder('/packages/$name'),
+        libFolder: getFolder('/packages/$name/lib'),
+        languageVersion: null,
+      );
+    }
+
     return PackageBuildWorkspace.find(
       resourceProvider,
-      Map.fromIterables(
-        packageNames,
-        packageNames.map(
-          (name) => [getFolder('/packages/$name/lib')],
-        ),
-      ),
+      Packages(packageMap),
       convertPath(root),
     )!;
   }
diff --git a/pkg/analyzer/test/src/workspace/pub_test.dart b/pkg/analyzer/test/src/workspace/pub_test.dart
index 0dcc810..5fbbc9b 100644
--- a/pkg/analyzer/test/src/workspace/pub_test.dart
+++ b/pkg/analyzer/test/src/workspace/pub_test.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'package:analyzer/src/context/packages.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer/src/workspace/pub.dart';
 import 'package:test/test.dart';
@@ -22,12 +23,23 @@
   setUp() {
     newPubspecYamlFile('/workspace', 'name: project');
     workspace = PubWorkspace.find(
-        resourceProvider,
-        {
-          'p1': [getFolder('/.pubcache/p1/lib')],
-          'workspace': [getFolder('/workspace/lib')]
-        },
-        convertPath('/workspace'))!;
+      resourceProvider,
+      Packages({
+        'p1': Package(
+          name: 'p1',
+          rootFolder: getFolder('/.pubcache/p1'),
+          libFolder: getFolder('/.pubcache/p1/lib'),
+          languageVersion: null,
+        ),
+        'workspace': Package(
+          name: 'workspace',
+          rootFolder: getFolder('/workspace'),
+          libFolder: getFolder('/workspace/lib'),
+          languageVersion: null,
+        ),
+      }),
+      convertPath('/workspace'),
+    )!;
     expect(workspace.isBazel, isFalse);
   }
 
@@ -77,8 +89,11 @@
   void test_packagesAvailableTo() {
     var libraryPath = convertPath('/workspace/lib/test.dart');
     var package = findPackage(libraryPath)!;
-    var packageMap = package.packagesAvailableTo(libraryPath);
-    expect(packageMap.keys, unorderedEquals(['p1', 'workspace']));
+    var packages = package.packagesAvailableTo(libraryPath);
+    expect(
+      packages.packages.map((e) => e.name),
+      unorderedEquals(['p1', 'workspace']),
+    );
   }
 }
 
@@ -86,8 +101,8 @@
 class PubWorkspaceTest with ResourceProviderMixin {
   void test_find_directory() {
     newPubspecYamlFile('/workspace', 'name: project');
-    var workspace =
-        PubWorkspace.find(resourceProvider, {}, convertPath('/workspace'))!;
+    var workspace = PubWorkspace.find(
+        resourceProvider, Packages.empty, convertPath('/workspace'))!;
     expect(workspace.isBazel, isFalse);
     expect(workspace.root, convertPath('/workspace'));
   }
@@ -95,27 +110,27 @@
   void test_find_fail_notAbsolute() {
     expect(
         () => PubWorkspace.find(
-            resourceProvider, {}, convertPath('not_absolute')),
+            resourceProvider, Packages.empty, convertPath('not_absolute')),
         throwsA(TypeMatcher<ArgumentError>()));
   }
 
   void test_find_file() {
     newPubspecYamlFile('/workspace', 'name: project');
-    var workspace = PubWorkspace.find(
-        resourceProvider, {}, convertPath('/workspace/lib/lib1.dart'))!;
+    var workspace = PubWorkspace.find(resourceProvider, Packages.empty,
+        convertPath('/workspace/lib/lib1.dart'))!;
     expect(workspace.root, convertPath('/workspace'));
   }
 
   void test_find_missingPubspec() {
-    var workspace = PubWorkspace.find(
-        resourceProvider, {}, convertPath('/workspace/lib/lib1.dart'));
+    var workspace = PubWorkspace.find(resourceProvider, Packages.empty,
+        convertPath('/workspace/lib/lib1.dart'));
     expect(workspace, isNull);
   }
 
   void test_isConsistentWithFileSystem() {
     newPubspecYamlFile('/workspace', 'name: my');
-    var workspace =
-        PubWorkspace.find(resourceProvider, {}, convertPath('/workspace'))!;
+    var workspace = PubWorkspace.find(
+        resourceProvider, Packages.empty, convertPath('/workspace'))!;
     expect(workspace.isConsistentWithFileSystem, isTrue);
 
     newPubspecYamlFile('/workspace', 'name: my2');
diff --git a/pkg/dart2wasm/lib/class_info.dart b/pkg/dart2wasm/lib/class_info.dart
index ac2fdda..a837c13 100644
--- a/pkg/dart2wasm/lib/class_info.dart
+++ b/pkg/dart2wasm/lib/class_info.dart
@@ -25,6 +25,7 @@
   static const hashBaseData = 4;
   static const closureContext = 2;
   static const closureFunction = 3;
+  static const typeIsNullable = 2;
   static const interfaceTypeTypeArguments = 4;
   static const typedListBaseLength = 2;
   static const typedListArray = 3;
@@ -51,6 +52,7 @@
     check(translator.hashFieldBaseClass, "_index", FieldIndex.hashBaseIndex);
     check(translator.hashFieldBaseClass, "_data", FieldIndex.hashBaseData);
     check(translator.functionClass, "context", FieldIndex.closureContext);
+    check(translator.typeClass, "isNullable", FieldIndex.typeIsNullable);
     check(translator.interfaceTypeClass, "typeArguments",
         FieldIndex.interfaceTypeTypeArguments);
   }
diff --git a/pkg/dart2wasm/lib/constants.dart b/pkg/dart2wasm/lib/constants.dart
index 6ed2e32..3a3c52e 100644
--- a/pkg/dart2wasm/lib/constants.dart
+++ b/pkg/dart2wasm/lib/constants.dart
@@ -701,17 +701,40 @@
 
         b.i32_const(info.classId);
         b.i32_const(initialIdentityHash);
+        types.encodeNullability(b, type);
         b.i64_const(typeInfo.classId);
-        b.i32_const(types.isNullable(type) ? 1 : 0);
         constants.instantiateConstant(
             function, b, typeArgs, typeListExpectedType);
         translator.struct_new(b, info);
       });
-    } else {
-      // TODO(joshualitt): Real implementation for complex types.
+    } else if (type is FutureOrType) {
+      TypeLiteralConstant typeArgument = TypeLiteralConstant(type.typeArgument);
+      ensureConstant(typeArgument);
       return createConstant(constant, info.nonNullableType, (function, b) {
         b.i32_const(info.classId);
         b.i32_const(initialIdentityHash);
+        types.encodeNullability(b, type);
+        constants.instantiateConstant(
+            function, b, typeArgument, types.nonNullableTypeType);
+        translator.struct_new(b, info);
+      });
+    } else if (type is FunctionType) {
+      // TODO(joshualitt): Real implementation for function types.
+      return createConstant(constant, info.nonNullableType, (function, b) {
+        b.i32_const(info.classId);
+        b.i32_const(initialIdentityHash);
+        types.encodeNullability(b, type);
+        translator.struct_new(b, info);
+      });
+    } else {
+      assert(type is VoidType ||
+          type is NeverType ||
+          type is NullType ||
+          type is DynamicType);
+      return createConstant(constant, info.nonNullableType, (function, b) {
+        b.i32_const(info.classId);
+        b.i32_const(initialIdentityHash);
+        types.encodeNullability(b, type);
         translator.struct_new(b, info);
       });
     }
diff --git a/pkg/dart2wasm/lib/intrinsics.dart b/pkg/dart2wasm/lib/intrinsics.dart
index 755ac27..5d166ca 100644
--- a/pkg/dart2wasm/lib/intrinsics.dart
+++ b/pkg/dart2wasm/lib/intrinsics.dart
@@ -985,11 +985,11 @@
 
       b.i32_const(info.classId);
       b.i32_const(initialIdentityHash);
+      // Runtime types are never nullable.
+      b.i32_const(0);
       b.local_get(receiver);
       b.struct_get(translator.topInfo.struct, FieldIndex.classId);
       b.i64_extend_i32_u();
-      // Runtime types are never nullable.
-      b.i32_const(0);
       // TODO(askesc): Type arguments
       b.global_get(translator.constants.emptyTypeList);
       translator.convertType(function,
diff --git a/pkg/dart2wasm/lib/target.dart b/pkg/dart2wasm/lib/target.dart
index b2c8a13..7d71097 100644
--- a/pkg/dart2wasm/lib/target.dart
+++ b/pkg/dart2wasm/lib/target.dart
@@ -44,6 +44,7 @@
 
   @override
   List<String> get extraRequiredLibraries => const <String>[
+        'dart:async',
         'dart:ffi',
         'dart:_internal',
         'dart:typed_data',
diff --git a/pkg/dart2wasm/lib/types.dart b/pkg/dart2wasm/lib/types.dart
index f517453..18d38eb 100644
--- a/pkg/dart2wasm/lib/types.dart
+++ b/pkg/dart2wasm/lib/types.dart
@@ -13,12 +13,17 @@
 /// Helper class for building runtime types.
 class Types {
   final Translator translator;
+  late final typeClassInfo = translator.classInfo[translator.typeClass]!;
 
   Types(this.translator);
 
   Iterable<Class> _getConcreteSubtypes(Class cls) =>
       translator.subtypes.getSubtypesOf(cls).where((c) => !c.isAbstract);
 
+  w.ValueType get nullableTypeType => typeClassInfo.nullableType;
+
+  w.ValueType get nonNullableTypeType => typeClassInfo.nonNullableType;
+
   /// Build a [Map<int, List<int>>] to store subtype information.
   Map<int, List<int>> _buildSubtypeMap() {
     List<ClassInfo> classes = translator.classes;
@@ -63,6 +68,7 @@
         type is NeverType ||
         type is NullType ||
         type is FunctionType ||
+        type is FutureOrType && _isTypeConstant(type.typeArgument) ||
         type is InterfaceType && type.typeArguments.every(_isTypeConstant);
   }
 
@@ -72,7 +78,13 @@
     } else if (type is VoidType) {
       return translator.voidTypeClass;
     } else if (type is NeverType) {
-      return translator.neverTypeClass;
+      // For runtime types with sound null safety, `Never?` is the same as
+      // `Null`.
+      if (type.nullability == Nullability.nullable) {
+        return translator.nullTypeClass;
+      } else {
+        return translator.neverTypeClass;
+      }
     } else if (type is NullType) {
       return translator.nullTypeClass;
     } else if (type is FutureOrType) {
@@ -89,77 +101,100 @@
     throw "Unexpected DartType: $type";
   }
 
+  void _makeInterfaceType(CodeGenerator codeGen, ClassInfo info,
+      InterfaceType type, TreeNode node) {
+    w.Instructions b = codeGen.b;
+    ClassInfo typeInfo = translator.classInfo[type.classNode]!;
+    w.ValueType typeListExpectedType =
+        info.struct.fields[FieldIndex.interfaceTypeTypeArguments].type.unpacked;
+    encodeNullability(b, type);
+    b.i64_const(typeInfo.classId);
+    w.DefinedFunction function = codeGen.function;
+    w.ValueType listType = codeGen.makeList(
+        type.typeArguments.map((t) => TypeLiteral(t)).toList(),
+        translator.fixedLengthListClass,
+        InterfaceType(translator.typeClass, Nullability.nonNullable),
+        node);
+    translator.convertType(function, listType, typeListExpectedType);
+  }
+
+  void _makeFutureOrType(
+      CodeGenerator codeGen, FutureOrType type, TreeNode node) {
+    w.Instructions b = codeGen.b;
+    w.DefinedFunction function = codeGen.function;
+
+    // We canonicalize `FutureOr<T?>` to `FutureOr<T?>?`. However, we have to
+    // take special care to handle the case where we have
+    // undetermined nullability. To handle this, we emit the type argument, and
+    // read back its nullability at runtime.
+    if (type.nullability == Nullability.undetermined) {
+      w.ValueType typeArgumentType = makeType(codeGen, type.typeArgument, node);
+      w.Local typeArgumentTemporary = codeGen.addLocal(typeArgumentType);
+      b.local_tee(typeArgumentTemporary);
+      b.struct_get(typeClassInfo.struct, FieldIndex.typeIsNullable);
+      b.local_get(typeArgumentTemporary);
+      translator.convertType(function, typeArgumentType, nonNullableTypeType);
+    } else {
+      encodeNullability(b, type);
+      makeType(codeGen, type.typeArgument, node);
+    }
+  }
+
   /// Makes a `_Type` object on the stack.
   /// TODO(joshualitt): Refactor this logic to remove the dependency on
   /// CodeGenerator.
   w.ValueType makeType(CodeGenerator codeGen, DartType type, TreeNode node) {
-    w.ValueType typeType =
-        translator.classInfo[translator.typeClass]!.nullableType;
     w.Instructions b = codeGen.b;
     if (_isTypeConstant(type)) {
       translator.constants.instantiateConstant(
-          codeGen.function, b, TypeLiteralConstant(type), typeType);
-      return typeType;
+          codeGen.function, b, TypeLiteralConstant(type), nonNullableTypeType);
+      return nonNullableTypeType;
     }
+    // All of the singleton types represented by canonical objects should be
+    // created const.
+    assert(type is TypeParameterType ||
+        type is InterfaceType ||
+        type is FutureOrType ||
+        type is FunctionType);
     if (type is TypeParameterType) {
       if (type.parameter.parent is FunctionNode) {
         // Type argument to function
         w.Local? local = codeGen.typeLocals[type.parameter];
         if (local != null) {
           b.local_get(local);
-          return local.type;
+          translator.convertType(
+              codeGen.function, local.type, nonNullableTypeType);
+          return nonNullableTypeType;
         } else {
-          codeGen.unimplemented(
-              node, "Type parameter access inside lambda", [typeType]);
-          return typeType;
+          codeGen.unimplemented(node, "Type parameter access inside lambda",
+              [nonNullableTypeType]);
+          return nonNullableTypeType;
         }
       }
       // Type argument of class
       Class cls = type.parameter.parent as Class;
       ClassInfo info = translator.classInfo[cls]!;
       int fieldIndex = translator.typeParameterIndex[type.parameter]!;
-      w.ValueType thisType = codeGen.visitThis(info.nullableType);
-      translator.convertType(codeGen.function, thisType, info.nullableType);
+      w.ValueType thisType = codeGen.visitThis(info.nonNullableType);
+      translator.convertType(codeGen.function, thisType, info.nonNullableType);
       b.struct_get(info.struct, fieldIndex);
-      return typeType;
+      b.ref_as_non_null();
+      return nonNullableTypeType;
     }
     ClassInfo info = translator.classInfo[classForType(type)]!;
     translator.functions.allocateClass(info.classId);
-    if (type is! InterfaceType) {
-      if (type is FutureOrType || type is FunctionType) {
-        // TODO(joshualitt): Finish RTI.
-        print("Not implemented: RTI ${type}");
-      }
-      b.i32_const(info.classId);
-      b.i32_const(initialIdentityHash);
-      translator.struct_new(b, info);
-      return info.nonNullableType;
-    }
-    ClassInfo typeInfo = translator.classInfo[type.classNode]!;
-    w.ValueType typeListExpectedType =
-        info.struct.fields[FieldIndex.interfaceTypeTypeArguments].type.unpacked;
     b.i32_const(info.classId);
     b.i32_const(initialIdentityHash);
-    b.i64_const(typeInfo.classId);
-    b.i32_const(isNullable(type) ? 1 : 0);
-    w.DefinedFunction function = codeGen.function;
-    if (type.typeArguments.isEmpty) {
-      b.global_get(translator.constants.emptyTypeList);
-      translator.convertType(function,
-          translator.constants.emptyTypeList.type.type, typeListExpectedType);
-    } else if (type.typeArguments.every(_isTypeConstant)) {
-      ListConstant typeArgs = ListConstant(
-          InterfaceType(translator.typeClass, Nullability.nonNullable),
-          type.typeArguments.map((t) => TypeLiteralConstant(t)).toList());
-      translator.constants
-          .instantiateConstant(function, b, typeArgs, typeListExpectedType);
+    if (type is InterfaceType) {
+      _makeInterfaceType(codeGen, info, type, node);
+    } else if (type is FutureOrType) {
+      _makeFutureOrType(codeGen, type, node);
+    } else if (type is FunctionType) {
+      // TODO(joshualitt): Finish RTI.
+      print("Not implemented: RTI ${type}");
+      encodeNullability(b, type);
     } else {
-      w.ValueType listType = codeGen.makeList(
-          type.typeArguments.map((t) => TypeLiteral(t)).toList(),
-          translator.fixedLengthListClass,
-          InterfaceType(translator.typeClass, Nullability.nonNullable),
-          node);
-      translator.convertType(function, listType, typeListExpectedType);
+      throw '`$type` should have already been handled.';
     }
     translator.struct_new(b, info);
     return info.nonNullableType;
@@ -236,16 +271,20 @@
     if (isPotentiallyNullable) {
       b.br(resultLabel!);
       b.end(); // nullLabel
-      b.i32_const(isNullable(type) ? 1 : 0);
+      encodeNullability(b, type);
       b.end(); // resultLabel
     }
   }
 
-  bool isNullable(InterfaceType type) {
-    Nullability nullability = type.declaredNullability;
-    // TODO(joshualitt): Enable assert when spurious 'legacy' values are fixed.
-    // assert(nullability == Nullability.nonNullable ||
-    //    nullability == Nullability.nullable);
+  /// Returns true if a given type is nullable, and false otherwise. This
+  /// function should not be used on [DartType]s with undetermined nullability.
+  bool isNullable(DartType type) {
+    Nullability nullability = type.nullability;
+    assert(nullability == Nullability.nullable ||
+        nullability == Nullability.nonNullable);
     return nullability == Nullability.nullable ? true : false;
   }
+
+  void encodeNullability(w.Instructions b, DartType type) =>
+      b.i32_const(isNullable(type) ? 1 : 0);
 }
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
index 0e8e42a..e218902 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.outline.expect
@@ -28,19 +28,19 @@
 
 
 Extra constant evaluation status:
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:820:13 -> SymbolConstant(#catchError)
-Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:820:13 -> ListConstant(const <Type*>[])
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:820:13 -> SymbolConstant(#test)
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:871:13 -> SymbolConstant(#whenComplete)
-Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:871:13 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:871:13 -> MapConstant(const <Symbol*, dynamic>{})
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:915:13 -> SymbolConstant(#timeout)
-Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:915:13 -> ListConstant(const <Type*>[])
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:915:13 -> SymbolConstant(#onTimeout)
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:769:13 -> SymbolConstant(#then)
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:769:13 -> SymbolConstant(#onError)
-Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:880:13 -> SymbolConstant(#asStream)
-Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:880:13 -> ListConstant(const <Type*>[])
-Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:880:13 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:880:13 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:821:13 -> SymbolConstant(#catchError)
+Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:821:13 -> ListConstant(const <Type*>[])
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:821:13 -> SymbolConstant(#test)
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:872:13 -> SymbolConstant(#whenComplete)
+Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:872:13 -> ListConstant(const <Type*>[])
+Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:872:13 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:916:13 -> SymbolConstant(#timeout)
+Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:916:13 -> ListConstant(const <Type*>[])
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:916:13 -> SymbolConstant(#onTimeout)
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:770:13 -> SymbolConstant(#then)
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:770:13 -> SymbolConstant(#onError)
+Evaluated: SymbolLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:881:13 -> SymbolConstant(#asStream)
+Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:881:13 -> ListConstant(const <Type*>[])
+Evaluated: ListLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:881:13 -> ListConstant(const <dynamic>[])
+Evaluated: MapLiteral @ org-dartlang-sdk:///sdk/lib/async/future.dart:881:13 -> MapConstant(const <Symbol*, dynamic>{})
 Extra constant evaluation: evaluated: 61, effectively constant: 15
diff --git a/runtime/bin/io_natives.cc b/runtime/bin/io_natives.cc
index 4d2dad3..ea51935 100644
--- a/runtime/bin/io_natives.cc
+++ b/runtime/bin/io_natives.cc
@@ -153,6 +153,7 @@
   V(Socket_GetPort, 1)                                                         \
   V(Socket_GetRemotePeer, 1)                                                   \
   V(Socket_GetError, 1)                                                        \
+  V(Socket_Fatal, 1)                                                           \
   V(Socket_GetFD, 1)                                                           \
   V(Socket_GetOption, 3)                                                       \
   V(Socket_GetRawOption, 4)                                                    \
diff --git a/sdk/lib/_internal/wasm/lib/class_id.dart b/sdk/lib/_internal/wasm/lib/class_id.dart
index b9535e9..49e0f2a 100644
--- a/sdk/lib/_internal/wasm/lib/class_id.dart
+++ b/sdk/lib/_internal/wasm/lib/class_id.dart
@@ -16,6 +16,8 @@
   external static int get cidUint8ArrayView;
   @pragma("wasm:class-id", "dart.core#Object")
   external static int get cidObject;
+  @pragma("wasm:class-id", "dart.async#Future")
+  external static int get cidFuture;
 
   // Class IDs for RTI Types.
   @pragma("wasm:class-id", "dart.core#_NeverType")
diff --git a/sdk/lib/_internal/wasm/lib/type.dart b/sdk/lib/_internal/wasm/lib/type.dart
index f775a22..693eba3 100644
--- a/sdk/lib/_internal/wasm/lib/type.dart
+++ b/sdk/lib/_internal/wasm/lib/type.dart
@@ -9,21 +9,29 @@
 
 // TODO(joshualitt): Once we have RTI fully working, we'd like to explore
 // implementing [isSubtype] using inheritance.
+// TODO(joshualitt): We can cache the results of a number of functions in this
+// file:
+//   * [_Type.asNonNullable]
+//   * [_FutureOrType.asFuture].
 abstract class _Type implements Type {
-  const _Type();
+  final bool isNullable;
+
+  const _Type(this.isNullable);
 
   bool _testID(int value) => ClassID.getID(this) == value;
   bool get isNever => _testID(ClassID.cidNeverType);
   bool get isDynamic => _testID(ClassID.cidDynamicType);
   bool get isVoid => _testID(ClassID.cidVoidType);
+  bool get isNull => _testID(ClassID.cidNullType);
   bool get isFutureOr => _testID(ClassID.cidFutureOrType);
   bool get isInterface => _testID(ClassID.cidInterfaceType);
   bool get isFunction => _testID(ClassID.cidFunctionType);
-  bool get isGenericFunctionType => _testID(ClassID.cidGenericFunctionType);
-  bool get isNullable => false;
+  bool get isGenericFunction => _testID(ClassID.cidGenericFunctionType);
 
   T as<T>() => unsafeCast<T>(this);
 
+  _Type get asNonNullable;
+
   @override
   bool operator ==(Object other) => ClassID.getID(this) == ClassID.getID(other);
 
@@ -33,49 +41,107 @@
 
 @pragma("wasm:entry-point")
 class _NeverType extends _Type {
+  const _NeverType() : super(false);
+
+  @override
+  _Type get asNonNullable => this;
+
   @override
   String toString() => 'Never';
 }
 
 @pragma("wasm:entry-point")
 class _DynamicType extends _Type {
+  const _DynamicType() : super(true);
+
+  @override
+  _Type get asNonNullable => throw '`dynamic` type is always nullable.';
+
   @override
   String toString() => 'dynamic';
 }
 
 @pragma("wasm:entry-point")
 class _VoidType extends _Type {
+  const _VoidType() : super(true);
+
+  @override
+  _Type get asNonNullable => throw '`void` type is always nullable.';
+
   @override
   String toString() => 'void';
 }
 
 @pragma("wasm:entry-point")
 class _NullType extends _Type {
+  const _NullType() : super(true);
+
+  @override
+  _Type get asNonNullable => const _NeverType();
+
   @override
   String toString() => 'Null';
 }
 
 @pragma("wasm:entry-point")
 class _FutureOrType extends _Type {
-  // TODO(joshualitt): Implement.
+  final _Type typeArgument;
+
+  @pragma("wasm:entry-point")
+  const _FutureOrType(bool isNullable, this.typeArgument) : super(isNullable);
+
+  _InterfaceType get asFuture =>
+      _InterfaceType(ClassID.cidFuture, isNullable, [typeArgument]);
+
   @override
-  String toString() => 'FutureOr';
+  _Type get asNonNullable {
+    if (!isNullable) return this;
+    if (!typeArgument.isNullable) return _FutureOrType(false, typeArgument);
+    throw '`$this` cannot be non nullable.';
+  }
+
+  @override
+  bool operator ==(Object o) {
+    if (!(super == o)) return false;
+    _FutureOrType other = unsafeCast<_FutureOrType>(o);
+    if (isNullable != other.isNullable) return false;
+    return typeArgument == other.typeArgument;
+  }
+
+  @override
+  int get hashCode {
+    int hash = super.hashCode;
+    hash = mix64(hash ^ (isNullable ? 1 : 0));
+    return mix64(hash ^ typeArgument.hashCode);
+  }
+
+  @override
+  String toString() {
+    StringBuffer s = StringBuffer();
+    s.write("FutureOr");
+    s.write("<");
+    s.write(typeArgument);
+    s.write(">");
+    if (isNullable) s.write("?");
+    return s.toString();
+  }
 }
 
 class _InterfaceType extends _Type {
   final int classId;
-  final bool declaredNullable;
   final List<_Type> typeArguments;
 
   @pragma("wasm:entry-point")
-  const _InterfaceType(this.classId, this.declaredNullable,
-      [this.typeArguments = const []]);
+  const _InterfaceType(this.classId, bool isNullable,
+      [this.typeArguments = const []])
+      : super(isNullable);
 
-  bool get isNullable => declaredNullable;
+  @override
+  _Type get asNonNullable => _InterfaceType(classId, false, typeArguments);
 
   @override
   bool operator ==(Object o) {
-    if (!(super == (o))) return false;
+    if (!(super == o)) return false;
     _InterfaceType other = unsafeCast<_InterfaceType>(o);
     if (classId != other.classId) return false;
     if (isNullable != other.isNullable) return false;
@@ -115,16 +181,26 @@
   }
 }
 
+// TODO(joshualitt): Implement.
 @pragma("wasm:entry-point")
 class _FunctionType extends _Type {
-  // TODO(joshualitt): Implement.
+  const _FunctionType(bool isNullable) : super(isNullable);
+
+  @override
+  _Type get asNonNullable => throw 'unimplemented';
+
   @override
   String toString() => 'FunctionType';
 }
 
+// TODO(joshualitt): Implement.
 @pragma("wasm:entry-point")
 class _GenericFunctionType extends _FunctionType {
-  // TODO(joshualitt): Implement.
+  const _GenericFunctionType(bool isNullable) : super(isNullable);
+
+  @override
+  _Type get asNonNullable => throw 'unimplemented';
+
   @override
   String toString() => 'GenericFunctionType';
 }
@@ -141,10 +217,12 @@
     return _TypeUniverse._(_getSubtypeMap());
   }
 
-  bool isObjectQuestionType(_Type t) {
+  bool isObjectQuestionType(_Type t) => isObjectType(t) && t.isNullable;
+
+  bool isObjectType(_Type t) {
     if (!t.isInterface) return false;
     _InterfaceType type = t.as<_InterfaceType>();
-    return type.classId == ClassID.cidObject && type.isNullable;
+    return type.classId == ClassID.cidObject;
   }
 
   bool isTopType(_Type type) {
@@ -189,22 +267,64 @@
     // Left Bottom:
     if (isBottomType(s)) return true;
 
-    // TODO(joshualitt): Implement missing cases.
-    // Left type variable bound 1:
+    // Left Type Variable Bound 1:
+    // TODO(joshualitt): Implement.
+
     // Left Null:
+    // TODO(joshualitt): Combine with 'Right Null', and this can just be:
+    // `if (s.isNullable && !t.isNullable) return false`
+    if (s.isNull) {
+      return t.isNullable;
+    }
+
     // Right Object:
-    // Left FuturOr:
+    if (isObjectType(t)) {
+      return !s.isNullable;
+    }
+
+    // Left FutureOr:
+    if (s.isFutureOr) {
+      _FutureOrType sFutureOr = s.as<_FutureOrType>();
+      if (!isSubtype(sFutureOr.typeArgument, t)) {
+        return false;
+      }
+      return _isSubtype(sFutureOr.asFuture, t);
+    }
+
     // Left Nullable:
-    // Do we need to handle at runtime
-    //   Type Variable Reflexivity 1 && 2
-    //   Right Promoted Variable
+    if (s.isNullable) {
+      return t.isNullable && isSubtype(s.asNonNullable, t);
+    }
+
+    // Type Variable Reflexivity 1 is subsumed by Reflexivity and therefore
+    // elided.
+    // Type Variable Reflexivity 2 does not apply at runtime.
+    // Right Promoted Variable does not apply at runtime.
+
     // Right FutureOr:
+    if (t.isFutureOr) {
+      _FutureOrType tFutureOr = t.as<_FutureOrType>();
+      if (isSubtype(s, tFutureOr.typeArgument)) {
+        return true;
+      }
+      return isSubtype(s, tFutureOr.asFuture);
+    }
+
     // Right Nullable:
-    // Do we need to handle at runtime:
-    //   Left Promoted Variable
+    if (t.isNullable) {
+      return isSubtype(s, const _NullType()) || isSubtype(s, t.asNonNullable);
+    }
+
+    // Left Promoted Variable does not apply at runtime.
+
     // Left Type Variable Bound 2:
+    // TODO(joshualitt): Implement case.
+
     // Function Type / Function:
+    // TODO(joshualitt): Implement case.
+
     // Positional Function Types + Named Function Types:
+    // TODO(joshualitt): Implement case.
 
     // Interface Compositionality + Super-Interface:
     if (s.isInterface &&
diff --git a/sdk/lib/async/future.dart b/sdk/lib/async/future.dart
index 05433e6..f83386d 100644
--- a/sdk/lib/async/future.dart
+++ b/sdk/lib/async/future.dart
@@ -221,6 +221,7 @@
 /// A future may also fail to ever complete. In that case, no callbacks are
 /// called. That situation should generally be avoided if possible, unless
 /// it's very clearly documented.
+@pragma("wasm:entry-point")
 abstract class Future<T> {
   /// A `Future<Null>` completed with `null`.
   ///
diff --git a/tools/OWNERS b/tools/OWNERS
index fa2dc56..d86db20 100644
--- a/tools/OWNERS
+++ b/tools/OWNERS
@@ -1,4 +1,5 @@
 file:OWNERS_INFRA
+file:OWNERS_ECOSYSTEM
 
 # Groups administrate themselves.
 per-file OWNERS_ANALYZER=file:OWNERS_ANALYZER
diff --git a/tools/VERSION b/tools/VERSION
index fc33a00..ebfa006 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 99
+PRERELEASE 100
 PRERELEASE_PATCH 0
\ No newline at end of file