Version 2.16.0-81.0.dev

Merge commit 'e774227a8197e02a023be957f6c321ba5cf7af4e' into 'dev'
diff --git a/pkg/analysis_server/lib/src/plugin/plugin_manager.dart b/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
index 5972a14..fa6eee9 100644
--- a/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
+++ b/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
@@ -743,7 +743,7 @@
         sourceUrl: pubspecFile.toUri());
     var contents = document.contents;
     if (contents is YamlMap) {
-      YamlNode dependencies = contents['dependencies'];
+      var dependencies = contents['dependencies'] as YamlNode?;
       if (dependencies is YamlMap) {
         return dependencies.keys.cast<String>();
       }
diff --git a/pkg/analysis_server/lib/src/server/dev_server.dart b/pkg/analysis_server/lib/src/server/dev_server.dart
index b11c418..d59e2fa 100644
--- a/pkg/analysis_server/lib/src/server/dev_server.dart
+++ b/pkg/analysis_server/lib/src/server/dev_server.dart
@@ -80,20 +80,21 @@
           continue;
         }
 
-        String severity = error['severity'].toLowerCase();
+        var severity = (error['severity'] as String).toLowerCase();
         if (severity == 'warning' && exitCode < 1) {
           exitCode = 1;
         } else if (severity == 'error' && exitCode < 2) {
           exitCode = 2;
         }
 
-        String message = error['message'];
+        var message = error['message'] as String;
         if (message.endsWith('.')) {
           message = message.substring(0, message.length - 1);
         }
-        String code = error['code'];
-        int line = error['location']['startLine'];
-        int column = error['location']['startColumn'];
+        var code = error['code'] as String;
+        var location = error['location'] as Map<Object?, Object?>;
+        var line = location['startLine'] as int;
+        var column = location['startColumn'] as int;
 
         print('  $severity • $bold$message$none at $filePath:$line:$column • '
             '($code)');
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart
index 5016f76..47504a4 100644
--- a/pkg/analysis_server/lib/src/server/driver.dart
+++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -145,10 +145,12 @@
 
     var analysisServerOptions = AnalysisServerOptions();
     analysisServerOptions.newAnalysisDriverLog =
-        results[ANALYSIS_DRIVER_LOG] ?? results[ANALYSIS_DRIVER_LOG_ALIAS];
-    analysisServerOptions.clientId = results[CLIENT_ID];
+        (results[ANALYSIS_DRIVER_LOG] ?? results[ANALYSIS_DRIVER_LOG_ALIAS])
+            as String?;
+    analysisServerOptions.clientId = results[CLIENT_ID] as String?;
     if (results.wasParsed(USE_LSP)) {
-      analysisServerOptions.useLanguageServerProtocol = results[USE_LSP];
+      analysisServerOptions.useLanguageServerProtocol =
+          results[USE_LSP] as bool;
     } else {
       analysisServerOptions.useLanguageServerProtocol =
           results[SERVER_PROTOCOL] == PROTOCOL_LSP;
@@ -160,18 +162,18 @@
             ? 'unknown.client.lsp'
             : 'unknown.client.classic';
 
-    analysisServerOptions.clientVersion = results[CLIENT_VERSION];
-    analysisServerOptions.cacheFolder = results[CACHE_FOLDER];
-    analysisServerOptions.packagesFile = results[PACKAGES_FILE];
+    analysisServerOptions.clientVersion = results[CLIENT_VERSION] as String?;
+    analysisServerOptions.cacheFolder = results[CACHE_FOLDER] as String?;
+    analysisServerOptions.packagesFile = results[PACKAGES_FILE] as String?;
     analysisServerOptions.reportProtocolVersion =
-        results[REPORT_PROTOCOL_VERSION];
+        results[REPORT_PROTOCOL_VERSION] as String?;
 
     // Read in any per-SDK overrides specified in <sdk>/config/settings.json.
     var sdkConfig = SdkConfiguration.readFromSdk();
     analysisServerOptions.configurationOverrides = sdkConfig;
 
     // Analytics
-    bool disableAnalyticsForSession = results[SUPPRESS_ANALYTICS_FLAG];
+    var disableAnalyticsForSession = results[SUPPRESS_ANALYTICS_FLAG] as bool;
     if (results.wasParsed(TRAIN_USING)) {
       disableAnalyticsForSession = true;
     }
@@ -212,15 +214,16 @@
 
     if (telemetry.showAnalyticsUI) {
       if (results.wasParsed(ANALYTICS_FLAG)) {
-        analytics.enabled = results[ANALYTICS_FLAG];
+        analytics.enabled = results[ANALYTICS_FLAG] as bool;
         print(telemetry.createAnalyticsStatusMessage(analytics.enabled));
         return null;
       }
     }
 
     {
-      bool disableCompletion = results[DISABLE_SERVER_FEATURE_COMPLETION];
-      bool disableSearch = results[DISABLE_SERVER_FEATURE_SEARCH];
+      var disableCompletion =
+          results[DISABLE_SERVER_FEATURE_COMPLETION] as bool;
+      var disableSearch = results[DISABLE_SERVER_FEATURE_SEARCH] as bool;
       if (disableCompletion || disableSearch) {
         analysisServerOptions.featureSet = FeatureSet(
           completion: !disableCompletion,
@@ -229,7 +232,7 @@
       }
     }
 
-    if (results[HELP_OPTION]) {
+    if (results[HELP_OPTION] as bool) {
       _printUsage(parser, analytics, fromHelp: true);
       return null;
     }
@@ -244,8 +247,8 @@
     //
     // Initialize the instrumentation service.
     //
-    var logFilePath =
-        results[PROTOCOL_TRAFFIC_LOG] ?? results[PROTOCOL_TRAFFIC_LOG_ALIAS];
+    var logFilePath = (results[PROTOCOL_TRAFFIC_LOG] ??
+        results[PROTOCOL_TRAFFIC_LOG_ALIAS]) as String?;
     var allInstrumentationServices = this.instrumentationService == null
         ? <InstrumentationService>[]
         : [this.instrumentationService!];
@@ -274,8 +277,8 @@
     AnalysisEngine.instance.instrumentationService = instrumentationService;
 
     int? diagnosticServerPort;
-    final String? portValue =
-        results[DIAGNOSTIC_PORT] ?? results[DIAGNOSTIC_PORT_ALIAS];
+    final portValue =
+        (results[DIAGNOSTIC_PORT] ?? results[DIAGNOSTIC_PORT_ALIAS]) as String?;
     if (portValue != null) {
       try {
         diagnosticServerPort = int.parse(portValue);
@@ -324,10 +327,10 @@
     ErrorNotifier errorNotifier,
     SendPort? sendPort,
   ) {
-    var capture = results[DISABLE_SERVER_EXCEPTION_HANDLING]
+    var capture = results[DISABLE_SERVER_EXCEPTION_HANDLING] as bool
         ? (_, Function f, {Function(String)? print}) => f()
         : _captureExceptions;
-    var trainDirectory = results[TRAIN_USING];
+    var trainDirectory = results[TRAIN_USING] as String?;
     if (trainDirectory != null) {
       if (!FileSystemEntity.isDirectorySync(trainDirectory)) {
         print("Training directory '$trainDirectory' not found.\n");
@@ -426,7 +429,7 @@
           if (sendPort == null) exit(0);
         });
       },
-          print: results[INTERNAL_PRINT_TO_CONSOLE]
+          print: results[INTERNAL_PRINT_TO_CONSOLE] as bool
               ? null
               : httpServer!.recordPrint);
     }
@@ -440,7 +443,7 @@
     int? diagnosticServerPort,
     ErrorNotifier errorNotifier,
   ) {
-    var capture = args[DISABLE_SERVER_EXCEPTION_HANDLING]
+    var capture = args[DISABLE_SERVER_EXCEPTION_HANDLING] as bool
         ? (_, Function f, {Function(String)? print}) => f()
         : _captureExceptions;
 
@@ -483,7 +486,7 @@
       InstrumentationService service, void Function() callback,
       {void Function(String line)? print}) {
     void errorFunction(Zone self, ZoneDelegate parent, Zone zone,
-        dynamic exception, StackTrace stackTrace) {
+        Object exception, StackTrace stackTrace) {
       service.logException(exception, stackTrace);
       throw exception;
     }
diff --git a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
index e337213..2da4819 100644
--- a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
+++ b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
@@ -262,7 +262,7 @@
   void _checkExpressions(AstNode node) {
     // Note: This may queue edits that have to be accounted for later.
     // See _lengthOfInsertions().
-    AstNode? errorMatching(errorCode, {partialMatch}) {
+    AstNode? errorMatching(ErrorCode errorCode, {Pattern? partialMatch}) {
       var error = _findError(errorCode, partialMatch: partialMatch);
       if (error == null) {
         return null;
@@ -1069,7 +1069,7 @@
         node, stmt, DartStatementCompletion.COMPLETE_WHILE_STMT);
   }
 
-  engine.AnalysisError? _findError(ErrorCode code, {partialMatch}) {
+  engine.AnalysisError? _findError(ErrorCode code, {Pattern? partialMatch}) {
     return errors.firstWhereOrNull((err) =>
         err.errorCode == code &&
         (partialMatch == null ? true : err.message.contains(partialMatch)));
@@ -1169,7 +1169,7 @@
     return Position(file, offset);
   }
 
-  void _removeError(errorCode, {partialMatch}) {
+  void _removeError(ErrorCode errorCode, {Pattern? partialMatch}) {
     var error = _findError(errorCode, partialMatch: partialMatch);
     if (error != null) {
       errors.remove(error);
diff --git a/pkg/analysis_server/lib/src/services/completion/yaml/yaml_completion_generator.dart b/pkg/analysis_server/lib/src/services/completion/yaml/yaml_completion_generator.dart
index 618ba40..53c3de6 100644
--- a/pkg/analysis_server/lib/src/services/completion/yaml/yaml_completion_generator.dart
+++ b/pkg/analysis_server/lib/src/services/completion/yaml/yaml_completion_generator.dart
@@ -131,7 +131,7 @@
         // value that was next in the path.
         var key = node.keyAtValue(path[i + 1]);
         if (key is YamlScalar) {
-          producer = producer.producerForKey(key.value);
+          producer = producer.producerForKey(key.value as String);
           // Otherwise, if the item next in the path was a key itself, use the
           // current producer to provide completion for the key.
         } else if (node.nodes.containsKey(path[i + 1])) {
@@ -154,10 +154,11 @@
     List<String> siblingsInList(YamlList list, YamlNode? currentElement) {
       var siblings = <String>[];
       for (var element in list.nodes) {
-        if (element != currentElement &&
-            element is YamlScalar &&
-            element.value is String) {
-          siblings.add(element.value);
+        if (element != currentElement && element is YamlScalar) {
+          var value = element.value;
+          if (value is String) {
+            siblings.add(value);
+          }
         }
       }
       return siblings;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
index ed399ac..9dbbac9 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart
@@ -92,7 +92,7 @@
     }
     var data = <Object>[];
     for (var change in changes) {
-      var result = change.validate(this);
+      var result = change.validate(this) as Object?;
       if (result == null) {
         return;
       }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_children.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_children.dart
index 755c644..7f9a104 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_children.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_children.dart
@@ -42,16 +42,16 @@
   void _convertFlutterChildToChildren(
       NamedExpression namedExp,
       String eol,
-      Function getNodeText,
-      Function getLinePrefix,
-      Function getIndent,
-      Function getText,
+      String Function(Expression) getNodeText,
+      String Function(int) getLinePrefix,
+      String Function(int) getIndent,
+      String Function(int, int) getText,
       FileEditBuilder builder) {
     var childArg = namedExp.expression;
     var childLoc = namedExp.offset + 'child'.length;
     builder.addSimpleInsertion(childLoc, 'ren');
     var listLoc = childArg.offset;
-    String childArgSrc = getNodeText(childArg);
+    var childArgSrc = getNodeText(childArg);
     if (!childArgSrc.contains(eol)) {
       builder.addSimpleInsertion(listLoc, '[');
       builder.addSimpleInsertion(listLoc + childArg.length, ']');
@@ -60,11 +60,10 @@
       if (newlineLoc == childArgSrc.length) {
         newlineLoc -= 1;
       }
-      String indentOld =
-          getLinePrefix(childArg.offset + eol.length + newlineLoc);
+      var indentOld = getLinePrefix(childArg.offset + eol.length + newlineLoc);
       var indentNew = '$indentOld${getIndent(1)}';
       // The separator includes 'child:' but that has no newlines.
-      String separator =
+      var separator =
           getText(namedExp.offset, childArg.offset - namedExp.offset);
       var prefix = separator.contains(eol) ? '' : '$eol$indentNew';
       if (prefix.isEmpty) {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart b/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart
index d3b6ac3..8c148db 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart
@@ -151,7 +151,7 @@
           } else if (nodes.containsValue(child)) {
             for (var entry in nodes.entries) {
               if (child == entry.value) {
-                key = entry.key;
+                key = entry.key as YamlNode?;
                 value = child;
                 break;
               }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_override_set_parser.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_override_set_parser.dart
index aec5cc03..8eb7537 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_override_set_parser.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_override_set_parser.dart
@@ -91,6 +91,7 @@
   /// Report any keys in the [map] whose values are not in [validKeys].
   void _reportUnsupportedKeys(YamlMap map, Set<String> validKeys) {
     for (var keyNode in map.nodes.keys) {
+      keyNode as YamlNode;
       var key = _translateKey(keyNode);
       if (key != null && !validKeys.contains(key)) {
         _reportError(TransformSetErrorCode.unsupportedKey, keyNode, [key]);
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
index dc8184c..b65d750 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
@@ -292,6 +292,7 @@
   /// Report any keys in the [map] whose values are not in [validKeys].
   void _reportUnsupportedKeys(YamlMap map, Set<String> validKeys) {
     for (var keyNode in map.nodes.keys) {
+      keyNode as YamlNode;
       var key = _translateKey(keyNode);
       if (key != null && !validKeys.contains(key)) {
         _reportError(TransformSetErrorCode.unsupportedKey, keyNode, [key]);
@@ -910,7 +911,7 @@
     if (node is YamlMap) {
       var generators = <String, ValueGenerator>{};
       for (var entry in node.nodes.entries) {
-        var name = _translateKey(entry.key);
+        var name = _translateKey(entry.key as YamlNode);
         if (name != null) {
           var value = _translateValueGenerator(
               entry.value, ErrorContext(key: name, parentNode: node));
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart
index be7ef60..9066429 100644
--- a/pkg/analysis_server/lib/src/services/correction/util.dart
+++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -492,8 +492,8 @@
 }
 
 /// Return `true` if the given [lists] are identical at the given [position].
-bool _allListsIdentical(List<List> lists, int position) {
-  Object element = lists[0][position];
+bool _allListsIdentical(List<List<Object>> lists, int position) {
+  var element = lists[0][position];
   for (var list in lists) {
     if (list[position] != element) {
       return false;
diff --git a/pkg/analysis_server/lib/src/status/tree_writer.dart b/pkg/analysis_server/lib/src/status/tree_writer.dart
index ec20780..01543e1 100644
--- a/pkg/analysis_server/lib/src/status/tree_writer.dart
+++ b/pkg/analysis_server/lib/src/status/tree_writer.dart
@@ -80,13 +80,13 @@
 
   /// Write the [value] of the property with the given [name].
   void _writePropertyValue(Object value, int baseIndent) {
-    if (value is List) {
+    if (value is List<Object>) {
       if (value.isEmpty) {
         buffer.write('[]');
       } else {
         var elementIndent = baseIndent + 2;
         buffer.write('[<br>');
-        for (Object element in value) {
+        for (var element in value) {
           indent(elementIndent);
           _writePropertyValue(element, elementIndent);
           buffer.write('<br>');
diff --git a/pkg/analysis_server/test/edit/postfix_completion_test.dart b/pkg/analysis_server/test/edit/postfix_completion_test.dart
index e58ee6c..86085b1 100644
--- a/pkg/analysis_server/test/edit/postfix_completion_test.dart
+++ b/pkg/analysis_server/test/edit/postfix_completion_test.dart
@@ -67,21 +67,12 @@
     );
   }
 
-  void _assertHasChange(String message, String expectedCode, [Function? cmp]) {
+  void _assertHasChange(String message, String expectedCode) {
     if (change.message == message) {
       if (change.edits.isNotEmpty) {
         var resultCode =
             SourceEdit.applySequence(testCode, change.edits[0].edits);
         expect(resultCode, expectedCode.replaceAll('/*caret*/', ''));
-        if (cmp != null) {
-          int offset = cmp(resultCode);
-          expect(change.selection!.offset, offset);
-        }
-      } else {
-        if (cmp != null) {
-          int offset = cmp(testCode);
-          expect(change.selection!.offset, offset);
-        }
       }
       return;
     }
diff --git a/pkg/analysis_server/test/edit/statement_completion_test.dart b/pkg/analysis_server/test/edit/statement_completion_test.dart
index 09e11a7..a692a0f 100644
--- a/pkg/analysis_server/test/edit/statement_completion_test.dart
+++ b/pkg/analysis_server/test/edit/statement_completion_test.dart
@@ -101,19 +101,20 @@
         (s) => s.indexOf(match) + match.length); // Ensure cursor after '='.
   }
 
-  void _assertHasChange(String message, String expectedCode, [Function? cmp]) {
+  void _assertHasChange(String message, String expectedCode,
+      [int Function(String)? cmp]) {
     if (change.message == message) {
       if (change.edits.isNotEmpty) {
         var resultCode =
             SourceEdit.applySequence(testCode, change.edits[0].edits);
         expect(resultCode, expectedCode.replaceAll('/*caret*/', ''));
         if (cmp != null) {
-          int offset = cmp(resultCode);
+          var offset = cmp(resultCode);
           expect(change.selection!.offset, offset);
         }
       } else {
         if (cmp != null) {
-          int offset = cmp(testCode);
+          var offset = cmp(testCode);
           expect(change.selection!.offset, offset);
         }
       }
diff --git a/pkg/analysis_server/test/mocks.dart b/pkg/analysis_server/test/mocks.dart
index b8e733e..60c1114 100644
--- a/pkg/analysis_server/test/mocks.dart
+++ b/pkg/analysis_server/test/mocks.dart
@@ -155,9 +155,9 @@
   }
 
   @override
-  Description describeMismatch(
-      item, Description mismatchDescription, Map matchState, bool verbose) {
-    Response response = item;
+  Description describeMismatch(Object? item, Description mismatchDescription,
+      Map matchState, bool verbose) {
+    var response = item as Response;
     var id = response.id;
     var error = response.error;
     mismatchDescription.add('has identifier "$id"');
@@ -170,8 +170,8 @@
   }
 
   @override
-  bool matches(item, Map matchState) {
-    Response response = item;
+  bool matches(Object? item, Map matchState) {
+    var response = item as Response;
     var error = response.error;
     if (response.id != _id || error == null) {
       return false;
@@ -196,9 +196,9 @@
   }
 
   @override
-  Description describeMismatch(
-      item, Description mismatchDescription, Map matchState, bool verbose) {
-    Response? response = item;
+  Description describeMismatch(Object? item, Description mismatchDescription,
+      Map matchState, bool verbose) {
+    var response = item as Response?;
     if (response == null) {
       mismatchDescription.add('is null response');
     } else {
@@ -213,8 +213,8 @@
   }
 
   @override
-  bool matches(item, Map matchState) {
-    Response? response = item;
+  bool matches(Object? item, Map matchState) {
+    var response = item as Response?;
     return response != null && response.id == _id && response.error == null;
   }
 }
diff --git a/pkg/analysis_server/test/mocks_lsp.dart b/pkg/analysis_server/test/mocks_lsp.dart
index 35b3c1f..6c83f82 100644
--- a/pkg/analysis_server/test/mocks_lsp.dart
+++ b/pkg/analysis_server/test/mocks_lsp.dart
@@ -191,6 +191,7 @@
   /// than the maps as they would be (the server expects to do the conversion).
   T _convertJson<T>(
       lsp.ToJsonable message, T Function(Map<String, dynamic>) constructor) {
-    return constructor(jsonDecode(jsonEncode(message.toJson())));
+    return constructor(
+        jsonDecode(jsonEncode(message.toJson())) as Map<String, Object?>);
   }
 }
diff --git a/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart b/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart
index dfc309c..bc6f11e 100644
--- a/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart
+++ b/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart
@@ -28,19 +28,20 @@
   late PostfixCompletionProcessor processor;
   late SourceChange change;
 
-  void _assertHasChange(String message, String expectedCode, [Function? cmp]) {
+  void _assertHasChange(String message, String expectedCode,
+      [int Function(String)? cmp]) {
     if (change.message == message) {
       if (change.edits.isNotEmpty) {
         var resultCode =
             SourceEdit.applySequence(testCode, change.edits[0].edits);
         expect(resultCode, expectedCode.replaceAll('/*caret*/', ''));
         if (cmp != null) {
-          int offset = cmp(resultCode);
+          var offset = cmp(resultCode);
           expect(change.selection!.offset, offset);
         }
       } else {
         if (cmp != null) {
-          int offset = cmp(testCode);
+          var offset = cmp(testCode);
           expect(change.selection!.offset, offset);
         }
       }
diff --git a/pkg/analysis_server/test/src/cider/rename_test.dart b/pkg/analysis_server/test/src/cider/rename_test.dart
index 626135f..ff14890 100644
--- a/pkg/analysis_server/test/src/cider/rename_test.dart
+++ b/pkg/analysis_server/test/src/cider/rename_test.dart
@@ -221,7 +221,7 @@
     );
   }
 
-  RenameResponse? _rename(String content, newName) {
+  RenameResponse? _rename(String content, String newName) {
     _updateFile(content);
 
     return CiderRenameComputer(
diff --git a/pkg/analysis_server/test/src/computer/outline_computer_test.dart b/pkg/analysis_server/test/src/computer/outline_computer_test.dart
index 7a0837e..c215a6c 100644
--- a/pkg/analysis_server/test/src/computer/outline_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/outline_computer_test.dart
@@ -123,7 +123,7 @@
     void writeOutline(Outline outline, String indent) {
       buffer.write(indent);
       buffer.writeln(outline.element.name);
-      for (var child in outline.children ?? const []) {
+      for (var child in outline.children ?? const <Outline>[]) {
         writeOutline(child, '$indent  ');
       }
     }
diff --git a/pkg/analysis_server/test/src/domain_abstract_test.dart b/pkg/analysis_server/test/src/domain_abstract_test.dart
index 1116cbf..496ba17 100644
--- a/pkg/analysis_server/test/src/domain_abstract_test.dart
+++ b/pkg/analysis_server/test/src/domain_abstract_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:analysis_server/src/analysis_server.dart';
 import 'package:analysis_server/src/domain_abstract.dart';
 import 'package:analysis_server/src/plugin/plugin_manager.dart';
 import 'package:analysis_server/src/protocol_server.dart' hide Element;
@@ -92,7 +93,7 @@
 }
 
 class TestAbstractRequestHandler extends AbstractRequestHandler {
-  TestAbstractRequestHandler(server) : super(server);
+  TestAbstractRequestHandler(AnalysisServer server) : super(server);
 
   @override
   Response handleRequest(Request request) {
diff --git a/pkg/analysis_server/test/stress/completion/completion.dart b/pkg/analysis_server/test/stress/completion/completion.dart
index 41fc4ef..014efa1 100644
--- a/pkg/analysis_server/test/stress/completion/completion.dart
+++ b/pkg/analysis_server/test/stress/completion/completion.dart
@@ -18,10 +18,10 @@
 
     var runner = CompletionRunner(
         output: stdout,
-        printMissing: result['missing'],
-        printQuality: result['quality'],
-        timing: result['timing'],
-        verbose: result['verbose']);
+        printMissing: result['missing'] as bool?,
+        printQuality: result['quality'] as bool?,
+        timing: result['timing'] as bool?,
+        verbose: result['verbose'] as bool?);
     await runner.runAll(analysisRoot);
     await stdout.flush();
   }
diff --git a/pkg/analysis_server/test/stress/replay/replay.dart b/pkg/analysis_server/test/stress/replay/replay.dart
index da2cae0..e11cf1b 100644
--- a/pkg/analysis_server/test/stress/replay/replay.dart
+++ b/pkg/analysis_server/test/stress/replay/replay.dart
@@ -260,19 +260,19 @@
       return false;
     }
 
-    if (results[HELP_FLAG_NAME]) {
+    if (results[HELP_FLAG_NAME] as bool) {
       _showUsage(parser);
       return false;
     }
 
-    String overlayStyleValue = results[OVERLAY_STYLE_OPTION_NAME];
+    var overlayStyleValue = results[OVERLAY_STYLE_OPTION_NAME] as String;
     if (overlayStyleValue == CHANGE_OVERLAY_STYLE) {
       overlayStyle = OverlayStyle.change;
     } else if (overlayStyleValue == MULTIPLE_ADD_OVERLAY_STYLE) {
       overlayStyle = OverlayStyle.multipleAdd;
     }
 
-    if (results[VERBOSE_FLAG_NAME]) {
+    if (results[VERBOSE_FLAG_NAME] as bool) {
       verbose = true;
       logger = Logger(stdout);
     }
diff --git a/pkg/analysis_server/tool/bulk_fix/supported_diagnostics.dart b/pkg/analysis_server/tool/bulk_fix/supported_diagnostics.dart
index 2603f84..b2eab4e 100644
--- a/pkg/analysis_server/tool/bulk_fix/supported_diagnostics.dart
+++ b/pkg/analysis_server/tool/bulk_fix/supported_diagnostics.dart
@@ -16,8 +16,10 @@
   var hintEntries = FixProcessor.nonLintProducerMap.entries.where((e) =>
       e.key.type == ErrorType.HINT || e.key.type == ErrorType.STATIC_WARNING);
 
-  var diagnostics = List.from(hintEntries)
-    ..addAll(FixProcessor.lintProducerMap.entries);
+  var diagnostics = [
+    ...hintEntries,
+    ...FixProcessor.lintProducerMap.entries,
+  ];
   for (var diagnostic in diagnostics) {
     var canBeAppliedInBulk = false;
     var missingExplanations = <String>[];
diff --git a/pkg/analysis_server/tool/code_completion/completion_metrics.dart b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
index a6a9b85..aba444c 100644
--- a/pkg/analysis_server/tool/code_completion/completion_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
@@ -94,7 +94,7 @@
   var provider = PhysicalResourceProvider.INSTANCE;
   if (result.wasParsed('reduceDir')) {
     var targetMetrics = <CompletionMetrics>[];
-    var dir = provider.getFolder(result['reduceDir']);
+    var dir = provider.getFolder(result['reduceDir'] as String);
     var computer = CompletionMetricsComputer('', options);
     for (var child in dir.getChildren()) {
       if (child is File) {
@@ -239,7 +239,7 @@
     printUsage(parser);
     return false;
   } else if (result.wasParsed('reduceDir')) {
-    return validateDir(parser, result['reduceDir']);
+    return validateDir(parser, result['reduceDir'] as String);
   } else if (result.rest.length != 1) {
     printUsage(parser, error: 'No package path specified.');
     return false;
@@ -402,13 +402,14 @@
         in (map['groupMrrComputers'] as Map<String, dynamic>).entries) {
       var group = CompletionGroup.values[int.parse(entry.key)];
       metrics.groupMrrComputers[group] = MeanReciprocalRankComputer(group.name)
-        ..fromJson(entry.value);
+        ..fromJson(entry.value as Map<String, Object?>);
     }
     for (var entry
         in (map['locationMrrComputers'] as Map<String, dynamic>).entries) {
       var location = entry.key;
       metrics.locationMrrComputers[location] =
-          MeanReciprocalRankComputer(location)..fromJson(entry.value);
+          MeanReciprocalRankComputer(location)
+            ..fromJson(entry.value as Map<String, Object?>);
     }
     metrics.charsBeforeTop
         .fromJson(map['charsBeforeTop'] as Map<String, dynamic>);
@@ -417,11 +418,11 @@
     metrics.insertionLengthTheoretical
         .fromJson(map['insertionLengthTheoretical'] as Map<String, dynamic>);
     for (var element in map['missingCompletionLocations'] as List<dynamic>) {
-      metrics.missingCompletionLocations.add(element);
+      metrics.missingCompletionLocations.add(element as String);
     }
     for (var element
         in map['missingCompletionLocationTables'] as List<dynamic>) {
-      metrics.missingCompletionLocationTables.add(element);
+      metrics.missingCompletionLocationTables.add(element as String);
     }
     for (var entry in (map['slowestResults'] as Map<String, dynamic>).entries) {
       var group = CompletionGroup.values[int.parse(entry.key)];
@@ -1669,15 +1670,17 @@
 
   factory CompletionMetricsOptions(results) {
     return CompletionMetricsOptions._(
-        overlay: results[OVERLAY],
-        printMissedCompletionDetails: results[PRINT_MISSED_COMPLETION_DETAILS],
-        printMissedCompletionSummary: results[PRINT_MISSED_COMPLETION_SUMMARY],
-        printMissingInformation: results[PRINT_MISSING_INFORMATION],
-        printMrrByLocation: results[PRINT_MRR_BY_LOCATION],
+        overlay: results[OVERLAY] as String,
+        printMissedCompletionDetails:
+            results[PRINT_MISSED_COMPLETION_DETAILS] as bool,
+        printMissedCompletionSummary:
+            results[PRINT_MISSED_COMPLETION_SUMMARY] as bool,
+        printMissingInformation: results[PRINT_MISSING_INFORMATION] as bool,
+        printMrrByLocation: results[PRINT_MRR_BY_LOCATION] as bool,
         printShadowedCompletionDetails:
-            results[PRINT_SHADOWED_COMPLETION_DETAILS],
-        printSlowestResults: results[PRINT_SLOWEST_RESULTS],
-        printWorstResults: results[PRINT_WORST_RESULTS]);
+            results[PRINT_SHADOWED_COMPLETION_DETAILS] as bool,
+        printSlowestResults: results[PRINT_SLOWEST_RESULTS] as bool,
+        printWorstResults: results[PRINT_WORST_RESULTS] as bool);
   }
 
   CompletionMetricsOptions._(
diff --git a/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart b/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart
index 8494fb4..83be746 100644
--- a/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart
+++ b/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart
@@ -31,7 +31,7 @@
     var computer = ImpliedTypeComputer();
     var stopwatch = Stopwatch();
     stopwatch.start();
-    await computer.compute(rootPath, verbose: result['verbose']);
+    await computer.compute(rootPath, verbose: result['verbose'] as bool);
     stopwatch.stop();
 
     var duration = Duration(milliseconds: stopwatch.elapsedMilliseconds);
diff --git a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
index e5ad8cc..157e2be 100644
--- a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
@@ -51,7 +51,7 @@
     var computer = RelevanceMetricsComputer();
     var stopwatch = Stopwatch();
     stopwatch.start();
-    await computer.compute(rootPath, verbose: result['verbose']);
+    await computer.compute(rootPath, verbose: result['verbose'] as bool);
     stopwatch.stop();
 
     var duration = Duration(milliseconds: stopwatch.elapsedMilliseconds);
diff --git a/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart b/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart
index 30fd62f..7111493 100644
--- a/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart
+++ b/pkg/analysis_server/tool/code_completion/relevance_table_generator.dart
@@ -59,7 +59,7 @@
 
     if (result.wasParsed('reduceDir')) {
       var data = RelevanceData();
-      var dir = provider.getFolder(result['reduceDir']);
+      var dir = provider.getFolder(result['reduceDir'] as String);
       var suffix = result.rest.isNotEmpty ? result.rest[0] : '';
       for (var child in dir.getChildren()) {
         if (child is File) {
@@ -76,7 +76,7 @@
 
     var computer = RelevanceMetricsComputer();
     var stopwatch = Stopwatch()..start();
-    await computer.compute(rootPath, verbose: result['verbose']);
+    await computer.compute(rootPath, verbose: result['verbose'] as bool);
     if (result.wasParsed('mapFile')) {
       var mapFile = provider.getFile(result['mapFile'] as String);
       mapFile.writeAsStringSync(computer.data.toJson());
@@ -139,7 +139,7 @@
     printUsage(parser);
     return false;
   } else if (result.wasParsed('reduceDir')) {
-    return validateDir(parser, result['reduceDir']);
+    return validateDir(parser, result['reduceDir'] as String);
   } else if (result.rest.length != 1) {
     printUsage(parser, error: 'No package path specified.');
     return false;
diff --git a/tools/VERSION b/tools/VERSION
index 7ba8c56..0416a68 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 16
 PATCH 0
-PRERELEASE 80
+PRERELEASE 81
 PRERELEASE_PATCH 0
\ No newline at end of file