Version 2.13.0-226.0.dev

Merge commit '5b6d517fe8b59c374bd0dd3be85797961b6948c7' into 'dev'
diff --git a/pkg/analysis_server/lib/src/services/flutter/property.dart b/pkg/analysis_server/lib/src/services/flutter/property.dart
index d7dce19..11af175 100644
--- a/pkg/analysis_server/lib/src/services/flutter/property.dart
+++ b/pkg/analysis_server/lib/src/services/flutter/property.dart
@@ -2,8 +2,6 @@
 // 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.
 
-// @dart = 2.9
-
 import 'package:analysis_server/src/protocol_server.dart' as protocol;
 import 'package:analysis_server/src/services/flutter/class_description.dart';
 import 'package:analysis_server/src/utilities/flutter.dart';
@@ -18,12 +16,12 @@
 import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
 import 'package:analyzer_plugin/utilities/range_factory.dart';
 
-String getFieldDocumentation(FieldElement field) {
+String? getFieldDocumentation(FieldElement field) {
   var rawComment = field.documentationComment;
   return getDartDocPlainText(rawComment);
 }
 
-String getParameterDocumentation(ParameterElement parameter) {
+String? getParameterDocumentation(ParameterElement? parameter) {
   if (parameter is FieldFormalParameterElement) {
     var rawComment = parameter.field?.documentationComment;
     return getDartDocPlainText(rawComment);
@@ -34,42 +32,42 @@
 class PropertyDescription {
   static int _nextPropertyId = 0;
 
-  final PropertyDescription parent;
+  final PropertyDescription? parent;
 
   /// The resolved unit, where the property value is.
   final ResolvedUnitResult resolvedUnit;
 
   /// The instance of [Flutter] support for the [resolvedUnit].
-  final Flutter flutter;
+  final Flutter? flutter;
 
   /// If the object that has this property is not materialized yet, so the
   /// [instanceCreation] is `null`, the description of the object to
   /// materialize.
-  final ClassDescription classDescription;
+  final ClassDescription? classDescription;
 
   /// The instance creation of the object that has this property. Or `null`
   /// if the object is not materialized yet, in this case [classDescription]
   /// is set.
-  final InstanceCreationExpression instanceCreation;
+  final InstanceCreationExpression? instanceCreation;
 
   /// Information about the `Container` property, which is not based on an
   /// actual [instanceCreation] of the `Container` widget, i.e. is not
   /// materialized.
-  final VirtualContainerProperty virtualContainer;
+  final VirtualContainerProperty? virtualContainer;
 
   /// If the property is set, the full argument expression, might be a
   /// [NamedExpression].
-  final Expression argumentExpression;
+  final Expression? argumentExpression;
 
   /// If the property is set, the value part of the argument expression,
   /// the same as [argumentExpression] if a positional argument, or the
   /// expression part of the [NamedExpression].
-  final Expression valueExpression;
+  final Expression? valueExpression;
 
   /// The parameter element in the object constructor that is actually
   /// invoked by [instanceCreation], or will be invoked when
   /// [classDescription] is materialized.
-  final ParameterElement parameterElement;
+  final ParameterElement? parameterElement;
 
   /// Optional nested properties.
   final List<PropertyDescription> children = [];
@@ -78,18 +76,18 @@
 
   /// If this is a `EdgeInsets` typed property, the instance of helper.
   /// Otherwise `null`.
-  _EdgeInsetsProperty _edgeInsetsProperty;
+  _EdgeInsetsProperty? _edgeInsetsProperty;
 
   PropertyDescription({
     this.parent,
-    this.resolvedUnit,
+    required this.resolvedUnit,
     this.flutter,
     this.classDescription,
     this.instanceCreation,
     this.argumentExpression,
     this.valueExpression,
     this.parameterElement,
-    this.protocolProperty,
+    required this.protocolProperty,
     this.virtualContainer,
   });
 
@@ -97,19 +95,20 @@
 
   /// This property has type `EdgeInsets`, add its nested properties.
   void addEdgeInsetsNestedProperties(ClassElement classEdgeInsets) {
-    _edgeInsetsProperty = _EdgeInsetsProperty(classEdgeInsets, this);
-    _edgeInsetsProperty.addNested();
+    _edgeInsetsProperty = _EdgeInsetsProperty(classEdgeInsets, this)
+      ..addNested();
   }
 
-  Future<protocol.SourceChange> changeValue(
+  Future<protocol.SourceChange?> changeValue(
       protocol.FlutterWidgetPropertyValue value) async {
-    if (parent?._edgeInsetsProperty != null) {
-      return parent._edgeInsetsProperty.changeValue(this, value);
+    var edgeInsetsProperty = parent?._edgeInsetsProperty;
+    if (edgeInsetsProperty != null) {
+      return edgeInsetsProperty.changeValue(this, value);
     }
 
     var builder = ChangeBuilder(session: resolvedUnit.session);
 
-    ClassElement enumClassElement;
+    ClassElement? enumClassElement;
     var enumValue = value.enumValue;
     if (enumValue != null) {
       var helper = AnalysisSessionHelper(resolvedUnit.session);
@@ -119,11 +118,12 @@
       );
     }
 
-    await builder.addDartFileEdit(resolvedUnit.path, (builder) {
+    await builder.addDartFileEdit(resolvedUnit.path!, (builder) {
       _changeCode(builder, (builder) {
-        if (value.expression != null) {
-          builder.write(value.expression);
-        } else if (enumClassElement != null) {
+        var expression = value.expression;
+        if (expression != null) {
+          builder.write(expression);
+        } else if (enumClassElement != null && enumValue != null) {
           builder.writeReference(enumClassElement);
           builder.write('.');
           builder.write(enumValue.name);
@@ -141,7 +141,9 @@
   Future<protocol.SourceChange> removeValue() async {
     var builder = ChangeBuilder(session: resolvedUnit.session);
 
-    if (argumentExpression != null) {
+    final argumentExpression = this.argumentExpression;
+    final instanceCreation = this.instanceCreation;
+    if (argumentExpression != null && instanceCreation != null) {
       int endOffset;
       var argumentList = instanceCreation.argumentList;
       var arguments = argumentList.arguments;
@@ -153,7 +155,7 @@
       }
 
       var beginOffset = argumentExpression.offset;
-      await builder.addDartFileEdit(resolvedUnit.path, (builder) {
+      await builder.addDartFileEdit(resolvedUnit.path!, (builder) {
         builder.addDeletion(
           SourceRange(beginOffset, endOffset - beginOffset),
         );
@@ -177,10 +179,16 @@
     DartFileEditBuilder builder,
     void Function(DartEditBuilder builder) buildCode,
   ) {
+    final valueExpression = this.valueExpression;
     if (valueExpression != null) {
       builder.addReplacement(range.node(valueExpression), buildCode);
     } else {
+      final parameterElement = this.parameterElement;
+      if (parameterElement == null) {
+        return;
+      }
       var parameterName = parameterElement.name;
+      final instanceCreation = this.instanceCreation;
       if (instanceCreation != null) {
         var argumentList = instanceCreation.argumentList;
 
@@ -203,7 +211,7 @@
           var rightParenthesis = argumentList.rightParenthesis;
           insertOffset = rightParenthesis.offset;
           var previous = rightParenthesis.previous;
-          if (previous.type != TokenType.COMMA &&
+          if (previous?.type != TokenType.COMMA &&
               previous != argumentList.leftParenthesis) {
             needsLeadingComma = true;
           }
@@ -221,9 +229,17 @@
           builder.write(', ');
         });
       } else {
+        final parent = this.parent;
+        if (parent == null) {
+          return;
+        }
         if (parent.virtualContainer != null) {
           parent._changeCodeVirtualContainer(builder, parameterName, buildCode);
         } else {
+          final classDescription = this.classDescription;
+          if (classDescription == null) {
+            return;
+          }
           parent._changeCode(builder, (builder) {
             builder.writeReference(classDescription.element);
             // TODO(scheglov) constructor name
@@ -244,12 +260,17 @@
     String parameterName,
     void Function(DartEditBuilder builder) writeArgumentValue,
   ) {
-    if (virtualContainer._parentCreation != null) {
+    final virtualContainer = this.virtualContainer;
+    if (virtualContainer == null) {
+      return;
+    }
+    var parentCreation = virtualContainer._parentCreation;
+    if (parentCreation != null) {
       // `new Padding(...)` -> `Container(...)`
       builder.addReplacement(
         range.startEnd(
-          virtualContainer._parentCreation,
-          virtualContainer._parentCreation.constructorName,
+          parentCreation,
+          parentCreation.constructorName,
         ),
         (builder) {
           builder.writeReference(virtualContainer.containerElement);
@@ -257,6 +278,9 @@
       );
 
       var existingArgument = virtualContainer._parentArgumentToMove;
+      if (existingArgument == null) {
+        return;
+      }
       var existingName = existingArgument.name.label.name;
 
       int parameterOffset;
@@ -312,11 +336,12 @@
   }
 
   FunctionBody _enclosingFunctionBody() {
+    final parent = this.parent;
     if (parent != null) {
       return parent._enclosingFunctionBody();
     }
     var anchorExpr = virtualContainer?.widgetCreation ?? instanceCreation;
-    return anchorExpr.thisOrAncestorOfType<FunctionBody>();
+    return anchorExpr!.thisOrAncestorOfType<FunctionBody>()!;
   }
 
   void _formatEnclosingFunctionBody(DartFileEditBuilder builder) {
@@ -341,8 +366,8 @@
       return '${value.boolValue}';
     }
 
-    if (value.doubleValue != null) {
-      var code = value.doubleValue.toStringAsFixed(1);
+    var code = value.doubleValue?.toStringAsFixed(1);
+    if (code != null) {
       if (code.endsWith('.0')) {
         code = code.substring(0, code.length - 2);
       }
@@ -353,8 +378,8 @@
       return '${value.intValue}';
     }
 
-    if (value.stringValue != null) {
-      var code = value.stringValue;
+    code = value.stringValue;
+    if (code != null) {
       if (code.contains("'")) {
         code = code.replaceAll("'", r"\'");
       }
@@ -381,11 +406,11 @@
   /// replaced with full `Container` when `Container` is materialized.
   ///
   /// Might be `null`, if no existing replacable wrapped.
-  InstanceCreationExpression _parentCreation;
+  InstanceCreationExpression? _parentCreation;
 
   /// The argument from the [_parentCreation] that should be moved into
   /// the new `Container` creation during its materialization.
-  NamedExpression _parentArgumentToMove;
+  NamedExpression? _parentArgumentToMove;
 
   VirtualContainerProperty(
     this.containerElement,
@@ -411,44 +436,48 @@
   final PropertyDescription property;
 
   /// The constructor `EdgeInsets.only`.
-  ConstructorElement onlyConstructor;
+  ConstructorElement? onlyConstructor;
 
-  double leftValue;
-  double topValue;
-  double rightValue;
-  double bottomValue;
+  double? leftValue;
+  double? topValue;
+  double? rightValue;
+  double? bottomValue;
 
-  PropertyDescription leftProperty;
-  PropertyDescription topProperty;
-  PropertyDescription rightProperty;
-  PropertyDescription bottomProperty;
+  PropertyDescription? leftProperty;
+  PropertyDescription? topProperty;
+  PropertyDescription? rightProperty;
+  PropertyDescription? bottomProperty;
 
   _EdgeInsetsProperty(this.classEdgeInsets, this.property);
 
-  Flutter get flutter => property.flutter;
+  Flutter? get flutter => property.flutter;
 
   void addNested() {
-    Expression leftExpression;
-    Expression topExpression;
-    Expression rightExpression;
-    Expression bottomExpression;
+    Expression? leftExpression;
+    Expression? topExpression;
+    Expression? rightExpression;
+    Expression? bottomExpression;
     var propertyExpression = property.valueExpression;
     if (propertyExpression is InstanceCreationExpression) {
+      final flutter = this.flutter;
       var constructor = propertyExpression.constructorName.staticElement;
-      if (constructor?.enclosingElement == classEdgeInsets) {
+      if (flutter != null &&
+          constructor != null &&
+          constructor.enclosingElement == classEdgeInsets) {
         var arguments = propertyExpression.argumentList.arguments;
-        if (constructor.name == 'all') {
+        var constructorName = constructor.name;
+        if (constructorName == 'all') {
           var expression = flutter.argumentByIndex(arguments, 0);
           leftExpression = expression;
           topExpression = expression;
           rightExpression = expression;
           bottomExpression = expression;
-        } else if (constructor.name == 'fromLTRB') {
+        } else if (constructorName == 'fromLTRB') {
           leftExpression = flutter.argumentByIndex(arguments, 0);
           topExpression = flutter.argumentByIndex(arguments, 1);
           rightExpression = flutter.argumentByIndex(arguments, 2);
           bottomExpression = flutter.argumentByIndex(arguments, 3);
-        } else if (constructor.name == 'only') {
+        } else if (constructorName == 'only') {
           var leftArgument = flutter.argumentByName(arguments, 'left');
           var topArgument = flutter.argumentByName(arguments, 'top');
           var rightArgument = flutter.argumentByName(arguments, 'right');
@@ -457,7 +486,7 @@
           topExpression = topArgument?.expression;
           rightExpression = rightArgument?.expression;
           bottomExpression = bottomArgument?.expression;
-        } else if (constructor.name == 'symmetric') {
+        } else if (constructorName == 'symmetric') {
           var hArgument = flutter.argumentByName(arguments, 'horizontal');
           var vArgument = flutter.argumentByName(arguments, 'vertical');
           leftExpression = hArgument?.expression;
@@ -499,7 +528,7 @@
 
   /// The value of the [nested] property is changed, make changes to the
   /// value of the [property] is a whole, to generate nice code.
-  Future<protocol.SourceChange> changeValue(
+  Future<protocol.SourceChange?> changeValue(
     PropertyDescription nested,
     protocol.FlutterWidgetPropertyValue value,
   ) async {
@@ -530,7 +559,7 @@
 
     var builder = ChangeBuilder(session: property.resolvedUnit.session);
 
-    await builder.addDartFileEdit(property.resolvedUnit.path, (builder) {
+    await builder.addDartFileEdit(property.resolvedUnit.path!, (builder) {
       property._changeCode(builder, (builder) {
         if (leftCode == rightCode && topCode == bottomCode) {
           builder.writeReference(classEdgeInsets);
@@ -598,11 +627,11 @@
   }
 
   PropertyDescription _addNestedProperty({
-    String name,
-    Expression expression,
-    double value,
+    required String name,
+    required Expression? expression,
+    required double? value,
   }) {
-    var parameter = onlyConstructor.parameters.singleWhere(
+    var parameter = onlyConstructor?.parameters.singleWhere(
       (p) => p.name == name,
     );
     var parameterDocumentation = getParameterDocumentation(parameter);
@@ -628,17 +657,16 @@
     return nested;
   }
 
-  String _expressionCode(Expression expression) {
+  String? _expressionCode(Expression? expression) {
     if (expression != null) {
-      var content = property.resolvedUnit.content;
+      var content = property.resolvedUnit.content!;
       return content.substring(expression.offset, expression.end);
     }
     return null;
   }
 
-  static protocol.FlutterWidgetPropertyValue _protocolValueDouble(
-    double value,
-  ) {
+  static protocol.FlutterWidgetPropertyValue? _protocolValueDouble(
+      double? value) {
     if (value != null) {
       return protocol.FlutterWidgetPropertyValue(
         doubleValue: value,
@@ -647,7 +675,7 @@
     return null;
   }
 
-  static String _toDoubleCode(double value) {
+  static String _toDoubleCode(double? value) {
     if (value == null) {
       return '0';
     }
@@ -659,12 +687,11 @@
     return code;
   }
 
-  static double _valueDouble(Expression expression) {
+  static double? _valueDouble(Expression? expression) {
     if (expression is DoubleLiteral) {
       return expression.value;
-    }
-    if (expression is IntegerLiteral) {
-      return expression.value.toDouble();
+    } else if (expression is IntegerLiteral) {
+      return expression.value?.toDouble();
     }
     return null;
   }
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
index d0cff3d..c92a7b2 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
@@ -67,7 +67,7 @@
     with WithNonFunctionTypeAliasesMixin {
   static const String _UNCHECKED = '__UNCHECKED__';
   late String testFile;
-  int? completionOffset;
+  int _completionOffset = -1;
   late int replacementOffset;
   late int replacementLength;
 
@@ -80,6 +80,14 @@
 
   late List<CompletionSuggestion> suggestions;
 
+  /// Return the offset at which completion was requested.
+  int get completionOffset {
+    if (_completionOffset < 0) {
+      fail('Must call addTestSource exactly once');
+    }
+    return _completionOffset;
+  }
+
   /// If `true` and `null` is specified as the suggestion's expected returnType
   /// then the actual suggestion is expected to have a `dynamic` returnType.
   /// Newer tests return `false` so that they can distinguish between
@@ -92,13 +100,14 @@
   bool get suggestConstructorsWithoutNew => true;
 
   void addTestSource(String content) {
-    expect(completionOffset, isNull, reason: 'Call addTestUnit exactly once');
-    completionOffset = content.indexOf('^');
-    expect(completionOffset, greaterThanOrEqualTo(0), reason: 'missing ^');
-    var nextOffset = content.indexOf('^', completionOffset! + 1);
+    expect(_completionOffset, lessThan(0),
+        reason: 'Must call addTestSource exactly once');
+    _completionOffset = content.indexOf('^');
+    expect(_completionOffset, greaterThanOrEqualTo(0), reason: 'missing ^');
+    var nextOffset = content.indexOf('^', _completionOffset + 1);
     expect(nextOffset, equals(-1), reason: 'too many ^');
-    content = content.substring(0, completionOffset) +
-        content.substring(completionOffset! + 1);
+    content = content.substring(0, _completionOffset) +
+        content.substring(_completionOffset + 1);
     addSource(testFile, content);
   }
 
@@ -529,7 +538,7 @@
   Future computeSuggestions({int times = 200}) async {
     result = await session.getResolvedUnit(testFile);
     var baseRequest = CompletionRequestImpl(
-        result, completionOffset!, CompletionPerformance());
+        result, completionOffset, CompletionPerformance());
 
     return await baseRequest.performance.runRequestOperation(
       (performance) async {
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
index 5a236f2..0f6f5e7 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
@@ -50,7 +50,7 @@
     // Build the request
     var baseRequest = CompletionRequestImpl(
         await session.getResolvedUnit(testFile),
-        completionOffset!,
+        completionOffset,
         CompletionPerformance());
     await baseRequest.performance.runRequestOperation((performance) async {
       var requestCompleter = Completer<DartCompletionRequest>();
diff --git a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
index fcc96d2..d28095f 100644
--- a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
@@ -84,7 +84,7 @@
           m(X x) {} I _n(X x) {}}
         class X{}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestField('b', null);
     assertSuggestField('_c', 'X');
diff --git a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
index f56d0b2..cf8d182 100644
--- a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
@@ -473,7 +473,7 @@
           int^ b = 1;}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('A');
     assertSuggestClass('int');
@@ -497,7 +497,7 @@
           b = 1;}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertSuggestClass('int');
@@ -1044,7 +1044,7 @@
         class X {a() {var f; {var x;} D^ var r;} void b() { }}
         class Z { }''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('X');
@@ -1186,7 +1186,7 @@
         class Z { }''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('partT8');
@@ -1326,7 +1326,7 @@
         main() {A a; a^..b}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('b');
     assertNotSuggested('_c');
@@ -1468,7 +1468,7 @@
         A Sew;''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('_B');
@@ -1745,7 +1745,7 @@
         main() {new String.fr^omCharCodes([]);}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     // Suggested by NamedConstructorContributor
     assertNotSuggested('fromCharCodes');
@@ -2183,7 +2183,7 @@
     addTestSource('main(args) {for (S^ foo in args) {}}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('args');
     assertNotSuggested('foo');
@@ -2224,7 +2224,7 @@
     addTestSource('main() {for (int index = 0; i^)}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -2264,7 +2264,7 @@
     addTestSource('main() {for (int index = 0; index < 10; i^)}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -2276,7 +2276,7 @@
         main() {for (int index = 0; index < 10; ++i^)}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
     assertNotSuggested('main');
@@ -2887,7 +2887,7 @@
     addTestSource('class A {foo(){new C^}}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Not imported, so not suggested
     assertNotSuggested('Completer');
@@ -3076,7 +3076,7 @@
         main(){var a; if (a is Obj^)}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('a');
     assertNotSuggested('main');
@@ -3152,7 +3152,7 @@
         main() {new^ X.c();}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('c');
     assertNotSuggested('_d');
@@ -3252,7 +3252,7 @@
         foo = {T^''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Simulate unresolved imported library,
     // in which case suggestions will have null return types (unresolved)
@@ -3279,7 +3279,7 @@
         foo = {7:T^};''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestTopLevelVar('T1', 'int');
     assertNotSuggested('T2');
@@ -4107,7 +4107,7 @@
         class X {foo(){A^.bar}}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('A');
     if (suggestConstructorsWithoutNew) {
@@ -4234,7 +4234,7 @@
     addTestSource('class A {a() {"hello".to^String().length}}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 8);
     assertNotSuggested('length');
     assertNotSuggested('A');
@@ -4428,7 +4428,7 @@
         class X{}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Contributed by FieldFormalConstructorContributor
     assertNotSuggested('b');
@@ -4698,7 +4698,7 @@
         main() { C<C^> c; }''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('C1');
     assertNotSuggested('C2');
diff --git a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
index 64d0df1..ae303ec 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
@@ -234,7 +234,7 @@
 class _B {}
 A Sew;''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLibraryPrefixes(['Soo']);
   }
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index 16d784d..7cdb905 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -680,7 +680,7 @@
 }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertSuggestClass('A');
     assertNotSuggested('int');
@@ -705,7 +705,7 @@
 }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('A');
     assertNotSuggested('int');
@@ -1242,7 +1242,7 @@
 class Z { }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertSuggestClass('X');
@@ -1485,7 +1485,7 @@
 class Z { }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('partT8');
@@ -1599,7 +1599,7 @@
 main() {A a; a^..b}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('b');
     assertNotSuggested('_c');
@@ -1756,7 +1756,7 @@
 A Sew;''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('A');
     assertSuggestClass('_B');
@@ -2118,7 +2118,7 @@
         main() {new String.fr^omCharCodes([]);}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     // Suggested by NamedConstructorContributor
     assertNotSuggested('fromCharCodes');
@@ -2863,7 +2863,7 @@
     addTestSource('main() {List<int> values; for (int index in i^)}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('values', 'List<int>');
     assertNotSuggested('index');
@@ -2874,7 +2874,7 @@
     addTestSource('main() {List<int> values; for (int index in (i^))}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('values', 'List<int>');
     assertNotSuggested('index');
@@ -2943,7 +2943,7 @@
     addTestSource('main(args) {for (S^ foo in args) {}}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('args');
     assertNotSuggested('foo');
@@ -2990,7 +2990,7 @@
     addTestSource('var x = [for (int index = 0; i^)];');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3009,7 +3009,7 @@
     addTestSource('var x = [for (int index = 0; index < 10; i^)];');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3020,7 +3020,7 @@
 ''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3059,7 +3059,7 @@
     addTestSource('main() {for (int index = 0; i^)}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3081,7 +3081,7 @@
     addTestSource('main() {for (int index = 0; index < 10; i^)}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3093,7 +3093,7 @@
 main() {for (int index = 0; index < 10; ++i^)}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
     assertSuggestFunction('main', null);
@@ -3487,7 +3487,7 @@
 ''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestField('b', null);
     assertSuggestField('_c', 'X');
@@ -3825,7 +3825,7 @@
     addTestSource('class C {foo(){new F^}}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('Future');
     assertNotSuggested('Foo');
@@ -4050,7 +4050,7 @@
 main(){var a; if (a is Obj^)}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('a');
     assertNotSuggested('main');
@@ -4072,7 +4072,7 @@
 main() {new^ X.c();}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('c');
     assertNotSuggested('_d');
@@ -4256,7 +4256,7 @@
 foo = {T^''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T1');
     assertSuggestTopLevelVar('T2', 'int');
@@ -4278,7 +4278,7 @@
 foo = {7:T^};''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T1');
     assertSuggestTopLevelVar('T2', 'int');
@@ -4690,7 +4690,7 @@
 ''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     var methodA = assertSuggestMethod('_a', 'A', 'Z').element;
     if (methodA != null) {
@@ -5485,7 +5485,7 @@
 class X {foo(){A^.bar}}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertSuggestClass('X');
@@ -5630,7 +5630,7 @@
     addTestSource('class A {a() {"hello".to^String().length}}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 8);
     assertNotSuggested('length');
     assertNotSuggested('A');
@@ -5939,7 +5939,7 @@
 class X{}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Contributed by FieldFormalContributor
     assertNotSuggested('b');
@@ -6145,7 +6145,7 @@
 main() { C<C^> c; }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('C1');
     assertSuggestClass('C2');
diff --git a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
index 9fcdd82..1ff2987 100644
--- a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
@@ -117,7 +117,7 @@
     addTestSource('''
         main() {new String.fr^omCharCodes([]);}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     assertSuggestNamedConstructor('fromCharCodes', 'String');
     assertNotSuggested('isEmpty');
diff --git a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
index 0cc4eba..8d36d27 100644
--- a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
@@ -418,7 +418,7 @@
           int a;
           int^ b = 1;}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('A');
     assertNotSuggested('int');
@@ -441,7 +441,7 @@
           i^
           b = 1;}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('int');
@@ -924,7 +924,7 @@
         class Z { }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('X');
@@ -1065,7 +1065,7 @@
           void b() { }}
         class Z { }''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('partT8');
     assertNotSuggested('partBoo');
@@ -1185,7 +1185,7 @@
         class X{}
         main() {A a; a^..b}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('b');
     assertNotSuggested('_c');
@@ -1312,7 +1312,7 @@
         class _B {}
         A Sew;''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('_B');
@@ -1568,7 +1568,7 @@
     addTestSource('''
         main() {new String.fr^omCharCodes([]);}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     // Suggested by NamedConstructorContributor
     assertNotSuggested('fromCharCodes');
@@ -1839,7 +1839,7 @@
     // DeclaredIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (S^ foo in args) {}}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('args');
     assertNotSuggested('foo');
@@ -1877,7 +1877,7 @@
     // SimpleIdentifier  ForStatement
     addTestSource('main() {for (int index = 0; i^)}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -1897,7 +1897,7 @@
     // SimpleIdentifier  ForStatement
     addTestSource('main() {for (int index = 0; index < 10; i^)}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -1908,7 +1908,7 @@
         void bar() { }
         main() {for (int index = 0; index < 10; ++i^)}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
     assertNotSuggested('main');
@@ -2246,7 +2246,7 @@
     addSource('/testAB.dart', 'class Foo { }');
     addTestSource('class C {foo(){new F^}}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('Future');
     assertNotSuggested('Foo');
@@ -2450,7 +2450,7 @@
         class A {int x; int y() => 0;}
         main(){var a; if (a is Obj^)}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('a');
     assertNotSuggested('main');
@@ -2478,7 +2478,7 @@
         var m;
         main() {new^ X.c();}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('c');
     assertNotSuggested('_d');
@@ -2625,7 +2625,7 @@
         class C2 { }
         foo = {T^''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T2');
   }
@@ -2645,7 +2645,7 @@
         class C2 { }
         foo = {7:T^};''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T2');
   }
@@ -3551,7 +3551,7 @@
         import "a.dart";
         class X {foo(){A^.bar}}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('X');
@@ -3669,7 +3669,7 @@
     // SimpleIdentifier  MethodInvocation  PropertyAccess  ExpressionStatement
     addTestSource('class A {a() {"hello".to^String().length}}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 8);
     assertSuggestGetter('length', 'int');
     assertNotSuggested('A');
@@ -4032,7 +4032,7 @@
           m(X x) {} I _n(X x) {}}
         class X{}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Contributed by FieldFormalConstructorContributor
     assertNotSuggested('b');
@@ -4180,7 +4180,7 @@
         class C<E> {}
         main() { C<C^> c; }''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('C1');
     assertNotSuggested('C2');
diff --git a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
index 513eb6d..e19ca34 100644
--- a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
@@ -118,7 +118,7 @@
   Future<void> test_import_dart() async {
     addTestSource('import "d^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('dart:core', csKind: CompletionSuggestionKind.IMPORT);
@@ -130,7 +130,7 @@
   Future<void> test_import_dart2() async {
     addTestSource('import "dart:async"; import "d^"');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('dart:core', csKind: CompletionSuggestionKind.IMPORT);
@@ -165,7 +165,7 @@
 
     addTestSource('import "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -183,7 +183,7 @@
 
     addTestSource('import "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -201,7 +201,7 @@
 
     addTestSource('import "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -222,7 +222,7 @@
 
     addTestSource('import "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -241,7 +241,7 @@
 
     addTestSource('import "../b^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -285,7 +285,7 @@
 
     addTestSource('import "p^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:foo/', csKind: CompletionSuggestionKind.IMPORT);
@@ -353,7 +353,7 @@
     await computeSuggestions();
     assertSuggest('package:foo/baz/too.dart',
         csKind: CompletionSuggestionKind.IMPORT);
-    expect(replacementOffset, completionOffset! - 16);
+    expect(replacementOffset, completionOffset - 16);
     expect(replacementLength, 5 + 16);
   }
 
@@ -366,7 +366,7 @@
 
     addTestSource('import "p^" class');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:bar/', csKind: CompletionSuggestionKind.IMPORT);
@@ -388,7 +388,7 @@
 
     addTestSource('import r"p^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:foo/', csKind: CompletionSuggestionKind.IMPORT);
@@ -447,7 +447,7 @@
   Future<void> test_import_without_closing_quote_eof3() async {
     addTestSource('import "d^');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
@@ -456,7 +456,7 @@
   Future<void> test_import_without_closing_quote_eof4() async {
     addTestSource('import "d^"');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
@@ -500,7 +500,7 @@
 
     addTestSource('library x; part "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -518,7 +518,7 @@
 
     addTestSource('library x; part "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -536,7 +536,7 @@
 
     addTestSource('library x; part "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -585,7 +585,7 @@
 
     addTestSource('import "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -603,7 +603,7 @@
 
     addTestSource('import "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -621,7 +621,7 @@
 
     addTestSource('import "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -639,7 +639,7 @@
 
     addTestSource('import "../b^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -675,7 +675,7 @@
 
     addTestSource('library x; part "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -693,7 +693,7 @@
 
     addTestSource('library x; part "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -711,7 +711,7 @@
 
     addTestSource('library x; part "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
diff --git a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
index 09ab271..3b75a53 100644
--- a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
@@ -213,7 +213,7 @@
     f() { for(AbstractCrazyNonsenseClassName a^) {} }
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -234,7 +234,7 @@
     f() { for(prefix.AbstractCrazyNonsenseClassName ^) {} }
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -254,7 +254,7 @@
     f() { for(prefix.AbstractCrazyNonsenseClassName a^) {} }
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -363,7 +363,7 @@
     AbstractCrazyNonsenseClassName abs^
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -383,7 +383,7 @@
     AbstractCrazyNonsenseClassName abs^
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
diff --git a/tools/VERSION b/tools/VERSION
index 6b2e44c..8c84bfb 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 225
+PRERELEASE 226
 PRERELEASE_PATCH 0
\ No newline at end of file