Version 2.11.0-257.0.dev

Merge commit 'e20415403a976391defe6e3c9da1fd681a30f884' into 'dev'
diff --git a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
index d8b4f69..a69c96e 100644
--- a/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
+++ b/pkg/nnbd_migration/lib/src/front_end/info_builder.dart
@@ -336,11 +336,12 @@
     var sourceOffsets = changes.keys.toList();
     sourceOffsets.sort();
     var offset = 0;
-    var lastSourceOffset = 0;
-    for (var sourceOffset in sourceOffsets) {
-      offset += sourceOffset - lastSourceOffset;
-      lastSourceOffset = sourceOffset;
-      var changesForSourceOffset = changes[sourceOffset];
+    var sourceOffset = 0;
+    for (var nextSourceOffset in sourceOffsets) {
+      var changesForSourceOffset = changes[nextSourceOffset];
+      var unchangedTextLength = nextSourceOffset - sourceOffset;
+      offset += unchangedTextLength;
+      sourceOffset += unchangedTextLength;
       for (var edit in changesForSourceOffset) {
         var length = edit.length;
         var replacement = edit.replacement;
@@ -400,7 +401,8 @@
                 'informative: $edit');
           }
         }
-        offset += replacement.length;
+        sourceOffset += length;
+        offset += length + replacement.length;
       }
     }
 
diff --git a/pkg/nnbd_migration/test/front_end/info_builder_test.dart b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
index 67a796f..cee694a 100644
--- a/pkg/nnbd_migration/test/front_end/info_builder_test.dart
+++ b/pkg/nnbd_migration/test/front_end/info_builder_test.dart
@@ -886,6 +886,26 @@
         kind: NullabilityFixKind.checkExpression);
   }
 
+  Future<void> test_method_name_change() async {
+    addPackageFile('collection', 'collection.dart', '');
+    var content = '''
+import 'package:collection/collection.dart';
+
+int f(List<int> values, int/*?*/ x)
+    => values.firstWhere((i) => (i + x).isEven,
+        orElse: () => null);
+''';
+    var migratedContent = '''
+import 'package:collection/collection.dart';
+
+int? f(List<int >  values, int/*?*/ x)
+    => values.firstWherefirstWhereOrNull((i) => (i + x!).isEven,
+        orElse: () => null);
+''';
+    await buildInfoForSingleTestFile(content,
+        migratedContent: migratedContent, removeViaComments: false);
+  }
+
   void test_nullAwareAssignment_remove() async {
     var unit = await buildInfoForSingleTestFile('''
 int f(int/*!*/ x, int y) => x ??= y;
diff --git a/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart b/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart
index 3b31e90..70cf296 100644
--- a/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart
+++ b/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart
@@ -207,7 +207,8 @@
         permissive: false,
         instrumentation: instrumentationListener,
         removeViaComments: removeViaComments,
-        warnOnWeakCode: warnOnWeakCode);
+        warnOnWeakCode: warnOnWeakCode,
+        transformWhereOrNull: true);
     Future<void> _forEachPath(
         void Function(ResolvedUnitResult) callback) async {
       for (var testPath in testPaths) {
diff --git a/tools/VERSION b/tools/VERSION
index 7845415..c0f5c5a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 11
 PATCH 0
-PRERELEASE 256
+PRERELEASE 257
 PRERELEASE_PATCH 0
\ No newline at end of file