Version 2.14.0-40.0.dev

Merge commit '3498404125e2ec2bd4afb0122b941d516ea299b4' into 'dev'
diff --git a/pkg/analyzer/lib/exception/exception.dart b/pkg/analyzer/lib/exception/exception.dart
index 9ac1bca..d7cf039 100644
--- a/pkg/analyzer/lib/exception/exception.dart
+++ b/pkg/analyzer/lib/exception/exception.dart
@@ -21,7 +21,7 @@
     buffer.write('$runtimeType: ');
     buffer.writeln(message);
 
-    var cause = this.cause;
+    final cause = this.cause;
     if (cause != null) {
       buffer.write('Caused by ');
       cause._writeOn(buffer);
@@ -75,7 +75,7 @@
     if (message != null) {
       buffer.writeln(message);
     }
-    var exception = this.exception;
+    final exception = this.exception;
     if (exception is AnalysisException) {
       buffer.writeln(exception.message);
       buffer.writeln(stackTrace.toString());
diff --git a/pkg/analyzer/lib/file_system/physical_file_system.dart b/pkg/analyzer/lib/file_system/physical_file_system.dart
index 909e8f6..3bf1331 100644
--- a/pkg/analyzer/lib/file_system/physical_file_system.dart
+++ b/pkg/analyzer/lib/file_system/physical_file_system.dart
@@ -409,7 +409,7 @@
   /// https://support.microsoft.com/en-us/kb/74496
   void _throwIfWindowsDeviceDriver() {
     if (io.Platform.isWindows) {
-      String shortName = this.shortName.toUpperCase();
+      final shortName = this.shortName.toUpperCase();
       if (shortName == r'CON' ||
           shortName == r'PRN' ||
           shortName == r'AUX' ||
diff --git a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
index 3e512c7..c96c08e 100644
--- a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
+++ b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart
@@ -63,7 +63,7 @@
   YamlMap getOptionsFromSource(Source source) {
     YamlMap options = getOptionsFromString(_readAnalysisOptions(source));
     var node = options.valueAt(AnalyzerOptions.include);
-    var sourceFactory = this.sourceFactory;
+    final sourceFactory = this.sourceFactory;
     if (sourceFactory != null && node is YamlScalar) {
       var path = node.value;
       if (path is String) {
diff --git a/pkg/analyzer/lib/src/context/source.dart b/pkg/analyzer/lib/src/context/source.dart
index 74548b6..86b91e6 100644
--- a/pkg/analyzer/lib/src/context/source.dart
+++ b/pkg/analyzer/lib/src/context/source.dart
@@ -52,13 +52,12 @@
 
   @override
   DartSdk? get dartSdk {
-    List<UriResolver> resolvers = this.resolvers;
+    final resolvers = this.resolvers;
     int length = resolvers.length;
     for (int i = 0; i < length; i++) {
-      UriResolver resolver = resolvers[i];
+      var resolver = resolvers[i];
       if (resolver is DartUriResolver) {
-        DartUriResolver dartUriResolver = resolver;
-        return dartUriResolver.dartSdk;
+        return resolver.dartSdk;
       }
     }
     return null;
diff --git a/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart b/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart
index 6a8e2c1..9147be7 100644
--- a/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/dependency/library_builder.dart
@@ -688,7 +688,7 @@
     var builder = ApiSignature();
     builder.addBytes(uriSignature);
 
-    var enclosingClassNameSignature = this.enclosingClassNameSignature;
+    final enclosingClassNameSignature = this.enclosingClassNameSignature;
     if (enclosingClassNameSignature != null) {
       builder.addBytes(enclosingClassNameSignature);
     }
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index 0577376..04f85aa 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -278,7 +278,7 @@
   /// just this file.  If the library cycle is not known yet, compute it.
   LibraryCycle get libraryCycle {
     if (isPart) {
-      var library = this.library;
+      final library = this.library;
       if (library != null && !identical(library, this)) {
         return library.libraryCycle;
       }
diff --git a/pkg/analyzer/lib/src/dart/analysis/results.dart b/pkg/analyzer/lib/src/dart/analysis/results.dart
index e55c00e..bcd371c 100644
--- a/pkg/analyzer/lib/src/dart/analysis/results.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/results.dart
@@ -369,7 +369,7 @@
 
   @override
   LibraryElement get libraryElement {
-    var unit = this.unit;
+    final unit = this.unit;
     if (unit == null) {
       throw StateError('The result has no unit');
     }
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index e2f7ed12..592849d 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -751,14 +751,14 @@
 
   @override
   int get length {
-    Token beginToken = this.beginToken;
-    Token endToken = this.endToken;
+    final beginToken = this.beginToken;
+    final endToken = this.endToken;
     return endToken.offset + endToken.length - beginToken.offset;
   }
 
   @override
   int get offset {
-    Token beginToken = this.beginToken;
+    final beginToken = this.beginToken;
     return beginToken.offset;
   }
 
@@ -768,10 +768,10 @@
   @override
   AstNode get root {
     AstNode root = this;
-    var parent = this.parent;
-    while (parent != null) {
-      root = parent;
-      parent = root.parent;
+    var rootParent = parent;
+    while (rootParent != null) {
+      root = rootParent;
+      rootParent = root.parent;
     }
     return root;
   }
@@ -2067,7 +2067,7 @@
 
   @override
   int get length {
-    Token endToken = this.endToken;
+    final endToken = this.endToken;
     return endToken.offset + endToken.length;
   }
 
@@ -3517,7 +3517,7 @@
 
   @override
   ParameterElement? get staticParameterElement {
-    var parent = this.parent;
+    final parent = this.parent;
     if (parent is ArgumentListImpl) {
       return parent._getStaticParameterElementFor(this);
     } else if (parent is IndexExpressionImpl) {
@@ -4007,7 +4007,7 @@
 
   @override
   Token get beginToken {
-    NodeListImpl<Annotation> metadata = this.metadata;
+    final metadata = this.metadata;
     if (metadata.isNotEmpty) {
       return metadata.beginToken!;
     } else if (requiredKeyword != null) {
@@ -4279,7 +4279,7 @@
 
   @override
   ParameterElement? get declaredElement {
-    var identifier = this.identifier;
+    final identifier = this.identifier;
     if (identifier == null) {
       return null;
     }
@@ -5128,7 +5128,7 @@
 
   @override
   Token get beginToken {
-    NodeListImpl<Annotation> metadata = this.metadata;
+    final metadata = this.metadata;
     if (metadata.isNotEmpty) {
       return metadata.beginToken!;
     } else if (requiredKeyword != null) {
@@ -5896,7 +5896,7 @@
   ParameterElement? get _staticParameterElementForIndex {
     Element? element = staticElement;
 
-    var parent = this.parent;
+    final parent = this.parent;
     if (parent is CompoundAssignmentExpression) {
       var assignment = parent as CompoundAssignmentExpression;
       element = assignment.writeElement ?? assignment.readElement;
@@ -5918,7 +5918,7 @@
   @override
   bool inGetterContext() {
     // TODO(brianwilkerson) Convert this to a getter.
-    AstNode parent = this.parent!;
+    final parent = this.parent!;
     if (parent is AssignmentExpression) {
       AssignmentExpression assignment = parent;
       if (identical(assignment.leftHandSide, this) &&
@@ -5932,7 +5932,7 @@
   @override
   bool inSetterContext() {
     // TODO(brianwilkerson) Convert this to a getter.
-    AstNode parent = this.parent!;
+    final parent = this.parent!;
     if (parent is PrefixExpression) {
       return parent.operator.type.isIncrementOperator;
     } else if (parent is PostfixExpression) {
@@ -6101,7 +6101,7 @@
   /// the literal is the child of a negation operation. The literal value itself
   /// will always be positive.
   bool get immediatelyNegated {
-    AstNode parent = this.parent!; // Capture for type propagation.
+    final parent = this.parent!;
     return parent is PrefixExpression &&
         parent.operator.type == TokenType.MINUS;
   }
@@ -6651,7 +6651,7 @@
     if (constKeyword != null) {
       return constKeyword!;
     }
-    var typeArguments = this.typeArguments;
+    final typeArguments = this.typeArguments;
     if (typeArguments != null) {
       return typeArguments.beginToken;
     }
@@ -7618,7 +7618,7 @@
 
   @override
   ParameterKind get kind {
-    var parent = this.parent;
+    final parent = this.parent;
     if (parent is DefaultFormalParameterImpl) {
       return parent.kind;
     }
@@ -8561,7 +8561,7 @@
     if (constKeyword != null) {
       return constKeyword!;
     }
-    var typeArguments = this.typeArguments;
+    final typeArguments = this.typeArguments;
     if (typeArguments != null) {
       return typeArguments.beginToken;
     }
@@ -8690,7 +8690,7 @@
 
   @override
   Token get beginToken {
-    NodeListImpl<Annotation> metadata = this.metadata;
+    final metadata = this.metadata;
     if (metadata.isNotEmpty) {
       return metadata.beginToken!;
     } else if (requiredKeyword != null) {
@@ -8773,7 +8773,7 @@
 
   @override
   bool get isQualified {
-    AstNode parent = this.parent!;
+    final parent = this.parent!;
     if (parent is PrefixedIdentifier) {
       return identical(parent.identifier, this);
     } else if (parent is PropertyAccess) {
@@ -10384,19 +10384,19 @@
 
   @override
   bool get isConst {
-    var parent = this.parent;
+    final parent = this.parent;
     return parent is VariableDeclarationList && parent.isConst;
   }
 
   @override
   bool get isFinal {
-    var parent = this.parent;
+    final parent = this.parent;
     return parent is VariableDeclarationList && parent.isFinal;
   }
 
   @override
   bool get isLate {
-    var parent = this.parent;
+    final parent = this.parent;
     return parent is VariableDeclarationList && parent.isLate;
   }
 
diff --git a/pkg/analyzer/lib/src/dart/ast/extensions.dart b/pkg/analyzer/lib/src/dart/ast/extensions.dart
index 03225d1..d261083 100644
--- a/pkg/analyzer/lib/src/dart/ast/extensions.dart
+++ b/pkg/analyzer/lib/src/dart/ast/extensions.dart
@@ -151,7 +151,7 @@
   /// be already resolved. Every such expression must have the type set,
   /// at least `dynamic`.
   DartType get typeOrThrow {
-    var type = this.type;
+    final type = this.type;
     if (type == null) {
       throw StateError('No type: $this');
     }
diff --git a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
index e64a4ab..b877ff3 100644
--- a/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
+++ b/pkg/analyzer/lib/src/dart/constant/constant_verifier.dart
@@ -636,12 +636,12 @@
 
       _validateExpressionFromDeferredLibrary(element);
 
-      var listElementType = this.listElementType;
+      final listElementType = this.listElementType;
       if (listElementType != null) {
         return _validateListExpression(listElementType, element, value);
       }
 
-      var setConfig = this.setConfig;
+      final setConfig = this.setConfig;
       if (setConfig != null) {
         return _validateSetExpression(setConfig, element, value);
       }
@@ -690,7 +690,7 @@
         return _validateListOrSetSpread(element, value);
       }
 
-      var mapConfig = this.mapConfig;
+      final mapConfig = this.mapConfig;
       if (mapConfig != null) {
         return _validateMapSpread(mapConfig, element, value);
       }
@@ -800,7 +800,7 @@
       }
     }
 
-    var setConfig = this.setConfig;
+    final setConfig = this.setConfig;
     if (setConfig != null) {
       for (var item in iterableValue) {
         Expression expression = element.expression;
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 9a69609..f4ea31f 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -726,7 +726,7 @@
 
   @override
   bool get isValidMixin {
-    var supertype = this.supertype;
+    final supertype = this.supertype;
     if (supertype != null && !supertype.isDartCoreObject) {
       return false;
     }
@@ -913,7 +913,7 @@
     // forwarded to this class.
     Iterable<ConstructorElement> constructorsToForward;
     if (!superElement.isMixinApplication) {
-      var library = this.library;
+      final library = this.library;
       constructorsToForward = superElement.constructors
           .where((constructor) => constructor.isAccessibleIn(library))
           .where((constructor) => !constructor.isFactory);
@@ -1370,7 +1370,7 @@
   @Deprecated('Not useful for clients')
   @override
   bool get hasLoadLibraryFunction {
-    List<FunctionElement> functions = this.functions;
+    final functions = this.functions;
     for (int i = 0; i < functions.length; i++) {
       if (functions[i].name == FunctionElement.LOAD_LIBRARY_NAME) {
         return true;
@@ -1954,7 +1954,7 @@
   @override
   bool get isConst {
     if (linkedNode != null) {
-      var linkedNode = this.linkedNode as ConstructorDeclaration;
+      final linkedNode = this.linkedNode as ConstructorDeclaration;
       return linkedNode.constKeyword != null;
     }
     return hasModifier(Modifier.CONST);
@@ -1978,7 +1978,7 @@
   @override
   bool get isFactory {
     if (linkedNode != null) {
-      var linkedNode = this.linkedNode as ConstructorDeclaration;
+      final linkedNode = this.linkedNode as ConstructorDeclaration;
       return linkedNode.factoryKeyword != null;
     }
     return hasModifier(Modifier.FACTORY);
@@ -2388,7 +2388,7 @@
 
   @override
   bool get isDeprecated {
-    var element = this.element;
+    final element = this.element;
     if (element is ConstructorElement) {
       return element.library.isDartCore &&
           element.enclosingElement.name == _DEPRECATED_CLASS_NAME;
@@ -2497,7 +2497,7 @@
     required String libraryName,
     required String className,
   }) {
-    var element = this.element;
+    final element = this.element;
     return element is ConstructorElement &&
         element.enclosingElement.name == className &&
         element.library.name == libraryName;
@@ -2521,7 +2521,7 @@
     required String libraryName,
     required String name,
   }) {
-    var element = this.element;
+    final element = this.element;
     return element is PropertyAccessorElement &&
         element.name == name &&
         element.library.name == libraryName;
@@ -2639,7 +2639,7 @@
 
   @override
   bool get hasAlwaysThrows {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isAlwaysThrows) {
@@ -2651,7 +2651,7 @@
 
   @override
   bool get hasDeprecated {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isDeprecated) {
@@ -2663,7 +2663,7 @@
 
   @override
   bool get hasDoNotStore {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isDoNotStore) {
@@ -2675,7 +2675,7 @@
 
   @override
   bool get hasFactory {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isFactory) {
@@ -2694,7 +2694,7 @@
 
   @override
   bool get hasInternal {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isInternal) {
@@ -2706,7 +2706,7 @@
 
   @override
   bool get hasIsTest {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isIsTest) {
@@ -2718,7 +2718,7 @@
 
   @override
   bool get hasIsTestGroup {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isIsTestGroup) {
@@ -2730,7 +2730,7 @@
 
   @override
   bool get hasJS {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isJS) {
@@ -2742,7 +2742,7 @@
 
   @override
   bool get hasLiteral {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isLiteral) {
@@ -2754,7 +2754,7 @@
 
   @override
   bool get hasMustCallSuper {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isMustCallSuper) {
@@ -2766,7 +2766,7 @@
 
   @override
   bool get hasNonVirtual {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isNonVirtual) {
@@ -2778,7 +2778,7 @@
 
   @override
   bool get hasOptionalTypeArgs {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isOptionalTypeArgs) {
@@ -2790,7 +2790,7 @@
 
   @override
   bool get hasOverride {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isOverride) {
@@ -2802,7 +2802,7 @@
 
   @override
   bool get hasProtected {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isProtected) {
@@ -2814,7 +2814,7 @@
 
   @override
   bool get hasRequired {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isRequired) {
@@ -2826,7 +2826,7 @@
 
   @override
   bool get hasSealed {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isSealed) {
@@ -2838,7 +2838,7 @@
 
   @override
   bool get hasVisibleForTemplate {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isVisibleForTemplate) {
@@ -2850,7 +2850,7 @@
 
   @override
   bool get hasVisibleForTesting {
-    var metadata = this.metadata;
+    final metadata = this.metadata;
     for (var i = 0; i < metadata.length; i++) {
       var annotation = metadata[i];
       if (annotation.isVisibleForTesting) {
@@ -2870,7 +2870,7 @@
 
   @override
   bool get isPrivate {
-    var name = this.name;
+    final name = this.name;
     if (name == null) {
       return true;
     }
@@ -3010,7 +3010,7 @@
   @override
   String getExtendedDisplayName(String? shortName) {
     shortName ??= displayName;
-    var source = this.source;
+    final source = this.source;
     return "$shortName (${source?.fullName})";
   }
 
@@ -3903,7 +3903,7 @@
     if (_extendedType != null) return _extendedType!;
 
     if (linkedNode != null) {
-      var linkedNode = this.linkedNode as ExtensionDeclaration;
+      final linkedNode = this.linkedNode as ExtensionDeclaration;
       linkedContext!.applyResolution(linkedNode);
       return _extendedType = linkedNode.extendedType.typeOrThrow;
     }
@@ -4690,7 +4690,7 @@
   @override
   bool get isDeferred {
     if (linkedNode != null) {
-      var linkedNode = this.linkedNode as ImportDirective;
+      final linkedNode = this.linkedNode as ImportDirective;
       return linkedNode.deferredKeyword != null;
     }
     return hasModifier(Modifier.DEFERRED);
@@ -4724,7 +4724,7 @@
     if (_prefix != null) return _prefix;
 
     if (linkedNode != null) {
-      var linkedNode = this.linkedNode as ImportDirective;
+      final linkedNode = this.linkedNode as ImportDirective;
       var prefix = linkedNode.prefix;
       if (prefix != null) {
         var name = prefix.name;
@@ -5550,7 +5550,7 @@
       return _superclassConstraints;
     }
 
-    var linkedNode = this.linkedNode;
+    final linkedNode = this.linkedNode;
     if (linkedNode is MixinDeclaration) {
       linkedContext!.applyResolution(linkedNode);
       List<InterfaceType>? constraints;
@@ -6076,7 +6076,7 @@
 
   @override
   String? get defaultValueCode {
-    var linkedNode = this.linkedNode;
+    final linkedNode = this.linkedNode;
     if (linkedNode is DefaultFormalParameter) {
       return linkedNode.defaultValue?.toSource();
     }
@@ -6129,7 +6129,7 @@
   @override
   bool get isFinal {
     if (linkedNode != null) {
-      var linkedNode = this.linkedNode as FormalParameter;
+      final linkedNode = this.linkedNode as FormalParameter;
       return linkedNode.isFinal;
     }
     return super.isFinal;
@@ -6167,7 +6167,7 @@
     if (_parameterKind != null) return _parameterKind!;
 
     if (linkedNode != null) {
-      var linkedNode = this.linkedNode as FormalParameterImpl;
+      final linkedNode = this.linkedNode as FormalParameterImpl;
       return linkedNode.kind;
     }
 
@@ -7044,7 +7044,7 @@
 
     _ensureAliasedElement();
 
-    var linkedNode = this.linkedNode;
+    final linkedNode = this.linkedNode;
     if (linkedNode is GenericTypeAlias) {
       var typeNode = linkedNode.type;
       if (isNonFunctionTypeAliasesEnabled) {
@@ -7198,7 +7198,7 @@
     if (_isAliasedElementReady) return;
     _isAliasedElementReady = true;
 
-    var linkedNode = this.linkedNode;
+    final linkedNode = this.linkedNode;
     if (linkedNode != null) {
       if (linkedNode is GenericTypeAlias) {
         var type = linkedNode.type;
@@ -7287,7 +7287,7 @@
   DartType? get boundInternal {
     if (_bound != null) return _bound;
 
-    var linkedNode = this.linkedNode;
+    final linkedNode = this.linkedNode;
     if (linkedNode is TypeParameter) {
       return _bound = linkedNode.bound?.type;
     }
diff --git a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
index 7486d35..bebd7f3 100644
--- a/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
+++ b/pkg/analyzer/lib/src/dart/element/generic_inferrer.dart
@@ -580,7 +580,7 @@
     // However in summary code it doesn't look like the AST node with span is
     // available.
     String prefix;
-    var genericClass = this.genericClass;
+    final genericClass = this.genericClass;
     if (genericClass != null &&
         (genericClass.name == "List" || genericClass.name == "Map") &&
         genericClass.library.isDartCore == true) {
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index d719f6a..aa87517 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -841,7 +841,7 @@
 
   @override
   List<ParameterElement> get parameters {
-    DartType type = this.type;
+    final type = this.type;
     if (type is FunctionType) {
       return type.parameters;
     }
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index a1b36a1..30d4a2c 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -140,11 +140,11 @@
   @override
   int get hashCode {
     // Reference the arrays of parameters
-    List<DartType> normalParameterTypes = this.normalParameterTypes;
-    List<DartType> optionalParameterTypes = this.optionalParameterTypes;
-    Iterable<DartType> namedParameterTypes = this.namedParameterTypes.values;
+    final normalParameterTypes = this.normalParameterTypes;
+    final optionalParameterTypes = this.optionalParameterTypes;
+    var namedParameterTypes = this.namedParameterTypes.values;
     // Generate the hashCode
-    int code = returnType.hashCode;
+    var code = returnType.hashCode;
     for (int i = 0; i < normalParameterTypes.length; i++) {
       code = (code << 1) + normalParameterTypes[i].hashCode;
     }
@@ -954,7 +954,7 @@
     }
 
     if (recoveryStatic) {
-      var element = this.element as AbstractClassElementImpl;
+      final element = this.element as AbstractClassElementImpl;
       return element.lookupStaticGetter(name, library);
     }
 
@@ -1198,7 +1198,7 @@
     }
 
     if (recoveryStatic) {
-      var element = this.element as AbstractClassElementImpl;
+      final element = this.element as AbstractClassElementImpl;
       return element.lookupStaticMethod(name, library);
     }
 
@@ -1287,7 +1287,7 @@
     }
 
     if (recoveryStatic) {
-      var element = this.element as AbstractClassElementImpl;
+      final element = this.element as AbstractClassElementImpl;
       return element.lookupStaticSetter(name, library);
     }
 
@@ -1891,7 +1891,7 @@
 
   @override
   DartType resolveToBound(DartType objectType) {
-    var promotedBound = this.promotedBound;
+    final promotedBound = this.promotedBound;
     if (promotedBound != null) {
       return promotedBound.resolveToBound(objectType);
     }
diff --git a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
index b78323d..11e9b80 100644
--- a/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart
@@ -242,7 +242,7 @@
     // Set this.flow to null before doing any clean-up so that if an exception
     // is raised, the state is already updated correctly, and we don't have
     // cascading failures.
-    var flow = this.flow;
+    final flow = this.flow;
     this.flow = null;
     assignedVariables = null;
 
@@ -253,7 +253,7 @@
   /// associated with [newNode].  We need to do this when doing AST rewriting,
   /// so that test data can be found using the rewritten tree.
   void transferTestData(AstNode oldNode, AstNode newNode) {
-    var dataForTesting = this.dataForTesting;
+    final dataForTesting = this.dataForTesting;
     if (dataForTesting != null) {
       var oldNonPromotionReasons = dataForTesting.nonPromotionReasons[oldNode];
       if (oldNonPromotionReasons != null) {
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 0d097e9..cedd048 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -85,7 +85,7 @@
   EnclosingExecutableContext.empty() : this(null);
 
   String? get displayName {
-    var element = this.element;
+    final element = this.element;
     if (element is ConstructorElement) {
       var className = element.enclosingElement.displayName;
       var constructorName = element.displayName;
diff --git a/pkg/analyzer/lib/src/lint/project.dart b/pkg/analyzer/lib/src/lint/project.dart
index c98e7bd..a461bc7 100644
--- a/pkg/analyzer/lib/src/lint/project.dart
+++ b/pkg/analyzer/lib/src/lint/project.dart
@@ -74,7 +74,7 @@
   bool isApi(Element element) => _apiModel.contains(element);
 
   String _calculateName() {
-    var pubspec = this.pubspec;
+    final pubspec = this.pubspec;
     if (pubspec != null) {
       var nameEntry = pubspec.name;
       if (nameEntry != null) {
diff --git a/pkg/analyzer/lib/src/summary2/named_type_builder.dart b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
index 56056ce..cc431c9 100644
--- a/pkg/analyzer/lib/src/summary2/named_type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/named_type_builder.dart
@@ -89,7 +89,7 @@
       return _type!;
     }
 
-    var element = this.element;
+    final element = this.element;
     if (element is ClassElement) {
       var parameters = element.typeParameters;
       var arguments = _buildArguments(parameters);
diff --git a/pkg/analyzer/lib/src/workspace/bazel.dart b/pkg/analyzer/lib/src/workspace/bazel.dart
index ee0c6d9..db72308 100644
--- a/pkg/analyzer/lib/src/workspace/bazel.dart
+++ b/pkg/analyzer/lib/src/workspace/bazel.dart
@@ -278,7 +278,7 @@
         return writableFile;
       }
       // READONLY
-      var readonly = this.readonly;
+      final readonly = this.readonly;
       if (readonly != null) {
         File file = provider.getFile(context.join(readonly, relative));
         if (file.exists) {
@@ -406,7 +406,7 @@
       }
     }
     // READONLY
-    var readonly = this.readonly;
+    final readonly = this.readonly;
     if (readonly != null) {
       if (context.isWithin(readonly, p)) {
         return context.relative(p, from: readonly);
diff --git a/pkg/analyzer/test/src/dart/ast/parse_base.dart b/pkg/analyzer/test/src/dart/ast/parse_base.dart
index 75dd688..a088dc9 100644
--- a/pkg/analyzer/test/src/dart/ast/parse_base.dart
+++ b/pkg/analyzer/test/src/dart/ast/parse_base.dart
@@ -20,7 +20,7 @@
     var source = file.createSource();
     var content = file.readAsStringSync();
 
-    var analysisOptions = this.analysisOptions;
+    final analysisOptions = this.analysisOptions;
     var featureSet = analysisOptions.contextFeatures;
 
     var errorListener = RecordingErrorListener();
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index a159287..ce28397 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -1217,10 +1217,10 @@
   }
 
   void _withIndent(void Function() f) {
-    var indent = this.indent;
-    this.indent = '$indent  ';
+    var savedIndent = indent;
+    indent = '$savedIndent  ';
     f();
-    this.indent = indent;
+    indent = savedIndent;
   }
 
   void _writelnTypeWithIndent(String name, DartType? type) {
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index 8523476..b7ded86 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -635,7 +635,7 @@
 
   @override
   Token parseArgumentsOpt(Token token) {
-    var listener = this.listener as MiniAstBuilder;
+    final listener = this.listener as MiniAstBuilder;
     if (listener.inMetadata) {
       return super.parseArgumentsOpt(token);
     } else {
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol.dart b/pkg/analyzer_plugin/lib/protocol/protocol.dart
index f0d4f317..57673e6 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol.dart
@@ -48,7 +48,7 @@
   Map<String, Object> toJson() {
     var jsonObject = <String, Object>{};
     jsonObject[EVENT] = event;
-    var params = this.params;
+    final params = this.params;
     if (params != null) {
       jsonObject[PARAMS] = params;
     }
@@ -152,7 +152,7 @@
     if (params.isNotEmpty) {
       jsonObject[PARAMS] = params;
     }
-    var serverRequestTime = this.serverRequestTime;
+    final serverRequestTime = this.serverRequestTime;
     if (serverRequestTime != null) {
       jsonObject[SERVER_REQUEST_TIME] = serverRequestTime;
     }
@@ -346,12 +346,12 @@
   Map<String, Object> toJson() {
     var jsonObject = <String, Object>{};
     jsonObject[ID] = id;
-    var error = this.error;
+    final error = this.error;
     if (error != null) {
       jsonObject[ERROR] = error.toJson();
     }
     jsonObject[REQUEST_TIME] = requestTime;
-    var result = this.result;
+    final result = this.result;
     if (result != null) {
       jsonObject[RESULT] = result;
     }
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
index 3c3d9c4..f4e26a0 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
@@ -385,7 +385,7 @@
 
   /// Return `true` if the target is a double or int literal.
   bool isDoubleOrIntLiteral() {
-    var entity = this.entity;
+    final entity = this.entity;
     if (entity is Token) {
       var previousTokenType = containingNode.findPrevious(entity)?.type;
       return previousTokenType == TokenType.DOUBLE ||
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index 7148d29..394b784 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -478,7 +478,7 @@
         return node.end;
       }
 
-      var entity = this.entity;
+      final entity = this.entity;
       if (entity != null) {
         if (entity.offset <= declarationStart()) {
           optype.completionLocation = 'CompilationUnit_declaration';
@@ -708,7 +708,7 @@
   @override
   void visitFormalParameterList(FormalParameterList node) {
     optype.completionLocation = 'FormalParameterList_parameter';
-    var entity = this.entity;
+    final entity = this.entity;
     if (entity is Token) {
       var previous = node.findPrevious(entity);
       if (previous != null) {
@@ -744,7 +744,7 @@
 
   @override
   void visitForParts(ForParts node) {
-    var entity = this.entity;
+    final entity = this.entity;
     if (_isEntityPrevTokenSynthetic()) {
       // Actual: for (var v i^)
       // Parsed: for (var i; i^;)
@@ -1412,7 +1412,7 @@
   }
 
   bool _isEntityPrevTokenSynthetic() {
-    var entity = this.entity;
+    final entity = this.entity;
     if (entity is AstNode) {
       var previous = entity.findPrevious(entity.beginToken);
       if (previous?.isSynthetic ?? false) {
diff --git a/pkg/analyzer_plugin/test/integration/support/integration_tests.dart b/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
index 0fe14b2..8fd6bff 100644
--- a/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
+++ b/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
@@ -311,7 +311,7 @@
       mismatches.add(simpleDescription('is not a map'));
       return;
     }
-    var requiredFields = this.requiredFields;
+    final requiredFields = this.requiredFields;
     if (requiredFields != null) {
       requiredFields.forEach((String key, Matcher valueMatcher) {
         if (!item.containsKey(key)) {
@@ -327,7 +327,7 @@
         }
       });
     }
-    var optionalFields = this.optionalFields;
+    final optionalFields = this.optionalFields;
     item.forEach((key, value) {
       if (requiredFields != null && requiredFields.containsKey(key)) {
         // Already checked this field
diff --git a/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart b/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
index a7899a0..d7cba95 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
@@ -67,7 +67,7 @@
 
   void assertNoSuggestions({CompletionSuggestionKind? kind}) {
     if (kind == null) {
-      var suggestions = this.suggestions;
+      final suggestions = this.suggestions;
       if (suggestions != null && suggestions.isNotEmpty) {
         failedCompletion('Expected no suggestions', suggestions);
       }
diff --git a/pkg/analyzer_plugin/tool/spec/to_html.dart b/pkg/analyzer_plugin/tool/spec/to_html.dart
index b2d4d67..52fbdbe 100644
--- a/pkg/analyzer_plugin/tool/spec/to_html.dart
+++ b/pkg/analyzer_plugin/tool/spec/to_html.dart
@@ -749,7 +749,7 @@
     indent(() {
       for (var field in typeObject.fields) {
         write('"');
-        var fieldsToBold = this.fieldsToBold;
+        final fieldsToBold = this.fieldsToBold;
         if (fieldsToBold != null && fieldsToBold.contains(field.name)) {
           b(() {
             write(field.name);
diff --git a/tools/VERSION b/tools/VERSION
index 0d084e3..8450a34 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 39
+PRERELEASE 40
 PRERELEASE_PATCH 0
\ No newline at end of file