Version 2.12.0-263.0.dev

Merge commit 'cc1cc0bb578e7372a40f3fd515fa37427f66e5ec' into 'dev'
diff --git a/pkg/analysis_server/test/search/element_references_test.dart b/pkg/analysis_server/test/search/element_references_test.dart
index 947a966..5b7d558 100644
--- a/pkg/analysis_server/test/search/element_references_test.dart
+++ b/pkg/analysis_server/test/search/element_references_test.dart
@@ -7,11 +7,13 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
+import '../analysis_abstract.dart';
 import 'abstract_search_domain.dart';
 
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ElementReferencesTest);
+    defineReflectiveTests(ElementReferencesWithNonFunctionTypeAliasesTest);
   });
 }
 
@@ -19,6 +21,8 @@
 class ElementReferencesTest extends AbstractSearchDomainTest {
   Element searchElement;
 
+  bool get hasNonFunctionTypeAliases => false;
+
   void assertHasRef(SearchResultKind kind, String search, bool isPotential) {
     assertHasResult(kind, search);
     expect(result.isPotential, isPotential);
@@ -863,26 +867,36 @@
     assertHasResult(SearchResultKind.REFERENCE, 'int b');
   }
 
-  Future<void> test_typeReference_functionType() async {
-    addTestFile('''
-typedef F();
-main(F f) {
-}
-''');
-    await findElementReferences('F()', false);
-    expect(searchElement.kind, ElementKind.FUNCTION_TYPE_ALIAS);
-    expect(results, hasLength(1));
-    assertHasResult(SearchResultKind.REFERENCE, 'F f');
-  }
-
-  Future<void> test_typeReference_genericTypeAlias_function() async {
+  Future<void> test_typeReference_typeAlias_functionType() async {
     addTestFile('''
 typedef F = Function();
 main(F f) {
 }
 ''');
     await findElementReferences('F =', false);
-    expect(searchElement.kind, ElementKind.FUNCTION_TYPE_ALIAS);
+    expect(
+      searchElement.kind,
+      hasNonFunctionTypeAliases
+          ? ElementKind.TYPE_ALIAS
+          : ElementKind.FUNCTION_TYPE_ALIAS,
+    );
+    expect(results, hasLength(1));
+    assertHasResult(SearchResultKind.REFERENCE, 'F f');
+  }
+
+  Future<void> test_typeReference_typeAlias_legacy() async {
+    addTestFile('''
+typedef F();
+main(F f) {
+}
+''');
+    await findElementReferences('F()', false);
+    expect(
+      searchElement.kind,
+      hasNonFunctionTypeAliases
+          ? ElementKind.TYPE_ALIAS
+          : ElementKind.FUNCTION_TYPE_ALIAS,
+    );
     expect(results, hasLength(1));
     assertHasResult(SearchResultKind.REFERENCE, 'F f');
   }
@@ -901,3 +915,28 @@
     assertHasResult(SearchResultKind.REFERENCE, 'T m()');
   }
 }
+
+@reflectiveTest
+class ElementReferencesWithNonFunctionTypeAliasesTest
+    extends ElementReferencesTest with WithNonFunctionTypeAliasesMixin {
+  @override
+  bool get hasNonFunctionTypeAliases => true;
+
+  Future<void> test_typeReference_typeAlias_interfaceType() async {
+    addTestFile('''
+typedef A<T> = Map<int, T>;
+
+void(A<String> a) {}
+''');
+    // Can find `A`.
+    await findElementReferences('A<T> =', false);
+    expect(searchElement.kind, ElementKind.TYPE_ALIAS);
+    expect(results, hasLength(1));
+    assertHasResult(SearchResultKind.REFERENCE, 'A<String>');
+
+    // Can find in `A`.
+    await findElementReferences('int,', false);
+    expect(searchElement.kind, ElementKind.CLASS);
+    assertHasResult(SearchResultKind.REFERENCE, 'int,');
+  }
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart b/pkg/front_end/testcases/nnbd/duplicates_instance.dart
new file mode 100644
index 0000000..274496d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart
@@ -0,0 +1,144 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+var result;
+
+class Class {
+  int instanceMethod() => 1;
+  int instanceMethod() => 2;
+
+  int get instanceGetter => 1;
+  int get instanceGetter => 2;
+
+  void set instanceSetter(value) {
+    result = 1;
+  }
+
+  void set instanceSetter(value) {
+    result = 2;
+  }
+
+  int instanceField = 1;
+  int instanceField = 2;
+
+  int instanceFieldAndSetter1 = 1;
+  void set instanceFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  void set instanceFieldAndSetter2(int value) {
+    result = 2;
+  }
+
+  int instanceFieldAndSetter2 = 1;
+
+  late final int instanceLateFinalFieldAndSetter1;
+  void set instanceLateFinalFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  void set instanceLateFinalFieldAndSetter2(int value) {
+    result = 2;
+  }
+
+  late final int instanceLateFinalFieldAndSetter2;
+
+  final int instanceDuplicateFieldAndSetter = 1;
+  final int instanceDuplicateFieldAndSetter = 2;
+  void set instanceDuplicateFieldAndSetter(int value) {
+    result = 3;
+  }
+
+  final int instanceFieldAndDuplicateSetter = 1;
+  void set instanceFieldAndDuplicateSetter(int value) {
+    result = 2;
+  }
+
+  void set instanceFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  final int instanceDuplicateFieldAndDuplicateSetter = 1;
+  final int instanceDuplicateFieldAndDuplicateSetter = 2;
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+    result = 4;
+  }
+
+  int instanceMethodAndSetter1() => 1;
+  void set instanceMethodAndSetter1(int value) {
+    result = 2;
+  }
+
+  void set instanceMethodAndSetter2(int value) {
+    result = 2;
+  }
+
+  int instanceMethodAndSetter2() => 1;
+}
+
+test() {
+  Class c = new Class();
+  c.instanceMethod();
+  (c.instanceMethod)();
+  c.instanceGetter;
+  c.instanceSetter = 0;
+  c.instanceField;
+  c.instanceField = 0;
+  c.instanceDuplicateFieldAndSetter;
+  c.instanceDuplicateFieldAndSetter = 0;
+  c.instanceFieldAndDuplicateSetter;
+  c.instanceFieldAndDuplicateSetter = 0;
+  c.instanceDuplicateFieldAndDuplicateSetter;
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+}
+
+main() {
+  Class c = new Class();
+  c.instanceFieldAndSetter1 = 0;
+  expect(2, result);
+  expect(1, c.instanceFieldAndSetter1);
+
+  result = null;
+  c.instanceFieldAndSetter2 = 0;
+  expect(null, result);
+  expect(0, c.instanceFieldAndSetter2);
+
+  result = null;
+  c.instanceLateFinalFieldAndSetter1 = 0;
+  expect(2, result);
+  throws(() => c.instanceLateFinalFieldAndSetter1);
+
+  result = null;
+  c.instanceLateFinalFieldAndSetter2 = 0;
+  expect(null, result);
+  expect(0, c.instanceLateFinalFieldAndSetter2);
+
+  result = null;
+  expect(1, c.instanceMethodAndSetter1());
+  c.instanceMethodAndSetter1 = 0;
+  expect(2, result);
+
+  result = null;
+  expect(1, c.instanceMethodAndSetter2());
+  c.instanceMethodAndSetter2 = 0;
+  expect(2, result);
+}
+
+expect(expected, actual) {
+  if (expected != actual) throw 'Expected $expected, actual $actual';
+}
+
+throws(dynamic Function() f) {
+  try {
+    f();
+  } catch (e) {
+    print(e);
+    return;
+  }
+  throw 'Expected exception.';
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
new file mode 100644
index 0000000..4894f32
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
@@ -0,0 +1,142 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+//   int instanceMethod() => 2;
+//       ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+//   int instanceMethod() => 1;
+//       ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+//   int get instanceGetter => 2;
+//           ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+//   int get instanceGetter => 1;
+//           ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:23:7: Error: 'instanceField' is already declared in this scope.
+//   int instanceField = 2;
+//       ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:22:7: Context: Previous declaration of 'instanceField'.
+//   int instanceField = 1;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:48:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:47:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+//   final int instanceDuplicateFieldAndSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:58:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:54:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:63:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:62:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:68:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:64:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+//   void set instanceFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+//   int instanceFieldAndSetter1 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+//   void set instanceFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:34:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+//   int instanceFieldAndSetter2 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
+//   void set instanceMethodAndSetter1(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:72:7: Context: Previous declaration of 'instanceMethodAndSetter1'.
+//   int instanceMethodAndSetter1() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:81:7: Error: 'instanceMethodAndSetter2' is already declared in this scope.
+//   int instanceMethodAndSetter2() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:77:12: Context: Previous declaration of 'instanceMethodAndSetter2'.
+//   void set instanceMethodAndSetter2(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int instanceField;
+  field core::int instanceFieldAndSetter1;
+  field core::int instanceFieldAndSetter2;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter2;
+  final field core::int instanceDuplicateFieldAndSetter;
+  final field core::int instanceFieldAndDuplicateSetter;
+  final field core::int instanceDuplicateFieldAndDuplicateSetter;
+  synthetic constructor •() → self::Class
+    ;
+  method instanceMethod() → core::int
+    ;
+  get instanceGetter() → core::int
+    ;
+  set instanceSetter(dynamic value) → void
+    ;
+  set instanceFieldAndSetter1(core::int value) → void
+    ;
+  set instanceFieldAndSetter2(core::int value) → void
+    ;
+  set instanceLateFinalFieldAndSetter1(core::int value) → void
+    ;
+  set instanceLateFinalFieldAndSetter2(core::int value) → void
+    ;
+  set instanceDuplicateFieldAndSetter(core::int value) → void
+    ;
+  set instanceFieldAndDuplicateSetter(core::int value) → void
+    ;
+  set instanceDuplicateFieldAndDuplicateSetter(core::int value) → void
+    ;
+  method instanceMethodAndSetter1() → core::int
+    ;
+  set instanceMethodAndSetter1(core::int value) → void
+    ;
+  set instanceMethodAndSetter2(core::int value) → void
+    ;
+  method instanceMethodAndSetter2() → core::int
+    ;
+}
+static field dynamic result;
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+  ;
+static method throws(() → dynamic f) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
new file mode 100644
index 0000000..7fd4517
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
@@ -0,0 +1,340 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+//   int instanceMethod() => 2;
+//       ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+//   int instanceMethod() => 1;
+//       ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+//   int get instanceGetter => 2;
+//           ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+//   int get instanceGetter => 1;
+//           ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:23:7: Error: 'instanceField' is already declared in this scope.
+//   int instanceField = 2;
+//       ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:22:7: Context: Previous declaration of 'instanceField'.
+//   int instanceField = 1;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:48:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:47:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+//   final int instanceDuplicateFieldAndSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:58:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:54:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:63:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:62:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:68:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:64:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+//   void set instanceFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+//   int instanceFieldAndSetter1 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+//   void set instanceFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:34:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+//   int instanceFieldAndSetter2 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
+//   void set instanceMethodAndSetter1(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:72:7: Context: Previous declaration of 'instanceMethodAndSetter1'.
+//   int instanceMethodAndSetter1() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:81:7: Error: 'instanceMethodAndSetter2' is already declared in this scope.
+//   int instanceMethodAndSetter2() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:77:12: Context: Previous declaration of 'instanceMethodAndSetter2'.
+//   void set instanceMethodAndSetter2(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: Can't use 'instanceGetter' because it is declared more than once.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: Can't use 'instanceSetter' because it is declared more than once.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: Can't use 'instanceDuplicateFieldAndSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: Can't use 'instanceFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int instanceField = null;
+  field core::int instanceFieldAndSetter1 = 1;
+  field core::int instanceFieldAndSetter2 = 1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter2;
+  final field core::int instanceDuplicateFieldAndSetter = null;
+  final field core::int instanceFieldAndDuplicateSetter = 1;
+  final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method instanceMethod() → core::int
+    return 1;
+  get instanceGetter() → core::int
+    return 1;
+  set instanceSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  set instanceFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  set instanceFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  method instanceMethodAndSetter1() → core::int
+    return 1;
+  set instanceMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  method instanceMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  self::Class c = new self::Class::•();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+  c.instanceMethod();
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
+  c.{self::Class::instanceFieldAndDuplicateSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
+  c.{self::Class::instanceMethodAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
+  c.{self::Class::instanceMethodAndSetter2} = 0;
+  self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
new file mode 100644
index 0000000..7fd4517
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
@@ -0,0 +1,340 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+//   int instanceMethod() => 2;
+//       ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+//   int instanceMethod() => 1;
+//       ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+//   int get instanceGetter => 2;
+//           ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+//   int get instanceGetter => 1;
+//           ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:23:7: Error: 'instanceField' is already declared in this scope.
+//   int instanceField = 2;
+//       ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:22:7: Context: Previous declaration of 'instanceField'.
+//   int instanceField = 1;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:48:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:47:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+//   final int instanceDuplicateFieldAndSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:58:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:54:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:63:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:62:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:68:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:64:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+//   void set instanceFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+//   int instanceFieldAndSetter1 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+//   void set instanceFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:34:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+//   int instanceFieldAndSetter2 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
+//   void set instanceMethodAndSetter1(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:72:7: Context: Previous declaration of 'instanceMethodAndSetter1'.
+//   int instanceMethodAndSetter1() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:81:7: Error: 'instanceMethodAndSetter2' is already declared in this scope.
+//   int instanceMethodAndSetter2() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:77:12: Context: Previous declaration of 'instanceMethodAndSetter2'.
+//   void set instanceMethodAndSetter2(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: Can't use 'instanceGetter' because it is declared more than once.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: Can't use 'instanceSetter' because it is declared more than once.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: Can't use 'instanceDuplicateFieldAndSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: Can't use 'instanceFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int instanceField = null;
+  field core::int instanceFieldAndSetter1 = 1;
+  field core::int instanceFieldAndSetter2 = 1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter2;
+  final field core::int instanceDuplicateFieldAndSetter = null;
+  final field core::int instanceFieldAndDuplicateSetter = 1;
+  final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method instanceMethod() → core::int
+    return 1;
+  get instanceGetter() → core::int
+    return 1;
+  set instanceSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  set instanceFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  set instanceFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  method instanceMethodAndSetter1() → core::int
+    return 1;
+  set instanceMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  method instanceMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  self::Class c = new self::Class::•();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+  c.instanceMethod();
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
+  c.{self::Class::instanceFieldAndDuplicateSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
+  c.{self::Class::instanceMethodAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
+  c.{self::Class::instanceMethodAndSetter2} = 0;
+  self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline.expect
new file mode 100644
index 0000000..57d8da9
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline.expect
@@ -0,0 +1,39 @@
+var result;
+
+class Class {
+  int instanceMethod() => 1;
+  int instanceMethod() => 2;
+  int get instanceGetter => 1;
+  int get instanceGetter => 2;
+  void set instanceSetter(value) {}
+  void set instanceSetter(value) {}
+  int instanceField = 1;
+  int instanceField = 2;
+  int instanceFieldAndSetter1 = 1;
+  void set instanceFieldAndSetter1(int value) {}
+  void set instanceFieldAndSetter2(int value) {}
+  int instanceFieldAndSetter2 = 1;
+  late final int instanceLateFinalFieldAndSetter1;
+  void set instanceLateFinalFieldAndSetter1(int value) {}
+  void set instanceLateFinalFieldAndSetter2(int value) {}
+  late final int instanceLateFinalFieldAndSetter2;
+  final int instanceDuplicateFieldAndSetter = 1;
+  final int instanceDuplicateFieldAndSetter = 2;
+  void set instanceDuplicateFieldAndSetter(int value) {}
+  final int instanceFieldAndDuplicateSetter = 1;
+  void set instanceFieldAndDuplicateSetter(int value) {}
+  void set instanceFieldAndDuplicateSetter(int value) {}
+  final int instanceDuplicateFieldAndDuplicateSetter = 1;
+  final int instanceDuplicateFieldAndDuplicateSetter = 2;
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
+  int instanceMethodAndSetter1() => 1;
+  void set instanceMethodAndSetter1(int value) {}
+  void set instanceMethodAndSetter2(int value) {}
+  int instanceMethodAndSetter2() => 1;
+}
+
+test() {}
+main() {}
+expect(expected, actual) {}
+throws(dynamic Function() f) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..904d130
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.textual_outline_modelled.expect
@@ -0,0 +1,43 @@
+class Class {
+  int get instanceGetter => 1;
+  int get instanceGetter => 2;
+  int instanceField = 1;
+  int instanceField = 2;
+  int instanceFieldAndSetter1 = 1;
+  int instanceFieldAndSetter2 = 1;
+  int instanceMethod() => 1;
+  int instanceMethod() => 2;
+  void set instanceFieldAndSetter1(int value) {}
+  void set instanceFieldAndSetter2(int value) {}
+  void set instanceSetter(value) {}
+  void set instanceSetter(value) {}
+  ---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+  final int instanceLateFinalFieldAndSetter1;
+  void set instanceLateFinalFieldAndSetter1(int value) {}
+  void set instanceLateFinalFieldAndSetter2(int value) {}
+  ---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+  final int instanceDuplicateFieldAndDuplicateSetter = 1;
+  final int instanceDuplicateFieldAndDuplicateSetter = 2;
+  final int instanceDuplicateFieldAndSetter = 1;
+  final int instanceDuplicateFieldAndSetter = 2;
+  final int instanceFieldAndDuplicateSetter = 1;
+  final int instanceLateFinalFieldAndSetter2;
+  int instanceMethodAndSetter1() => 1;
+  int instanceMethodAndSetter2() => 1;
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
+  void set instanceDuplicateFieldAndSetter(int value) {}
+  void set instanceFieldAndDuplicateSetter(int value) {}
+  void set instanceFieldAndDuplicateSetter(int value) {}
+  void set instanceMethodAndSetter1(int value) {}
+  void set instanceMethodAndSetter2(int value) {}
+}
+expect(expected, actual) {}
+main() {}
+test() {}
+throws(dynamic Function() f) {}
+var result;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
new file mode 100644
index 0000000..7fd4517
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
@@ -0,0 +1,340 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+//   int instanceMethod() => 2;
+//       ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+//   int instanceMethod() => 1;
+//       ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+//   int get instanceGetter => 2;
+//           ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+//   int get instanceGetter => 1;
+//           ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:23:7: Error: 'instanceField' is already declared in this scope.
+//   int instanceField = 2;
+//       ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:22:7: Context: Previous declaration of 'instanceField'.
+//   int instanceField = 1;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:48:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:47:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+//   final int instanceDuplicateFieldAndSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:58:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:54:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:63:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:62:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:68:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:64:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+//   void set instanceFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+//   int instanceFieldAndSetter1 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+//   void set instanceFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:34:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+//   int instanceFieldAndSetter2 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
+//   void set instanceMethodAndSetter1(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:72:7: Context: Previous declaration of 'instanceMethodAndSetter1'.
+//   int instanceMethodAndSetter1() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:81:7: Error: 'instanceMethodAndSetter2' is already declared in this scope.
+//   int instanceMethodAndSetter2() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:77:12: Context: Previous declaration of 'instanceMethodAndSetter2'.
+//   void set instanceMethodAndSetter2(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: Can't use 'instanceGetter' because it is declared more than once.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: Can't use 'instanceSetter' because it is declared more than once.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: Can't use 'instanceDuplicateFieldAndSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: Can't use 'instanceFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int instanceField = null;
+  field core::int instanceFieldAndSetter1 = 1;
+  field core::int instanceFieldAndSetter2 = 1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter2;
+  final field core::int instanceDuplicateFieldAndSetter = null;
+  final field core::int instanceFieldAndDuplicateSetter = 1;
+  final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method instanceMethod() → core::int
+    return 1;
+  get instanceGetter() → core::int
+    return 1;
+  set instanceSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  set instanceFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  set instanceFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  method instanceMethodAndSetter1() → core::int
+    return 1;
+  set instanceMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  method instanceMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  self::Class c = new self::Class::•();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+  c.instanceMethod();
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
+  c.{self::Class::instanceFieldAndDuplicateSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
+  c.{self::Class::instanceMethodAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
+  c.{self::Class::instanceMethodAndSetter2} = 0;
+  self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
new file mode 100644
index 0000000..7fd4517
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
@@ -0,0 +1,340 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+//   int instanceMethod() => 2;
+//       ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+//   int instanceMethod() => 1;
+//       ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+//   int get instanceGetter => 2;
+//           ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+//   int get instanceGetter => 1;
+//           ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:23:7: Error: 'instanceField' is already declared in this scope.
+//   int instanceField = 2;
+//       ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:22:7: Context: Previous declaration of 'instanceField'.
+//   int instanceField = 1;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:48:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:47:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+//   final int instanceDuplicateFieldAndSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:58:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:54:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:63:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:62:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:68:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:64:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+//   void set instanceFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+//   int instanceFieldAndSetter1 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+//   void set instanceFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:34:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+//   int instanceFieldAndSetter2 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
+//   void set instanceMethodAndSetter1(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:72:7: Context: Previous declaration of 'instanceMethodAndSetter1'.
+//   int instanceMethodAndSetter1() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:81:7: Error: 'instanceMethodAndSetter2' is already declared in this scope.
+//   int instanceMethodAndSetter2() => 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:77:12: Context: Previous declaration of 'instanceMethodAndSetter2'.
+//   void set instanceMethodAndSetter2(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+//   c.instanceMethod();
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: Can't use 'instanceMethod' because it is declared more than once.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: Can't use 'instanceGetter' because it is declared more than once.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: Can't use 'instanceSetter' because it is declared more than once.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: Can't use 'instanceField' because it is declared more than once.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: Can't use 'instanceDuplicateFieldAndSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: Can't use 'instanceFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: Can't use 'instanceDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int instanceField = null;
+  field core::int instanceFieldAndSetter1 = 1;
+  field core::int instanceFieldAndSetter2 = 1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter1;
+  late final [setter] field core::int instanceLateFinalFieldAndSetter2;
+  final field core::int instanceDuplicateFieldAndSetter = null;
+  final field core::int instanceFieldAndDuplicateSetter = 1;
+  final field core::int instanceDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  method instanceMethod() → core::int
+    return 1;
+  get instanceGetter() → core::int
+    return 1;
+  set instanceSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  set instanceFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  set instanceFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  method instanceMethodAndSetter1() → core::int
+    return 1;
+  set instanceMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  set instanceMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  method instanceMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  self::Class c = new self::Class::•();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:86:5: Error: The method 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing method, or defining a method named 'instanceMethod'.
+  c.instanceMethod();
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:87:6: Error: The getter 'instanceMethod' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:88:5: Error: The getter 'instanceGetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:89:5: Error: The setter 'instanceSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:90:5: Error: The getter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:91:5: Error: The setter 'instanceField' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:92:5: Error: The getter 'instanceDuplicateFieldAndSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::instanceDuplicateFieldAndSetter} = 0;
+  c.{self::Class::instanceFieldAndDuplicateSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:95:5: Error: The setter 'instanceFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:96:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance.dart:97:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/duplicates_instance.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::expect(1, c.{self::Class::instanceFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceFieldAndSetter2});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => c.{self::Class::instanceLateFinalFieldAndSetter1});
+  self::result = null;
+  c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
+  self::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter2});
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter1}());
+  c.{self::Class::instanceMethodAndSetter1} = 0;
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, c.{self::Class::instanceMethodAndSetter2}());
+  c.{self::Class::instanceMethodAndSetter2} = 0;
+  self::expect(2, self::result);
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
new file mode 100644
index 0000000..41ba326
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
@@ -0,0 +1,153 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+var result;
+
+extension Extension on int {
+  int instanceMethod() => 1;
+  int instanceMethod() => 2;
+
+  int get instanceGetter => 1;
+  int get instanceGetter => 2;
+
+  void set instanceSetter(value) {
+    result = 1;
+  }
+
+  void set instanceSetter(value) {
+    result = 2;
+  }
+
+  int instanceField = 1;
+  int instanceField = 2;
+
+  int instanceFieldAndSetter1 = 1;
+  void set instanceFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  void set instanceFieldAndSetter2(int value) {
+    result = 2;
+  }
+  int instanceFieldAndSetter2 = 1;
+
+  late final int instanceLateFinalFieldAndSetter1;
+  void set instanceLateFinalFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  void set instanceLateFinalFieldAndSetter2(int value) {
+    result = 2;
+  }
+  late final int instanceLateFinalFieldAndSetter2;
+
+  final int instanceDuplicateFieldAndSetter = 1;
+  final int instanceDuplicateFieldAndSetter = 2;
+  void set instanceDuplicateFieldAndSetter(int value) {
+    result = 3;
+  }
+
+  final int instanceFieldAndDuplicateSetter = 1;
+  void set instanceFieldAndDuplicateSetter(int value) {
+    result = 2;
+  }
+
+  void set instanceFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  final int instanceDuplicateFieldAndDuplicateSetter = 1;
+  final int instanceDuplicateFieldAndDuplicateSetter = 2;
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+    result = 4;
+  }
+
+  int instanceMethodAndSetter1() => 1;
+  void set instanceMethodAndSetter1(int value) {
+    result = 2;
+  }
+
+  void set instanceMethodAndSetter2(int value) {
+    result = 2;
+  }
+  int instanceMethodAndSetter2() => 1;
+}
+
+test() {
+  int c = 0;
+  c.instanceField;
+  c.instanceField = 0;
+  c.instanceFieldAndSetter1;
+  c.instanceFieldAndSetter2;
+  c.instanceLateFinalFieldAndSetter1;
+  c.instanceLateFinalFieldAndSetter2;
+  c.instanceDuplicateFieldAndSetter;
+  c.instanceFieldAndDuplicateSetter;
+  c.instanceDuplicateFieldAndDuplicateSetter;
+}
+
+main() {
+  int c = 0;
+
+  expect(1, c.instanceMethod());
+
+  expect(1, (c.instanceMethod)());
+
+  result = null;
+  expect(1, c.instanceGetter);
+  c.instanceSetter = 0;
+  expect(1, result);
+
+  result = null;
+  c.instanceFieldAndSetter1 = 0;
+  expect(2, result);
+
+  result = null;
+  c.instanceFieldAndSetter2 = 0;
+  expect(null, result);
+
+  result = null;
+  c.instanceLateFinalFieldAndSetter1 = 0;
+  expect(2, result);
+
+  result = null;
+  c.instanceLateFinalFieldAndSetter2 = 0;
+  expect(2, result);
+
+  result = null;
+  c.instanceDuplicateFieldAndSetter = 0;
+  expect(2, result);
+
+  result = null;
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+  expect(2, result);
+
+  result = null;
+  expect(1, c.instanceMethodAndSetter1());
+  c.instanceMethodAndSetter1 = 0;
+  expect(2, result);
+
+  result = null;
+  expect(1, c.instanceMethodAndSetter2());
+  c.instanceMethodAndSetter2 = 0;
+  expect(2, result);
+}
+
+expect(expected, actual) {
+  if (expected != actual) throw 'Expected $expected, actual $actual';
+}
+
+throws(dynamic Function() f) {
+  try {
+    f();
+  } catch (e) {
+    print(e);
+    return;
+  }
+  throw 'Expected exception.';
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect
new file mode 100644
index 0000000..bd4f3ab
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect
@@ -0,0 +1,228 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:9:7: Error: 'instanceMethod' is already declared in this scope.
+//   int instanceMethod() => 2;
+//       ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:8:7: Context: Previous declaration of 'instanceMethod'.
+//   int instanceMethod() => 1;
+//       ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:12:11: Error: 'instanceGetter' is already declared in this scope.
+//   int get instanceGetter => 2;
+//           ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:11:11: Context: Previous declaration of 'instanceGetter'.
+//   int get instanceGetter => 1;
+//           ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:18:12: Error: 'instanceSetter' is already declared in this scope.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:14:12: Context: Previous declaration of 'instanceSetter'.
+//   void set instanceSetter(value) {
+//            ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int instanceField = 1;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int instanceField = 2;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:23:7: Error: 'instanceField' is already declared in this scope.
+//   int instanceField = 2;
+//       ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:22:7: Context: Previous declaration of 'instanceField'.
+//   int instanceField = 1;
+//       ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int instanceFieldAndSetter1 = 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int instanceFieldAndSetter2 = 1;
+//       ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   final int instanceDuplicateFieldAndSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   final int instanceDuplicateFieldAndSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:46:13: Error: 'instanceDuplicateFieldAndSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:45:13: Context: Previous declaration of 'instanceDuplicateFieldAndSetter'.
+//   final int instanceDuplicateFieldAndSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:51:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   final int instanceFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:56:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:52:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   final int instanceDuplicateFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   final int instanceDuplicateFieldAndDuplicateSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:61:13: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 2;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:60:13: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   final int instanceDuplicateFieldAndDuplicateSetter = 1;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:66:12: Error: 'instanceDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:62:12: Context: Previous declaration of 'instanceDuplicateFieldAndDuplicateSetter'.
+//   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+//   void set instanceFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:25:7: Error: Conflicts with setter 'instanceFieldAndSetter1'.
+//   int instanceFieldAndSetter1 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+//   void set instanceFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:33:7: Error: Conflicts with setter 'instanceFieldAndSetter2'.
+//   int instanceFieldAndSetter2 = 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:71:12: Error: Conflicts with member 'instanceMethodAndSetter1'.
+//   void set instanceMethodAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:70:7: Error: Conflicts with setter 'instanceMethodAndSetter1'.
+//   int instanceMethodAndSetter1() => 1;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:75:12: Error: Conflicts with member 'instanceMethodAndSetter2'.
+//   void set instanceMethodAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:78:7: Error: Conflicts with setter 'instanceMethodAndSetter2'.
+//   int instanceMethodAndSetter2() => 1;
+//       ^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+  method instanceMethod = self::Extension|instanceMethod;
+  tearoff instanceMethod = self::Extension|get#instanceMethod;
+  get instanceGetter = self::Extension|get#instanceGetter;
+  field instanceField = self::Extension|instanceField;
+  field instanceFieldAndSetter1 = self::Extension|instanceFieldAndSetter1;
+  field instanceFieldAndSetter2 = self::Extension|instanceFieldAndSetter2;
+  field instanceLateFinalFieldAndSetter1 = self::Extension|instanceLateFinalFieldAndSetter1;
+  field instanceLateFinalFieldAndSetter2 = self::Extension|instanceLateFinalFieldAndSetter2;
+  field instanceDuplicateFieldAndSetter = self::Extension|instanceDuplicateFieldAndSetter;
+  field instanceFieldAndDuplicateSetter = self::Extension|instanceFieldAndDuplicateSetter;
+  field instanceDuplicateFieldAndDuplicateSetter = self::Extension|instanceDuplicateFieldAndDuplicateSetter;
+  method instanceMethodAndSetter1 = self::Extension|instanceMethodAndSetter1;
+  tearoff instanceMethodAndSetter1 = self::Extension|get#instanceMethodAndSetter1;
+  method instanceMethodAndSetter2 = self::Extension|instanceMethodAndSetter2;
+  tearoff instanceMethodAndSetter2 = self::Extension|get#instanceMethodAndSetter2;
+  set instanceSetter = self::Extension|set#instanceSetter;
+  set instanceFieldAndSetter1 = self::Extension|set#instanceFieldAndSetter1;
+  set instanceFieldAndSetter2 = self::Extension|set#instanceFieldAndSetter2;
+  set instanceLateFinalFieldAndSetter1 = self::Extension|set#instanceLateFinalFieldAndSetter1;
+  set instanceLateFinalFieldAndSetter2 = self::Extension|set#instanceLateFinalFieldAndSetter2;
+  set instanceDuplicateFieldAndSetter = self::Extension|set#instanceDuplicateFieldAndSetter;
+  set instanceFieldAndDuplicateSetter = self::Extension|set#instanceFieldAndDuplicateSetter;
+  set instanceDuplicateFieldAndDuplicateSetter = self::Extension|set#instanceDuplicateFieldAndDuplicateSetter;
+  set instanceMethodAndSetter1 = self::Extension|set#instanceMethodAndSetter1;
+  set instanceMethodAndSetter2 = self::Extension|set#instanceMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|instanceField;
+static field core::int Extension|instanceFieldAndSetter1;
+static field core::int Extension|instanceFieldAndSetter2;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|instanceLateFinalFieldAndSetter2;
+static final field core::int Extension|instanceDuplicateFieldAndSetter;
+static final field core::int Extension|instanceFieldAndDuplicateSetter;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+  ;
+static method Extension|get#instanceMethod(lowered final core::int #this) → () → core::int
+  return () → core::int => self::Extension|instanceMethod(#this);
+static method Extension|get#instanceGetter(lowered final core::int #this) → core::int
+  ;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void
+  ;
+static method Extension|set#instanceFieldAndSetter1(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|set#instanceFieldAndSetter2(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|set#instanceLateFinalFieldAndSetter1(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|set#instanceLateFinalFieldAndSetter2(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+  ;
+static method Extension|get#instanceMethodAndSetter1(lowered final core::int #this) → () → core::int
+  return () → core::int => self::Extension|instanceMethodAndSetter1(#this);
+static method Extension|set#instanceMethodAndSetter1(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void
+  ;
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+  ;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+  return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+  ;
+static method throws(() → dynamic f) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.textual_outline.expect
new file mode 100644
index 0000000..a945e40
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.textual_outline.expect
@@ -0,0 +1,39 @@
+var result;
+extension Extension on int {
+  int instanceMethod() => 1;
+  int instanceMethod() => 2;
+  int get instanceGetter => 1;
+  int get instanceGetter => 2;
+  void set instanceSetter(value) {}
+  void set instanceSetter(value) {}
+  int instanceField = 1;
+  int instanceField = 2;
+  int instanceFieldAndSetter1 = 1;
+  void set instanceFieldAndSetter1(int value) {}
+  void set instanceFieldAndSetter2(int value) {}
+  int instanceFieldAndSetter2 = 1;
+  late
+  final int instanceLateFinalFieldAndSetter1;
+  void set instanceLateFinalFieldAndSetter1(int value) {}
+  void set instanceLateFinalFieldAndSetter2(int value) {}
+  late
+  final int instanceLateFinalFieldAndSetter2;
+  final int instanceDuplicateFieldAndSetter = 1;
+  final int instanceDuplicateFieldAndSetter = 2;
+  void set instanceDuplicateFieldAndSetter(int value) {}
+  final int instanceFieldAndDuplicateSetter = 1;
+  void set instanceFieldAndDuplicateSetter(int value) {}
+  void set instanceFieldAndDuplicateSetter(int value) {}
+  final int instanceDuplicateFieldAndDuplicateSetter = 1;
+  final int instanceDuplicateFieldAndDuplicateSetter = 2;
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
+  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
+  int instanceMethodAndSetter1() => 1;
+  void set instanceMethodAndSetter1(int value) {}
+  void set instanceMethodAndSetter2(int value) {}
+  int instanceMethodAndSetter2() => 1;
+}
+test() {}
+main() {}
+expect(expected, actual) {}
+throws(dynamic Function() f) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart b/pkg/front_end/testcases/nnbd/duplicates_static.dart
new file mode 100644
index 0000000..601f605
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart
@@ -0,0 +1,139 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+var result;
+
+class Class {
+  static int staticMethod() => 1;
+  static int staticMethod() => 2;
+
+  static int get staticGetter => 1;
+  static int get staticGetter => 2;
+
+  static void set staticSetter(value) {
+    result = 1;
+  }
+
+  static void set staticSetter(value) {
+    result = 2;
+  }
+
+  static int staticField = 1;
+  static int staticField = 2;
+
+  static int staticFieldAndSetter1 = 1;
+  static void set staticFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  static void set staticFieldAndSetter2(int value) {
+    result = 2;
+  }
+
+  static int staticFieldAndSetter2 = 1;
+
+  static late final int staticLateFinalFieldAndSetter1;
+  static void set staticLateFinalFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  static void set staticLateFinalFieldAndSetter2(int value) {
+    result = 2;
+  }
+
+  static late final int staticLateFinalFieldAndSetter2;
+
+  static final int staticDuplicateFieldAndSetter = 1;
+  static final int staticDuplicateFieldAndSetter = 2;
+  static void set staticDuplicateFieldAndSetter(int value) {
+    result = 3;
+  }
+
+  static final int staticFieldAndDuplicateSetter = 1;
+  static void set staticFieldAndDuplicateSetter(int value) {
+    result = 2;
+  }
+
+  static void set staticFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  static final int staticDuplicateFieldAndDuplicateSetter = 1;
+  static final int staticDuplicateFieldAndDuplicateSetter = 2;
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+    result = 4;
+  }
+
+  static int staticMethodAndSetter1() => 1;
+  static void set staticMethodAndSetter1(int value) {
+    result = 2;
+  }
+
+  static void set staticMethodAndSetter2(int value) {
+    result = 2;
+  }
+
+  static int staticMethodAndSetter2() => 1;
+}
+
+test() {
+  Class.staticMethod();
+  (Class.staticMethod)();
+  Class.staticGetter;
+  Class.staticSetter = 0;
+  Class.staticField;
+  Class.staticField = 0;
+  Class.staticDuplicateFieldAndSetter;
+  Class.staticDuplicateFieldAndSetter = 0;
+  Class.staticFieldAndDuplicateSetter;
+  Class.staticFieldAndDuplicateSetter = 0;
+  Class.staticDuplicateFieldAndDuplicateSetter;
+  Class.staticDuplicateFieldAndDuplicateSetter = 0;
+  Class.staticMethodAndSetter1 = 0;
+  Class.staticMethodAndSetter2 = 0;
+}
+
+main() {
+  result = null;
+  Class.staticFieldAndSetter1 = 0;
+  expect(null, result);
+  expect(0, Class.staticFieldAndSetter1);
+
+  result = null;
+  Class.staticFieldAndSetter2 = 0;
+  expect(null, result);
+  expect(0, Class.staticFieldAndSetter2);
+
+  result = null;
+  Class.staticLateFinalFieldAndSetter1 = 0;
+  expect(null, result);
+  expect(0, Class.staticLateFinalFieldAndSetter1);
+
+  result = null;
+  Class.staticLateFinalFieldAndSetter2 = 0;
+  expect(null, result);
+  expect(0, Class.staticLateFinalFieldAndSetter2);
+
+  expect(1, Class.staticMethodAndSetter1());
+
+  expect(1, Class.staticMethodAndSetter2());
+}
+
+expect(expected, actual) {
+  if (expected != actual) throw 'Expected $expected, actual $actual';
+}
+
+throws(dynamic Function() f) {
+  try {
+    f();
+  } catch (e) {
+    print(e);
+    return;
+  }
+  throw 'Expected exception.';
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
new file mode 100644
index 0000000..777b4c0
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
@@ -0,0 +1,158 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Context: Previous declaration of 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: 'staticMethodAndSetter2' is already declared in this scope.
+//   static int staticMethodAndSetter2() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Context: Previous declaration of 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  static field core::int staticField;
+  static field core::int staticFieldAndSetter1;
+  static field core::int staticFieldAndSetter2;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter2;
+  static final field core::int staticDuplicateFieldAndSetter;
+  static final field core::int staticFieldAndDuplicateSetter;
+  static final field core::int staticDuplicateFieldAndDuplicateSetter;
+  synthetic constructor •() → self::Class
+    ;
+  static method staticMethod() → core::int
+    ;
+  static get staticGetter() → core::int
+    ;
+  static set staticSetter(dynamic value) → void
+    ;
+  static set staticFieldAndSetter1(core::int value) → void
+    ;
+  static set staticFieldAndSetter2(core::int value) → void
+    ;
+  static set staticLateFinalFieldAndSetter1(core::int value) → void
+    ;
+  static set staticLateFinalFieldAndSetter2(core::int value) → void
+    ;
+  static set staticDuplicateFieldAndSetter(core::int value) → void
+    ;
+  static set staticFieldAndDuplicateSetter(core::int value) → void
+    ;
+  static set staticDuplicateFieldAndDuplicateSetter(core::int value) → void
+    ;
+  static method staticMethodAndSetter1() → core::int
+    ;
+  static set staticMethodAndSetter1(core::int value) → void
+    ;
+  static set staticMethodAndSetter2(core::int value) → void
+    ;
+  static method staticMethodAndSetter2() → core::int
+    ;
+}
+static field dynamic result;
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+  ;
+static method throws(() → dynamic f) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
new file mode 100644
index 0000000..a977d92
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
@@ -0,0 +1,305 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Context: Previous declaration of 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: 'staticMethodAndSetter2' is already declared in this scope.
+//   static int staticMethodAndSetter2() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Context: Previous declaration of 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Class.staticMethod();
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Class.staticMethod)();
+//          ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Class.staticGetter;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:9: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Class.staticSetter = 0;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+//   Class.staticSetter = 0;
+//                      ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField = 0;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+//   Class.staticField = 0;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//                                       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Class.staticFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Class.staticMethodAndSetter1 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Class.staticMethodAndSetter2 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  static field core::int staticField = null;
+  static field core::int staticFieldAndSetter1 = 1;
+  static field core::int staticFieldAndSetter2 = 1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter2;
+  static final field core::int staticDuplicateFieldAndSetter = null;
+  static final field core::int staticFieldAndDuplicateSetter = 1;
+  static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method staticMethod() → core::int
+    return 1;
+  static get staticGetter() → core::int
+    return 1;
+  static set staticSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  static set staticFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static set staticFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static method staticMethodAndSetter1() → core::int
+    return 1;
+  static set staticMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static method staticMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+  Class.staticMethod();
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Class.staticMethod)();
+         ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+  Class.staticGetter;
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+  Class.staticSetter = 0;
+                     ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+  Class.staticField;
+        ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+  Class.staticField = 0;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndSetter = 0;
+                                      ^";
+  self::Class::staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Class.staticFieldAndDuplicateSetter = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndDuplicateSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndDuplicateSetter = 0;
+                                               ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+  Class.staticMethodAndSetter1 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+  Class.staticMethodAndSetter2 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Class::staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter1);
+  self::result = null;
+  self::Class::staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter2);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Class::staticMethodAndSetter1());
+  self::expect(1, self::Class::staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
new file mode 100644
index 0000000..a977d92
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
@@ -0,0 +1,305 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Context: Previous declaration of 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: 'staticMethodAndSetter2' is already declared in this scope.
+//   static int staticMethodAndSetter2() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Context: Previous declaration of 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Class.staticMethod();
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Class.staticMethod)();
+//          ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Class.staticGetter;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:9: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Class.staticSetter = 0;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+//   Class.staticSetter = 0;
+//                      ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField = 0;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+//   Class.staticField = 0;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//                                       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Class.staticFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Class.staticMethodAndSetter1 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Class.staticMethodAndSetter2 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  static field core::int staticField = null;
+  static field core::int staticFieldAndSetter1 = 1;
+  static field core::int staticFieldAndSetter2 = 1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter2;
+  static final field core::int staticDuplicateFieldAndSetter = null;
+  static final field core::int staticFieldAndDuplicateSetter = 1;
+  static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method staticMethod() → core::int
+    return 1;
+  static get staticGetter() → core::int
+    return 1;
+  static set staticSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  static set staticFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static set staticFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static method staticMethodAndSetter1() → core::int
+    return 1;
+  static set staticMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static method staticMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+  Class.staticMethod();
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Class.staticMethod)();
+         ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+  Class.staticGetter;
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+  Class.staticSetter = 0;
+                     ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+  Class.staticField;
+        ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+  Class.staticField = 0;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndSetter = 0;
+                                      ^";
+  self::Class::staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Class.staticFieldAndDuplicateSetter = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndDuplicateSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndDuplicateSetter = 0;
+                                               ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+  Class.staticMethodAndSetter1 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+  Class.staticMethodAndSetter2 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Class::staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter1);
+  self::result = null;
+  self::Class::staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter2);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Class::staticMethodAndSetter1());
+  self::expect(1, self::Class::staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline.expect
new file mode 100644
index 0000000..d898cdf
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.textual_outline.expect
@@ -0,0 +1,39 @@
+var result;
+class Class {
+  static int staticMethod() => 1;
+  static int staticMethod() => 2;
+  static int get staticGetter => 1;
+  static int get staticGetter => 2;
+  static void set staticSetter(value) {}
+  static void set staticSetter(value) {}
+  static int staticField = 1;
+  static int staticField = 2;
+  static int staticFieldAndSetter1 = 1;
+  static void set staticFieldAndSetter1(int value) {}
+  static void set staticFieldAndSetter2(int value) {}
+  static int staticFieldAndSetter2 = 1;
+  static late ;
+  final int staticLateFinalFieldAndSetter1;
+  static void set staticLateFinalFieldAndSetter1(int value) {}
+  static void set staticLateFinalFieldAndSetter2(int value) {}
+  static late ;
+  final int staticLateFinalFieldAndSetter2;
+  static final int staticDuplicateFieldAndSetter = 1;
+  static final int staticDuplicateFieldAndSetter = 2;
+  static void set staticDuplicateFieldAndSetter(int value) {}
+  static final int staticFieldAndDuplicateSetter = 1;
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static final int staticDuplicateFieldAndDuplicateSetter = 1;
+  static final int staticDuplicateFieldAndDuplicateSetter = 2;
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static int staticMethodAndSetter1() => 1;
+  static void set staticMethodAndSetter1(int value) {}
+  static void set staticMethodAndSetter2(int value) {}
+  static int staticMethodAndSetter2() => 1;
+}
+test() {}
+main() {}
+expect(expected, actual) {}
+throws(dynamic Function() f) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
new file mode 100644
index 0000000..a977d92
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
@@ -0,0 +1,305 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Context: Previous declaration of 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: 'staticMethodAndSetter2' is already declared in this scope.
+//   static int staticMethodAndSetter2() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Context: Previous declaration of 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Class.staticMethod();
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Class.staticMethod)();
+//          ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Class.staticGetter;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:9: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Class.staticSetter = 0;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+//   Class.staticSetter = 0;
+//                      ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField = 0;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+//   Class.staticField = 0;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//                                       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Class.staticFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Class.staticMethodAndSetter1 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Class.staticMethodAndSetter2 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  static field core::int staticField = null;
+  static field core::int staticFieldAndSetter1 = 1;
+  static field core::int staticFieldAndSetter2 = 1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter2;
+  static final field core::int staticDuplicateFieldAndSetter = null;
+  static final field core::int staticFieldAndDuplicateSetter = 1;
+  static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method staticMethod() → core::int
+    return 1;
+  static get staticGetter() → core::int
+    return 1;
+  static set staticSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  static set staticFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static set staticFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static method staticMethodAndSetter1() → core::int
+    return 1;
+  static set staticMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static method staticMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+  Class.staticMethod();
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Class.staticMethod)();
+         ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+  Class.staticGetter;
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+  Class.staticSetter = 0;
+                     ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+  Class.staticField;
+        ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+  Class.staticField = 0;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndSetter = 0;
+                                      ^";
+  self::Class::staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Class.staticFieldAndDuplicateSetter = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndDuplicateSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndDuplicateSetter = 0;
+                                               ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+  Class.staticMethodAndSetter1 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+  Class.staticMethodAndSetter2 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Class::staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter1);
+  self::result = null;
+  self::Class::staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter2);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Class::staticMethodAndSetter1());
+  self::expect(1, self::Class::staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
new file mode 100644
index 0000000..a977d92
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
@@ -0,0 +1,305 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:72:14: Context: Previous declaration of 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:81:14: Error: 'staticMethodAndSetter2' is already declared in this scope.
+//   static int staticMethodAndSetter2() => 1;
+//              ^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:77:19: Context: Previous declaration of 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Class.staticMethod();
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Class.staticMethod)();
+//          ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Class.staticGetter;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:9: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Class.staticSetter = 0;
+//         ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+//   Class.staticSetter = 0;
+//                      ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:9: Error: Can't use 'staticField' because it is declared more than once.
+//   Class.staticField = 0;
+//         ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+//   Class.staticField = 0;
+//                     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndSetter = 0;
+//                                       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Class.staticFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+//   Class.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Class.staticMethodAndSetter1 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Class.staticMethodAndSetter2 = 0;
+//         ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  static field core::int staticField = null;
+  static field core::int staticFieldAndSetter1 = 1;
+  static field core::int staticFieldAndSetter2 = 1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter1;
+  late static final [setter] field core::int staticLateFinalFieldAndSetter2;
+  static final field core::int staticDuplicateFieldAndSetter = null;
+  static final field core::int staticFieldAndDuplicateSetter = 1;
+  static final field core::int staticDuplicateFieldAndDuplicateSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  static method staticMethod() → core::int
+    return 1;
+  static get staticGetter() → core::int
+    return 1;
+  static set staticSetter(dynamic value) → void {
+    self::result = 1;
+  }
+  static set staticFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticLateFinalFieldAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static set staticFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+    self::result = 3;
+  }
+  static method staticMethodAndSetter1() → core::int
+    return 1;
+  static set staticMethodAndSetter1(core::int value) → void {
+    self::result = 2;
+  }
+  static set staticMethodAndSetter2(core::int value) → void {
+    self::result = 2;
+  }
+  static method staticMethodAndSetter2() → core::int
+    return 1;
+}
+static field dynamic result;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:85:9: Error: Can't use 'staticMethod' because it is declared more than once.
+  Class.staticMethod();
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:86:10: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Class.staticMethod)();
+         ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:87:9: Error: Can't use 'staticGetter' because it is declared more than once.
+  Class.staticGetter;
+        ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:88:22: Error: Can't assign to this.
+  Class.staticSetter = 0;
+                     ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:89:9: Error: Can't use 'staticField' because it is declared more than once.
+  Class.staticField;
+        ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:90:21: Error: Can't assign to this.
+  Class.staticField = 0;
+                    ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:91:9: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:92:39: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndSetter = 0;
+                                      ^";
+  self::Class::staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:94:9: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Class.staticFieldAndDuplicateSetter = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:95:9: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Class.staticDuplicateFieldAndDuplicateSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:96:48: Error: Can't assign to this.
+  Class.staticDuplicateFieldAndDuplicateSetter = 0;
+                                               ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:97:9: Error: Setter not found: 'staticMethodAndSetter1'.
+  Class.staticMethodAndSetter1 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static.dart:98:9: Error: Setter not found: 'staticMethodAndSetter2'.
+  Class.staticMethodAndSetter2 = 0;
+        ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Class::staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter1);
+  self::result = null;
+  self::Class::staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticFieldAndSetter2);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Class::staticLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Class::staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Class::staticMethodAndSetter1());
+  self::expect(1, self::Class::staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
new file mode 100644
index 0000000..a0d4145
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
@@ -0,0 +1,139 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+var result;
+
+extension Extension on int {
+  static int staticMethod() => 1;
+  static int staticMethod() => 2;
+
+  static int get staticGetter => 1;
+  static int get staticGetter => 2;
+
+  static void set staticSetter(value) {
+    result = 1;
+  }
+
+  static void set staticSetter(value) {
+    result = 2;
+  }
+
+  static int staticField = 1;
+  static int staticField = 2;
+
+  static int staticFieldAndSetter1 = 1;
+  static void set staticFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  static void set staticFieldAndSetter2(int value) {
+    result = 2;
+  }
+
+  static int staticFieldAndSetter2 = 1;
+
+  static late final int staticLateFinalFieldAndSetter1;
+  static void set staticLateFinalFieldAndSetter1(int value) {
+    result = 2;
+  }
+
+  static void set staticLateFinalFieldAndSetter2(int value) {
+    result = 2;
+  }
+
+  static late final int staticLateFinalFieldAndSetter2;
+
+  static final int staticDuplicateFieldAndSetter = 1;
+  static final int staticDuplicateFieldAndSetter = 2;
+  static void set staticDuplicateFieldAndSetter(int value) {
+    result = 3;
+  }
+
+  static final int staticFieldAndDuplicateSetter = 1;
+  static void set staticFieldAndDuplicateSetter(int value) {
+    result = 2;
+  }
+
+  static void set staticFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  static final int staticDuplicateFieldAndDuplicateSetter = 1;
+  static final int staticDuplicateFieldAndDuplicateSetter = 2;
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+    result = 3;
+  }
+
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+    result = 4;
+  }
+
+  static int staticMethodAndSetter1() => 1;
+  static void set staticMethodAndSetter1(int value) {
+    result = 2;
+  }
+
+  static void set staticMethodAndSetter2(int value) {
+    result = 2;
+  }
+
+  static int staticMethodAndSetter2() => 1;
+}
+
+test() {
+  Extension.staticMethod();
+  (Extension.staticMethod)();
+  Extension.staticGetter;
+  Extension.staticSetter = 0;
+  Extension.staticField;
+  Extension.staticField = 0;
+  Extension.staticDuplicateFieldAndSetter;
+  Extension.staticDuplicateFieldAndSetter = 0;
+  Extension.staticFieldAndDuplicateSetter;
+  Extension.staticFieldAndDuplicateSetter = 0;
+  Extension.staticDuplicateFieldAndDuplicateSetter;
+  Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+  Extension.staticMethodAndSetter1 = 0;
+  Extension.staticMethodAndSetter2 = 0;
+}
+
+main() {
+  result = null;
+  Extension.staticFieldAndSetter1 = 0;
+  expect(null, result);
+  expect(0, Extension.staticFieldAndSetter1);
+
+  result = null;
+  Extension.staticFieldAndSetter2 = 0;
+  expect(null, result);
+  expect(0, Extension.staticFieldAndSetter2);
+
+  result = null;
+  Extension.staticLateFinalFieldAndSetter1 = 0;
+  expect(null, result);
+  expect(0, Extension.staticLateFinalFieldAndSetter1);
+
+  result = null;
+  Extension.staticLateFinalFieldAndSetter2 = 0;
+  expect(2, result);
+  throws(() => Extension.staticLateFinalFieldAndSetter2);
+
+  expect(1, Extension.staticMethodAndSetter1());
+
+  expect(1, Extension.staticMethodAndSetter2());
+}
+
+expect(expected, actual) {
+  if (expected != actual) throw 'Expected $expected, actual $actual';
+}
+
+throws(dynamic Function() f) {
+  try {
+    f();
+  } catch (e) {
+    print(e);
+    return;
+  }
+  throw 'Expected exception.';
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect
new file mode 100644
index 0000000..21ee0cd
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect
@@ -0,0 +1,164 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+  static method staticMethod = self::Extension|staticMethod;
+  static get staticGetter = get self::Extension|staticGetter;
+  static field staticField = self::Extension|staticField;
+  static field staticFieldAndSetter1 = self::Extension|staticFieldAndSetter1;
+  static field staticFieldAndSetter2 = self::Extension|staticFieldAndSetter2;
+  static field staticLateFinalFieldAndSetter1 = self::Extension|staticLateFinalFieldAndSetter1;
+  static field staticLateFinalFieldAndSetter2 = self::Extension|staticLateFinalFieldAndSetter2;
+  static field staticDuplicateFieldAndSetter = self::Extension|staticDuplicateFieldAndSetter;
+  static field staticFieldAndDuplicateSetter = self::Extension|staticFieldAndDuplicateSetter;
+  static field staticDuplicateFieldAndDuplicateSetter = self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
+  static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
+  static set staticSetter = set self::Extension|staticSetter;
+  static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
+  static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
+  static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
+  static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
+  static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
+  static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
+  static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static set staticMethodAndSetter1 = set self::Extension|staticMethodAndSetter1;
+  static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|staticField;
+static field core::int Extension|staticFieldAndSetter1;
+static field core::int Extension|staticFieldAndSetter2;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
+static final field core::int Extension|staticDuplicateFieldAndSetter;
+static final field core::int Extension|staticFieldAndDuplicateSetter;
+static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
+static method Extension|staticMethod() → core::int
+  ;
+static get Extension|staticGetter() → core::int
+  ;
+static set Extension|staticSetter(dynamic value) → void
+  ;
+static set Extension|staticFieldAndSetter1(core::int value) → void
+  ;
+static set Extension|staticFieldAndSetter2(core::int value) → void
+  ;
+static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void
+  ;
+static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void
+  ;
+static set Extension|staticDuplicateFieldAndSetter(core::int value) → void
+  ;
+static set Extension|staticFieldAndDuplicateSetter(core::int value) → void
+  ;
+static set Extension|staticDuplicateFieldAndDuplicateSetter(core::int value) → void
+  ;
+static method Extension|staticMethodAndSetter1() → core::int
+  ;
+static set Extension|staticMethodAndSetter1(core::int value) → void
+  ;
+static set Extension|staticMethodAndSetter2(core::int value) → void
+  ;
+static method Extension|staticMethodAndSetter2() → core::int
+  ;
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+  ;
+static method throws(() → dynamic f) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
new file mode 100644
index 0000000..f3a7da5
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
@@ -0,0 +1,310 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Extension.staticMethod();
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Extension.staticMethod)();
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Extension.staticGetter;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:13: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Extension.staticSetter = 0;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+//   Extension.staticSetter = 0;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField = 0;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+//   Extension.staticField = 0;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//                                           ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Extension.staticFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Extension.staticMethodAndSetter1 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Extension.staticMethodAndSetter2 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+  static method staticMethod = self::Extension|staticMethod;
+  static get staticGetter = get self::Extension|staticGetter;
+  static field staticField = self::Extension|staticField;
+  static field staticFieldAndSetter1 = self::Extension|staticFieldAndSetter1;
+  static field staticFieldAndSetter2 = self::Extension|staticFieldAndSetter2;
+  static field staticLateFinalFieldAndSetter1 = self::Extension|staticLateFinalFieldAndSetter1;
+  static field staticLateFinalFieldAndSetter2 = self::Extension|staticLateFinalFieldAndSetter2;
+  static field staticDuplicateFieldAndSetter = self::Extension|staticDuplicateFieldAndSetter;
+  static field staticFieldAndDuplicateSetter = self::Extension|staticFieldAndDuplicateSetter;
+  static field staticDuplicateFieldAndDuplicateSetter = self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
+  static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
+  static set staticSetter = set self::Extension|staticSetter;
+  static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
+  static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
+  static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
+  static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
+  static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
+  static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
+  static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static set staticMethodAndSetter1 = set self::Extension|staticMethodAndSetter1;
+  static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|staticField;
+static field core::int Extension|staticFieldAndSetter1 = 1;
+static field core::int Extension|staticFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
+static final field core::int Extension|staticDuplicateFieldAndSetter;
+static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
+static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
+static method Extension|staticMethod() → core::int
+  return 1;
+static get Extension|staticGetter() → core::int
+  return 1;
+static set Extension|staticSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set Extension|staticFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set Extension|staticFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method Extension|staticMethodAndSetter1() → core::int
+  return 1;
+static set Extension|staticMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method Extension|staticMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+  Extension.staticMethod();
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Extension.staticMethod)();
+             ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+  Extension.staticGetter;
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+  Extension.staticSetter = 0;
+                         ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+  Extension.staticField;
+            ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+  Extension.staticField = 0;
+                        ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndSetter = 0;
+                                          ^";
+  self::Extension|staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Extension.staticFieldAndDuplicateSetter = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndDuplicateSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+                                                   ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+  Extension.staticMethodAndSetter1 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+  Extension.staticMethodAndSetter2 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Extension|staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter2);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter2 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Extension|staticMethodAndSetter1());
+  self::expect(1, self::Extension|staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
new file mode 100644
index 0000000..f3a7da5
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.transformed.expect
@@ -0,0 +1,310 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Extension.staticMethod();
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Extension.staticMethod)();
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Extension.staticGetter;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:13: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Extension.staticSetter = 0;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+//   Extension.staticSetter = 0;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField = 0;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+//   Extension.staticField = 0;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//                                           ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Extension.staticFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Extension.staticMethodAndSetter1 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Extension.staticMethodAndSetter2 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+  static method staticMethod = self::Extension|staticMethod;
+  static get staticGetter = get self::Extension|staticGetter;
+  static field staticField = self::Extension|staticField;
+  static field staticFieldAndSetter1 = self::Extension|staticFieldAndSetter1;
+  static field staticFieldAndSetter2 = self::Extension|staticFieldAndSetter2;
+  static field staticLateFinalFieldAndSetter1 = self::Extension|staticLateFinalFieldAndSetter1;
+  static field staticLateFinalFieldAndSetter2 = self::Extension|staticLateFinalFieldAndSetter2;
+  static field staticDuplicateFieldAndSetter = self::Extension|staticDuplicateFieldAndSetter;
+  static field staticFieldAndDuplicateSetter = self::Extension|staticFieldAndDuplicateSetter;
+  static field staticDuplicateFieldAndDuplicateSetter = self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
+  static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
+  static set staticSetter = set self::Extension|staticSetter;
+  static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
+  static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
+  static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
+  static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
+  static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
+  static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
+  static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static set staticMethodAndSetter1 = set self::Extension|staticMethodAndSetter1;
+  static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|staticField;
+static field core::int Extension|staticFieldAndSetter1 = 1;
+static field core::int Extension|staticFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
+static final field core::int Extension|staticDuplicateFieldAndSetter;
+static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
+static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
+static method Extension|staticMethod() → core::int
+  return 1;
+static get Extension|staticGetter() → core::int
+  return 1;
+static set Extension|staticSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set Extension|staticFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set Extension|staticFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method Extension|staticMethodAndSetter1() → core::int
+  return 1;
+static set Extension|staticMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method Extension|staticMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+  Extension.staticMethod();
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Extension.staticMethod)();
+             ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+  Extension.staticGetter;
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+  Extension.staticSetter = 0;
+                         ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+  Extension.staticField;
+            ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+  Extension.staticField = 0;
+                        ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndSetter = 0;
+                                          ^";
+  self::Extension|staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Extension.staticFieldAndDuplicateSetter = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndDuplicateSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+                                                   ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+  Extension.staticMethodAndSetter1 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+  Extension.staticMethodAndSetter2 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Extension|staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter2);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter2 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Extension|staticMethodAndSetter1());
+  self::expect(1, self::Extension|staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline.expect
new file mode 100644
index 0000000..f6bcecd
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.textual_outline.expect
@@ -0,0 +1,39 @@
+var result;
+extension Extension on int {
+  static int staticMethod() => 1;
+  static int staticMethod() => 2;
+  static int get staticGetter => 1;
+  static int get staticGetter => 2;
+  static void set staticSetter(value) {}
+  static void set staticSetter(value) {}
+  static int staticField = 1;
+  static int staticField = 2;
+  static int staticFieldAndSetter1 = 1;
+  static void set staticFieldAndSetter1(int value) {}
+  static void set staticFieldAndSetter2(int value) {}
+  static int staticFieldAndSetter2 = 1;
+  static late ;
+  final int staticLateFinalFieldAndSetter1;
+  static void set staticLateFinalFieldAndSetter1(int value) {}
+  static void set staticLateFinalFieldAndSetter2(int value) {}
+  static late ;
+  final int staticLateFinalFieldAndSetter2;
+  static final int staticDuplicateFieldAndSetter = 1;
+  static final int staticDuplicateFieldAndSetter = 2;
+  static void set staticDuplicateFieldAndSetter(int value) {}
+  static final int staticFieldAndDuplicateSetter = 1;
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static void set staticFieldAndDuplicateSetter(int value) {}
+  static final int staticDuplicateFieldAndDuplicateSetter = 1;
+  static final int staticDuplicateFieldAndDuplicateSetter = 2;
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static void set staticDuplicateFieldAndDuplicateSetter(int value) {}
+  static int staticMethodAndSetter1() => 1;
+  static void set staticMethodAndSetter1(int value) {}
+  static void set staticMethodAndSetter2(int value) {}
+  static int staticMethodAndSetter2() => 1;
+}
+test() {}
+main() {}
+expect(expected, actual) {}
+throws(dynamic Function() f) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
new file mode 100644
index 0000000..f3a7da5
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
@@ -0,0 +1,310 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Extension.staticMethod();
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Extension.staticMethod)();
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Extension.staticGetter;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:13: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Extension.staticSetter = 0;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+//   Extension.staticSetter = 0;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField = 0;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+//   Extension.staticField = 0;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//                                           ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Extension.staticFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Extension.staticMethodAndSetter1 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Extension.staticMethodAndSetter2 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+  static method staticMethod = self::Extension|staticMethod;
+  static get staticGetter = get self::Extension|staticGetter;
+  static field staticField = self::Extension|staticField;
+  static field staticFieldAndSetter1 = self::Extension|staticFieldAndSetter1;
+  static field staticFieldAndSetter2 = self::Extension|staticFieldAndSetter2;
+  static field staticLateFinalFieldAndSetter1 = self::Extension|staticLateFinalFieldAndSetter1;
+  static field staticLateFinalFieldAndSetter2 = self::Extension|staticLateFinalFieldAndSetter2;
+  static field staticDuplicateFieldAndSetter = self::Extension|staticDuplicateFieldAndSetter;
+  static field staticFieldAndDuplicateSetter = self::Extension|staticFieldAndDuplicateSetter;
+  static field staticDuplicateFieldAndDuplicateSetter = self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
+  static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
+  static set staticSetter = set self::Extension|staticSetter;
+  static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
+  static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
+  static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
+  static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
+  static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
+  static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
+  static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static set staticMethodAndSetter1 = set self::Extension|staticMethodAndSetter1;
+  static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|staticField;
+static field core::int Extension|staticFieldAndSetter1 = 1;
+static field core::int Extension|staticFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
+static final field core::int Extension|staticDuplicateFieldAndSetter;
+static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
+static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
+static method Extension|staticMethod() → core::int
+  return 1;
+static get Extension|staticGetter() → core::int
+  return 1;
+static set Extension|staticSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set Extension|staticFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set Extension|staticFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method Extension|staticMethodAndSetter1() → core::int
+  return 1;
+static set Extension|staticMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method Extension|staticMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+  Extension.staticMethod();
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Extension.staticMethod)();
+             ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+  Extension.staticGetter;
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+  Extension.staticSetter = 0;
+                         ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+  Extension.staticField;
+            ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+  Extension.staticField = 0;
+                        ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndSetter = 0;
+                                          ^";
+  self::Extension|staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Extension.staticFieldAndDuplicateSetter = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndDuplicateSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+                                                   ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+  Extension.staticMethodAndSetter1 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+  Extension.staticMethodAndSetter2 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Extension|staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter2);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter2 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Extension|staticMethodAndSetter1());
+  self::expect(1, self::Extension|staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
new file mode 100644
index 0000000..f3a7da5
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.transformed.expect
@@ -0,0 +1,310 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:9:14: Error: 'staticMethod' is already declared in this scope.
+//   static int staticMethod() => 2;
+//              ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:8:14: Context: Previous declaration of 'staticMethod'.
+//   static int staticMethod() => 1;
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:12:18: Error: 'staticGetter' is already declared in this scope.
+//   static int get staticGetter => 2;
+//                  ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:11:18: Context: Previous declaration of 'staticGetter'.
+//   static int get staticGetter => 1;
+//                  ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:18:19: Error: 'staticSetter' is already declared in this scope.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:14:19: Context: Previous declaration of 'staticSetter'.
+//   static void set staticSetter(value) {
+//                   ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:23:14: Error: 'staticField' is already declared in this scope.
+//   static int staticField = 2;
+//              ^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:22:14: Context: Previous declaration of 'staticField'.
+//   static int staticField = 1;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:48:20: Error: 'staticDuplicateFieldAndSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:47:20: Context: Previous declaration of 'staticDuplicateFieldAndSetter'.
+//   static final int staticDuplicateFieldAndSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:58:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:54:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:63:20: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 2;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:62:20: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static final int staticDuplicateFieldAndDuplicateSetter = 1;
+//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:68:19: Error: 'staticDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:64:19: Context: Previous declaration of 'staticDuplicateFieldAndDuplicateSetter'.
+//   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+//   static void set staticFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:25:14: Error: Conflicts with setter 'staticFieldAndSetter1'.
+//   static int staticFieldAndSetter1 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+//   static void set staticFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:34:14: Error: Conflicts with setter 'staticFieldAndSetter2'.
+//   static int staticFieldAndSetter2 = 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
+//   static void set staticMethodAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:72:14: Error: Conflicts with setter 'staticMethodAndSetter1'.
+//   static int staticMethodAndSetter1() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:77:19: Error: Conflicts with member 'staticMethodAndSetter2'.
+//   static void set staticMethodAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:81:14: Error: Conflicts with setter 'staticMethodAndSetter2'.
+//   static int staticMethodAndSetter2() => 1;
+//              ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+//   Extension.staticMethod();
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+//   (Extension.staticMethod)();
+//              ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+//   Extension.staticGetter;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:13: Error: Can't use 'staticSetter' because it is declared more than once.
+//   Extension.staticSetter = 0;
+//             ^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+//   Extension.staticSetter = 0;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:13: Error: Can't use 'staticField' because it is declared more than once.
+//   Extension.staticField = 0;
+//             ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+//   Extension.staticField = 0;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndSetter = 0;
+//                                           ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+//   Extension.staticFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+//   Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+//                                                    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+//   Extension.staticMethodAndSetter1 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+//   Extension.staticMethodAndSetter2 = 0;
+//             ^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension Extension on core::int {
+  static method staticMethod = self::Extension|staticMethod;
+  static get staticGetter = get self::Extension|staticGetter;
+  static field staticField = self::Extension|staticField;
+  static field staticFieldAndSetter1 = self::Extension|staticFieldAndSetter1;
+  static field staticFieldAndSetter2 = self::Extension|staticFieldAndSetter2;
+  static field staticLateFinalFieldAndSetter1 = self::Extension|staticLateFinalFieldAndSetter1;
+  static field staticLateFinalFieldAndSetter2 = self::Extension|staticLateFinalFieldAndSetter2;
+  static field staticDuplicateFieldAndSetter = self::Extension|staticDuplicateFieldAndSetter;
+  static field staticFieldAndDuplicateSetter = self::Extension|staticFieldAndDuplicateSetter;
+  static field staticDuplicateFieldAndDuplicateSetter = self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static method staticMethodAndSetter1 = self::Extension|staticMethodAndSetter1;
+  static method staticMethodAndSetter2 = self::Extension|staticMethodAndSetter2;
+  static set staticSetter = set self::Extension|staticSetter;
+  static set staticFieldAndSetter1 = set self::Extension|staticFieldAndSetter1;
+  static set staticFieldAndSetter2 = set self::Extension|staticFieldAndSetter2;
+  static set staticLateFinalFieldAndSetter1 = set self::Extension|staticLateFinalFieldAndSetter1;
+  static set staticLateFinalFieldAndSetter2 = set self::Extension|staticLateFinalFieldAndSetter2;
+  static set staticDuplicateFieldAndSetter = set self::Extension|staticDuplicateFieldAndSetter;
+  static set staticFieldAndDuplicateSetter = set self::Extension|staticFieldAndDuplicateSetter;
+  static set staticDuplicateFieldAndDuplicateSetter = set self::Extension|staticDuplicateFieldAndDuplicateSetter;
+  static set staticMethodAndSetter1 = set self::Extension|staticMethodAndSetter1;
+  static set staticMethodAndSetter2 = set self::Extension|staticMethodAndSetter2;
+}
+static field dynamic result;
+static field core::int Extension|staticField;
+static field core::int Extension|staticFieldAndSetter1 = 1;
+static field core::int Extension|staticFieldAndSetter2 = 1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter1;
+late static final [setter] field core::int Extension|staticLateFinalFieldAndSetter2;
+static final field core::int Extension|staticDuplicateFieldAndSetter;
+static final field core::int Extension|staticFieldAndDuplicateSetter = 1;
+static final field core::int Extension|staticDuplicateFieldAndDuplicateSetter;
+static method Extension|staticMethod() → core::int
+  return 1;
+static get Extension|staticGetter() → core::int
+  return 1;
+static set Extension|staticSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set Extension|staticFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set Extension|staticFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method Extension|staticMethodAndSetter1() → core::int
+  return 1;
+static set Extension|staticMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set Extension|staticMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method Extension|staticMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:85:13: Error: Can't use 'staticMethod' because it is declared more than once.
+  Extension.staticMethod();
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:86:14: Error: Can't use 'staticMethod' because it is declared more than once.
+  (Extension.staticMethod)();
+             ^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:87:13: Error: Can't use 'staticGetter' because it is declared more than once.
+  Extension.staticGetter;
+            ^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:88:26: Error: Can't assign to this.
+  Extension.staticSetter = 0;
+                         ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:89:13: Error: Can't use 'staticField' because it is declared more than once.
+  Extension.staticField;
+            ^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:90:25: Error: Can't assign to this.
+  Extension.staticField = 0;
+                        ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:91:13: Error: Can't use 'staticDuplicateFieldAndSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:92:43: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndSetter = 0;
+                                          ^";
+  self::Extension|staticFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:94:13: Error: Setter not found: 'staticFieldAndDuplicateSetter'.
+  Extension.staticFieldAndDuplicateSetter = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:95:13: Error: Can't use 'staticDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  Extension.staticDuplicateFieldAndDuplicateSetter;
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:96:52: Error: Can't assign to this.
+  Extension.staticDuplicateFieldAndDuplicateSetter = 0;
+                                                   ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:97:13: Error: Setter not found: 'staticMethodAndSetter1'.
+  Extension.staticMethodAndSetter1 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:98:13: Error: Setter not found: 'staticMethodAndSetter2'.
+  Extension.staticMethodAndSetter2 = 0;
+            ^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::Extension|staticFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticFieldAndSetter2);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter1);
+  self::result = null;
+  self::Extension|staticLateFinalFieldAndSetter2 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::Extension|staticLateFinalFieldAndSetter2);
+  self::expect(1, self::Extension|staticMethodAndSetter1());
+  self::expect(1, self::Extension|staticMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
new file mode 100644
index 0000000..f66cc15
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
@@ -0,0 +1,137 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+var result;
+
+int topLevelMethod() => 1;
+int topLevelMethod() => 2;
+
+int get topLevelGetter => 1;
+int get topLevelGetter => 2;
+
+void set topLevelSetter(value) {
+  result = 1;
+}
+
+void set topLevelSetter(value) {
+  result = 2;
+}
+
+int topLevelField = 1;
+int topLevelField = 2;
+
+int topLevelFieldAndSetter1 = 1;
+void set topLevelFieldAndSetter1(int value) {
+  result = 2;
+}
+
+void set topLevelFieldAndSetter2(int value) {
+  result = 2;
+}
+
+int topLevelFieldAndSetter2 = 1;
+
+late final int topLevelLateFinalFieldAndSetter1;
+void set topLevelLateFinalFieldAndSetter1(int value) {
+  result = 2;
+}
+
+void set topLevelLateFinalFieldAndSetter2(int value) {
+  result = 2;
+}
+
+late final int topLevelLateFinalFieldAndSetter2;
+
+final int topLevelDuplicateFieldAndSetter = 1;
+final int topLevelDuplicateFieldAndSetter = 2;
+void set topLevelDuplicateFieldAndSetter(int value) {
+  result = 3;
+}
+
+final int topLevelFieldAndDuplicateSetter = 1;
+void set topLevelFieldAndDuplicateSetter(int value) {
+  result = 2;
+}
+
+void set topLevelFieldAndDuplicateSetter(int value) {
+  result = 3;
+}
+
+final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+  result = 3;
+}
+
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+  result = 4;
+}
+
+int topLevelMethodAndSetter1() => 1;
+void set topLevelMethodAndSetter1(int value) {
+  result = 2;
+}
+
+void set topLevelMethodAndSetter2(int value) {
+  result = 2;
+}
+
+int topLevelMethodAndSetter2() => 1;
+
+test() {
+  topLevelMethod();
+  (topLevelMethod)();
+  topLevelGetter;
+  topLevelSetter = 0;
+  topLevelField;
+  topLevelField = 0;
+  topLevelDuplicateFieldAndSetter;
+  topLevelDuplicateFieldAndSetter = 0;
+  topLevelFieldAndDuplicateSetter;
+  topLevelFieldAndDuplicateSetter = 0;
+  topLevelDuplicateFieldAndDuplicateSetter;
+  topLevelDuplicateFieldAndDuplicateSetter = 0;
+  topLevelMethodAndSetter1 = 0;
+  topLevelMethodAndSetter2 = 0;
+}
+
+main() {
+  result = null;
+  topLevelFieldAndSetter1 = 0;
+  expect(null, result);
+  expect(0, topLevelFieldAndSetter1);
+
+  result = null;
+  topLevelFieldAndSetter2 = 0;
+  expect(null, result);
+  expect(0, topLevelFieldAndSetter2);
+
+  result = null;
+  topLevelLateFinalFieldAndSetter1 = 0;
+  expect(2, result);
+  throws(() => topLevelLateFinalFieldAndSetter1);
+
+  result = null;
+  topLevelLateFinalFieldAndSetter2 = 0;
+  expect(null, result);
+  expect(0, topLevelLateFinalFieldAndSetter2);
+
+  expect(1, topLevelMethodAndSetter1());
+
+  expect(1, topLevelMethodAndSetter2());
+}
+
+expect(expected, actual) {
+  if (expected != actual) throw 'Expected $expected, actual $actual';
+}
+
+throws(dynamic Function() f) {
+  try {
+    f();
+  } catch (e) {
+    print(e);
+    return;
+  }
+  throw 'Expected exception.';
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
new file mode 100644
index 0000000..c394d09
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
@@ -0,0 +1,131 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:8:5: Error: 'topLevelMethod' is already declared in this scope.
+// int topLevelMethod() => 2;
+//     ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:7:5: Context: Previous declaration of 'topLevelMethod'.
+// int topLevelMethod() => 1;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:11:9: Error: 'topLevelGetter' is already declared in this scope.
+// int get topLevelGetter => 2;
+//         ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:10:9: Context: Previous declaration of 'topLevelGetter'.
+// int get topLevelGetter => 1;
+//         ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:17:10: Error: 'topLevelSetter' is already declared in this scope.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:13:10: Context: Previous declaration of 'topLevelSetter'.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:22:5: Error: 'topLevelField' is already declared in this scope.
+// int topLevelField = 2;
+//     ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:21:5: Context: Previous declaration of 'topLevelField'.
+// int topLevelField = 1;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:47:11: Error: 'topLevelDuplicateFieldAndSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:46:11: Context: Previous declaration of 'topLevelDuplicateFieldAndSetter'.
+// final int topLevelDuplicateFieldAndSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:57:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:53:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:62:11: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:61:11: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:67:10: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:63:10: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// void set topLevelFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:24:5: Error: Conflicts with setter 'topLevelFieldAndSetter1'.
+// int topLevelFieldAndSetter1 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// void set topLevelFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:33:5: Error: Conflicts with setter 'topLevelFieldAndSetter2'.
+// int topLevelFieldAndSetter2 = 1;
+//     ^
+//
+import self as self;
+import "dart:core" as core;
+
+static field dynamic result;
+static field core::int topLevelField;
+static field core::int topLevelFieldAndSetter1;
+static field core::int topLevelFieldAndSetter2;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
+static final field core::int topLevelDuplicateFieldAndSetter;
+static final field core::int topLevelFieldAndDuplicateSetter;
+static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static const field dynamic _exports# = "{\"topLevelSetter\":\"'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelDuplicateFieldAndDuplicateSetter\":\"'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\"}" /*isLegacy, from null */;
+static method topLevelMethod() → core::int
+  ;
+static get topLevelGetter() → core::int
+  ;
+static set topLevelSetter(dynamic value) → void
+  ;
+static set topLevelFieldAndSetter1(core::int value) → void
+  ;
+static set topLevelFieldAndSetter2(core::int value) → void
+  ;
+static set topLevelLateFinalFieldAndSetter1(core::int value) → void
+  ;
+static set topLevelLateFinalFieldAndSetter2(core::int value) → void
+  ;
+static set topLevelDuplicateFieldAndSetter(core::int value) → void
+  ;
+static set topLevelFieldAndDuplicateSetter(core::int value) → void
+  ;
+static set topLevelDuplicateFieldAndDuplicateSetter(core::int value) → void
+  ;
+static method topLevelMethodAndSetter1() → core::int
+  ;
+static set topLevelMethodAndSetter1(core::int value) → void
+  ;
+static set topLevelMethodAndSetter2(core::int value) → void
+  ;
+static method topLevelMethodAndSetter2() → core::int
+  ;
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
+static method expect(dynamic expected, dynamic actual) → dynamic
+  ;
+static method throws(() → dynamic f) → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
new file mode 100644
index 0000000..c79ae01
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
@@ -0,0 +1,265 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:8:5: Error: 'topLevelMethod' is already declared in this scope.
+// int topLevelMethod() => 2;
+//     ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:7:5: Context: Previous declaration of 'topLevelMethod'.
+// int topLevelMethod() => 1;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:11:9: Error: 'topLevelGetter' is already declared in this scope.
+// int get topLevelGetter => 2;
+//         ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:10:9: Context: Previous declaration of 'topLevelGetter'.
+// int get topLevelGetter => 1;
+//         ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:17:10: Error: 'topLevelSetter' is already declared in this scope.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:13:10: Context: Previous declaration of 'topLevelSetter'.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:22:5: Error: 'topLevelField' is already declared in this scope.
+// int topLevelField = 2;
+//     ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:21:5: Context: Previous declaration of 'topLevelField'.
+// int topLevelField = 1;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:47:11: Error: 'topLevelDuplicateFieldAndSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:46:11: Context: Previous declaration of 'topLevelDuplicateFieldAndSetter'.
+// final int topLevelDuplicateFieldAndSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:57:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:53:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:62:11: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:61:11: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:67:10: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:63:10: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// void set topLevelFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:24:5: Error: Conflicts with setter 'topLevelFieldAndSetter1'.
+// int topLevelFieldAndSetter1 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// void set topLevelFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:33:5: Error: Conflicts with setter 'topLevelFieldAndSetter2'.
+// int topLevelFieldAndSetter2 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   (topLevelMethod)();
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+//   topLevelGetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+//   topLevelSetter = 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+//   topLevelField;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+//   topLevelField = 0;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndSetter = 0;
+//                                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+//   topLevelFieldAndDuplicateSetter = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndDuplicateSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndDuplicateSetter = 0;
+//                                            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+//   topLevelMethodAndSetter1 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+//   topLevelMethodAndSetter2 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static field dynamic result;
+static field core::int topLevelField;
+static field core::int topLevelFieldAndSetter1 = 1;
+static field core::int topLevelFieldAndSetter2 = 1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
+static final field core::int topLevelDuplicateFieldAndSetter;
+static final field core::int topLevelFieldAndDuplicateSetter = 1;
+static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethod() → core::int
+  return 1;
+static get topLevelGetter() → core::int
+  return 1;
+static set topLevelSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set topLevelFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set topLevelFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method topLevelMethodAndSetter1() → core::int
+  return 1;
+static set topLevelMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method topLevelMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod();
+  ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  (topLevelMethod)();
+   ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  topLevelGetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  topLevelSetter = 0;
+                 ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  topLevelField;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  topLevelField = 0;
+                ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  topLevelDuplicateFieldAndSetter = 0;
+                                  ^";
+  self::topLevelFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  topLevelFieldAndDuplicateSetter = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndDuplicateSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  topLevelDuplicateFieldAndDuplicateSetter = 0;
+                                           ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  topLevelMethodAndSetter1 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  topLevelMethodAndSetter2 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::topLevelFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter1);
+  self::result = null;
+  self::topLevelFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter2);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter1 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter2);
+  self::expect(1, self::topLevelMethodAndSetter1());
+  self::expect(1, self::topLevelMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
+
+constants  {
+  #C1 = "{\"topLevelSetter\":\"'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelDuplicateFieldAndDuplicateSetter\":\"'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
new file mode 100644
index 0000000..c79ae01
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
@@ -0,0 +1,265 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:8:5: Error: 'topLevelMethod' is already declared in this scope.
+// int topLevelMethod() => 2;
+//     ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:7:5: Context: Previous declaration of 'topLevelMethod'.
+// int topLevelMethod() => 1;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:11:9: Error: 'topLevelGetter' is already declared in this scope.
+// int get topLevelGetter => 2;
+//         ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:10:9: Context: Previous declaration of 'topLevelGetter'.
+// int get topLevelGetter => 1;
+//         ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:17:10: Error: 'topLevelSetter' is already declared in this scope.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:13:10: Context: Previous declaration of 'topLevelSetter'.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:22:5: Error: 'topLevelField' is already declared in this scope.
+// int topLevelField = 2;
+//     ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:21:5: Context: Previous declaration of 'topLevelField'.
+// int topLevelField = 1;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:47:11: Error: 'topLevelDuplicateFieldAndSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:46:11: Context: Previous declaration of 'topLevelDuplicateFieldAndSetter'.
+// final int topLevelDuplicateFieldAndSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:57:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:53:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:62:11: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:61:11: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:67:10: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:63:10: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// void set topLevelFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:24:5: Error: Conflicts with setter 'topLevelFieldAndSetter1'.
+// int topLevelFieldAndSetter1 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// void set topLevelFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:33:5: Error: Conflicts with setter 'topLevelFieldAndSetter2'.
+// int topLevelFieldAndSetter2 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   (topLevelMethod)();
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+//   topLevelGetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+//   topLevelSetter = 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+//   topLevelField;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+//   topLevelField = 0;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndSetter = 0;
+//                                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+//   topLevelFieldAndDuplicateSetter = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndDuplicateSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndDuplicateSetter = 0;
+//                                            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+//   topLevelMethodAndSetter1 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+//   topLevelMethodAndSetter2 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static field dynamic result;
+static field core::int topLevelField;
+static field core::int topLevelFieldAndSetter1 = 1;
+static field core::int topLevelFieldAndSetter2 = 1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
+static final field core::int topLevelDuplicateFieldAndSetter;
+static final field core::int topLevelFieldAndDuplicateSetter = 1;
+static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethod() → core::int
+  return 1;
+static get topLevelGetter() → core::int
+  return 1;
+static set topLevelSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set topLevelFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set topLevelFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method topLevelMethodAndSetter1() → core::int
+  return 1;
+static set topLevelMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method topLevelMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod();
+  ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  (topLevelMethod)();
+   ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  topLevelGetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  topLevelSetter = 0;
+                 ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  topLevelField;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  topLevelField = 0;
+                ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  topLevelDuplicateFieldAndSetter = 0;
+                                  ^";
+  self::topLevelFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  topLevelFieldAndDuplicateSetter = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndDuplicateSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  topLevelDuplicateFieldAndDuplicateSetter = 0;
+                                           ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  topLevelMethodAndSetter1 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  topLevelMethodAndSetter2 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::topLevelFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter1);
+  self::result = null;
+  self::topLevelFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter2);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter1 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter2);
+  self::expect(1, self::topLevelMethodAndSetter1());
+  self::expect(1, self::topLevelMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
+
+constants  {
+  #C1 = "{\"topLevelSetter\":\"'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelDuplicateFieldAndDuplicateSetter\":\"'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
new file mode 100644
index 0000000..20b935d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline.expect
@@ -0,0 +1,35 @@
+var result;
+int topLevelMethod() => 1;
+int topLevelMethod() => 2;
+int get topLevelGetter => 1;
+int get topLevelGetter => 2;
+void set topLevelSetter(value) {}
+void set topLevelSetter(value) {}
+int topLevelField = 1;
+int topLevelField = 2;
+int topLevelFieldAndSetter1 = 1;
+void set topLevelFieldAndSetter1(int value) {}
+void set topLevelFieldAndSetter2(int value) {}
+int topLevelFieldAndSetter2 = 1;
+late final int topLevelLateFinalFieldAndSetter1;
+void set topLevelLateFinalFieldAndSetter1(int value) {}
+void set topLevelLateFinalFieldAndSetter2(int value) {}
+late final int topLevelLateFinalFieldAndSetter2;
+final int topLevelDuplicateFieldAndSetter = 1;
+final int topLevelDuplicateFieldAndSetter = 2;
+void set topLevelDuplicateFieldAndSetter(int value) {}
+final int topLevelFieldAndDuplicateSetter = 1;
+void set topLevelFieldAndDuplicateSetter(int value) {}
+void set topLevelFieldAndDuplicateSetter(int value) {}
+final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
+int topLevelMethodAndSetter1() => 1;
+void set topLevelMethodAndSetter1(int value) {}
+void set topLevelMethodAndSetter2(int value) {}
+int topLevelMethodAndSetter2() => 1;
+test() {}
+main() {}
+expect(expected, actual) {}
+throws(dynamic Function() f) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..bb9a9a2
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.textual_outline_modelled.expect
@@ -0,0 +1,41 @@
+expect(expected, actual) {}
+final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+final int topLevelDuplicateFieldAndSetter = 1;
+final int topLevelDuplicateFieldAndSetter = 2;
+final int topLevelFieldAndDuplicateSetter = 1;
+final int topLevelLateFinalFieldAndSetter1;
+final int topLevelLateFinalFieldAndSetter2;
+int get topLevelGetter => 1;
+int get topLevelGetter => 2;
+int topLevelField = 1;
+int topLevelField = 2;
+int topLevelFieldAndSetter1 = 1;
+int topLevelFieldAndSetter2 = 1;
+int topLevelMethod() => 1;
+int topLevelMethod() => 2;
+void set topLevelLateFinalFieldAndSetter1(int value) {}
+void set topLevelLateFinalFieldAndSetter2(int value) {}
+---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+throws(dynamic Function() f) {}
+var result;
+void set topLevelDuplicateFieldAndSetter(int value) {}
+void set topLevelFieldAndDuplicateSetter(int value) {}
+void set topLevelFieldAndDuplicateSetter(int value) {}
+void set topLevelFieldAndSetter1(int value) {}
+void set topLevelFieldAndSetter2(int value) {}
+---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+int topLevelMethodAndSetter1() => 1;
+int topLevelMethodAndSetter2() => 1;
+main() {}
+test() {}
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
+void set topLevelDuplicateFieldAndDuplicateSetter(int value) {}
+void set topLevelMethodAndSetter1(int value) {}
+void set topLevelMethodAndSetter2(int value) {}
+void set topLevelSetter(value) {}
+void set topLevelSetter(value) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
new file mode 100644
index 0000000..c79ae01
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
@@ -0,0 +1,265 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:8:5: Error: 'topLevelMethod' is already declared in this scope.
+// int topLevelMethod() => 2;
+//     ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:7:5: Context: Previous declaration of 'topLevelMethod'.
+// int topLevelMethod() => 1;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:11:9: Error: 'topLevelGetter' is already declared in this scope.
+// int get topLevelGetter => 2;
+//         ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:10:9: Context: Previous declaration of 'topLevelGetter'.
+// int get topLevelGetter => 1;
+//         ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:17:10: Error: 'topLevelSetter' is already declared in this scope.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:13:10: Context: Previous declaration of 'topLevelSetter'.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:22:5: Error: 'topLevelField' is already declared in this scope.
+// int topLevelField = 2;
+//     ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:21:5: Context: Previous declaration of 'topLevelField'.
+// int topLevelField = 1;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:47:11: Error: 'topLevelDuplicateFieldAndSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:46:11: Context: Previous declaration of 'topLevelDuplicateFieldAndSetter'.
+// final int topLevelDuplicateFieldAndSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:57:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:53:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:62:11: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:61:11: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:67:10: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:63:10: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// void set topLevelFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:24:5: Error: Conflicts with setter 'topLevelFieldAndSetter1'.
+// int topLevelFieldAndSetter1 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// void set topLevelFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:33:5: Error: Conflicts with setter 'topLevelFieldAndSetter2'.
+// int topLevelFieldAndSetter2 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   (topLevelMethod)();
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+//   topLevelGetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+//   topLevelSetter = 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+//   topLevelField;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+//   topLevelField = 0;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndSetter = 0;
+//                                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+//   topLevelFieldAndDuplicateSetter = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndDuplicateSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndDuplicateSetter = 0;
+//                                            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+//   topLevelMethodAndSetter1 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+//   topLevelMethodAndSetter2 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static field dynamic result;
+static field core::int topLevelField;
+static field core::int topLevelFieldAndSetter1 = 1;
+static field core::int topLevelFieldAndSetter2 = 1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
+static final field core::int topLevelDuplicateFieldAndSetter;
+static final field core::int topLevelFieldAndDuplicateSetter = 1;
+static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethod() → core::int
+  return 1;
+static get topLevelGetter() → core::int
+  return 1;
+static set topLevelSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set topLevelFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set topLevelFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method topLevelMethodAndSetter1() → core::int
+  return 1;
+static set topLevelMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method topLevelMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod();
+  ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  (topLevelMethod)();
+   ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  topLevelGetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  topLevelSetter = 0;
+                 ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  topLevelField;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  topLevelField = 0;
+                ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  topLevelDuplicateFieldAndSetter = 0;
+                                  ^";
+  self::topLevelFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  topLevelFieldAndDuplicateSetter = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndDuplicateSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  topLevelDuplicateFieldAndDuplicateSetter = 0;
+                                           ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  topLevelMethodAndSetter1 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  topLevelMethodAndSetter2 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::topLevelFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter1);
+  self::result = null;
+  self::topLevelFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter2);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter1 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter2);
+  self::expect(1, self::topLevelMethodAndSetter1());
+  self::expect(1, self::topLevelMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
+
+constants  {
+  #C1 = "{\"topLevelSetter\":\"'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelDuplicateFieldAndDuplicateSetter\":\"'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
new file mode 100644
index 0000000..c79ae01
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
@@ -0,0 +1,265 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:8:5: Error: 'topLevelMethod' is already declared in this scope.
+// int topLevelMethod() => 2;
+//     ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:7:5: Context: Previous declaration of 'topLevelMethod'.
+// int topLevelMethod() => 1;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:11:9: Error: 'topLevelGetter' is already declared in this scope.
+// int get topLevelGetter => 2;
+//         ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:10:9: Context: Previous declaration of 'topLevelGetter'.
+// int get topLevelGetter => 1;
+//         ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:17:10: Error: 'topLevelSetter' is already declared in this scope.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:13:10: Context: Previous declaration of 'topLevelSetter'.
+// void set topLevelSetter(value) {
+//          ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:22:5: Error: 'topLevelField' is already declared in this scope.
+// int topLevelField = 2;
+//     ^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:21:5: Context: Previous declaration of 'topLevelField'.
+// int topLevelField = 1;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:47:11: Error: 'topLevelDuplicateFieldAndSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:46:11: Context: Previous declaration of 'topLevelDuplicateFieldAndSetter'.
+// final int topLevelDuplicateFieldAndSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:57:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:53:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:62:11: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 2;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:61:11: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// final int topLevelDuplicateFieldAndDuplicateSetter = 1;
+//           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:67:10: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:63:10: Context: Previous declaration of 'topLevelDuplicateFieldAndDuplicateSetter'.
+// void set topLevelDuplicateFieldAndDuplicateSetter(int value) {
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart: Error: 'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with member 'topLevelFieldAndSetter1'.
+// void set topLevelFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:24:5: Error: Conflicts with setter 'topLevelFieldAndSetter1'.
+// int topLevelFieldAndSetter1 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// void set topLevelFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:33:5: Error: Conflicts with setter 'topLevelFieldAndSetter2'.
+// int topLevelFieldAndSetter2 = 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   topLevelMethod();
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+//   (topLevelMethod)();
+//    ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+//   topLevelGetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+//   topLevelSetter = 0;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+//   topLevelField;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+//   topLevelField = 0;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndSetter = 0;
+//                                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+//   topLevelFieldAndDuplicateSetter = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+//   topLevelDuplicateFieldAndDuplicateSetter;
+//   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+//   topLevelDuplicateFieldAndDuplicateSetter = 0;
+//                                            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+//   topLevelMethodAndSetter1 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+//   topLevelMethodAndSetter2 = 0;
+//   ^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+static field dynamic result;
+static field core::int topLevelField;
+static field core::int topLevelFieldAndSetter1 = 1;
+static field core::int topLevelFieldAndSetter2 = 1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter1;
+late static final [setter] field core::int topLevelLateFinalFieldAndSetter2;
+static final field core::int topLevelDuplicateFieldAndSetter;
+static final field core::int topLevelFieldAndDuplicateSetter = 1;
+static final field core::int topLevelDuplicateFieldAndDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethod() → core::int
+  return 1;
+static get topLevelGetter() → core::int
+  return 1;
+static set topLevelSetter(dynamic value) → void {
+  self::result = 1;
+}
+static set topLevelFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelLateFinalFieldAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndSetter(core::int value) → void {
+  self::result = 3;
+}
+static set topLevelFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelDuplicateFieldAndDuplicateSetter(core::int value) → void {
+  self::result = 3;
+}
+static method topLevelMethodAndSetter1() → core::int
+  return 1;
+static set topLevelMethodAndSetter1(core::int value) → void {
+  self::result = 2;
+}
+static set topLevelMethodAndSetter2(core::int value) → void {
+  self::result = 2;
+}
+static method topLevelMethodAndSetter2() → core::int
+  return 1;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  topLevelMethod();
+  ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:84:4: Error: Can't use 'topLevelMethod' because it is declared more than once.
+  (topLevelMethod)();
+   ^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:85:3: Error: Can't use 'topLevelGetter' because it is declared more than once.
+  topLevelGetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:86:18: Error: Can't assign to this.
+  topLevelSetter = 0;
+                 ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:87:3: Error: Can't use 'topLevelField' because it is declared more than once.
+  topLevelField;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:88:17: Error: Can't assign to this.
+  topLevelField = 0;
+                ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:89:3: Error: Can't use 'topLevelDuplicateFieldAndSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:90:35: Error: Can't assign to this.
+  topLevelDuplicateFieldAndSetter = 0;
+                                  ^";
+  self::topLevelFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:92:3: Error: Setter not found: 'topLevelFieldAndDuplicateSetter'.
+  topLevelFieldAndDuplicateSetter = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:93:3: Error: Can't use 'topLevelDuplicateFieldAndDuplicateSetter' because it is declared more than once.
+  topLevelDuplicateFieldAndDuplicateSetter;
+  ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:94:44: Error: Can't assign to this.
+  topLevelDuplicateFieldAndDuplicateSetter = 0;
+                                           ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:95:3: Error: Setter not found: 'topLevelMethodAndSetter1'.
+  topLevelMethodAndSetter1 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:96:3: Error: Setter not found: 'topLevelMethodAndSetter2'.
+  topLevelMethodAndSetter2 = 0;
+  ^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  self::result = null;
+  self::topLevelFieldAndSetter1 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter1);
+  self::result = null;
+  self::topLevelFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelFieldAndSetter2);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter1 = 0;
+  self::expect(2, self::result);
+  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::result = null;
+  self::topLevelLateFinalFieldAndSetter2 = 0;
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter2);
+  self::expect(1, self::topLevelMethodAndSetter1());
+  self::expect(1, self::topLevelMethodAndSetter2());
+}
+static method expect(dynamic expected, dynamic actual) → dynamic {
+  if(!expected.{core::Object::==}(actual))
+    throw "Expected ${expected}, actual ${actual}";
+}
+static method throws(() → dynamic f) → dynamic {
+  try {
+    f.call();
+  }
+  on core::Object catch(final core::Object e) {
+    core::print(e);
+    return;
+  }
+  throw "Expected exception.";
+}
+
+constants  {
+  #C1 = "{\"topLevelSetter\":\"'topLevelSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\",\"topLevelDuplicateFieldAndDuplicateSetter\":\"'topLevelDuplicateFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart' and 'pkg/front_end/testcases/nnbd/duplicates_toplevel.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart b/pkg/front_end/testcases/nnbd/field_vs_setter.dart
new file mode 100644
index 0000000..c310b47
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart
@@ -0,0 +1,84 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+int? topLevelFieldAndSetter;
+void set topLevelFieldAndSetter(int? value) {}
+
+late final int? topLevelLateFinalFieldAndSetter;
+void set topLevelLateFinalFieldAndSetter(int? value) {}
+
+class Class {
+  int? instanceFieldAndSetter;
+  void set instanceFieldAndSetter(int? value) {}
+
+  late final int? instanceLateFinalFieldAndSetter;
+  void set instanceLateFinalFieldAndSetter(int? value) {}
+
+  static int? staticFieldAndSetter;
+  static void set staticFieldAndSetter(int? value) {}
+
+  static late final int? staticLateFinalFieldAndSetter;
+  static void set staticLateFinalFieldAndSetter(int? value) {}
+
+  static int? staticFieldAndInstanceSetter;
+  void set staticFieldAndInstanceSetter(int? value) {}
+
+  int? instanceFieldAndStaticSetter;
+  static void set instanceFieldAndStaticSetter(int? value) {}
+}
+
+extension Extension on int? {
+  int? extensionInstanceFieldAndSetter;
+  void set extensionInstanceFieldAndSetter(int? value) {}
+
+  static int? extensionStaticFieldAndSetter;
+  static void set extensionStaticFieldAndSetter(int? value) {}
+
+  static late final int? extensionStaticLateFinalFieldAndSetter;
+  static void set extensionStaticFieldAndSetter(int? value) {}
+
+  static int? extensionStaticFieldAndInstanceSetter;
+  void set extensionStaticFieldAndInstanceSetter(int? value) {}
+
+  int? extensionInstanceFieldAndStaticSetter;
+  static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+}
+
+test() {
+  topLevelFieldAndSetter = topLevelFieldAndSetter;
+  topLevelLateFinalFieldAndSetter = topLevelLateFinalFieldAndSetter;
+
+  var c = new Class();
+
+  c.instanceFieldAndSetter = c.instanceFieldAndSetter;
+  c.instanceLateFinalFieldAndSetter = c.instanceLateFinalFieldAndSetter;
+
+  Class.staticFieldAndSetter = Class.staticFieldAndSetter;
+  Class.staticLateFinalFieldAndSetter = Class.staticLateFinalFieldAndSetter;
+
+  c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
+  Class.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
+
+  Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+  c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+
+  Extension.extensionStaticFieldAndSetter =
+      Extension.extensionStaticFieldAndSetter;
+  Extension.extensionStaticLateFinalFieldAndSetter =
+      Extension.extensionStaticLateFinalFieldAndSetter;
+
+  0.extensionStaticFieldAndInstanceSetter =
+      Extension.extensionStaticFieldAndInstanceSetter;
+  Extension.extensionStaticFieldAndInstanceSetter =
+      Extension.extensionStaticFieldAndInstanceSetter;
+
+  Extension.extensionInstanceFieldAndStaticSetter =
+      0.extensionInstanceFieldAndStaticSetter;
+  0.extensionInstanceFieldAndStaticSetter =
+      0.extensionInstanceFieldAndStaticSetter;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect
new file mode 100644
index 0000000..b5f626d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect
@@ -0,0 +1,166 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+//   int? instanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// void set topLevelFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:5:6: Error: Conflicts with setter 'topLevelFieldAndSetter'.
+// int? topLevelFieldAndSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
+//   static int? staticFieldAndInstanceSetter;
+//               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
+//   int? instanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int? instanceFieldAndSetter;
+  late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndSetter;
+  late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndInstanceSetter;
+  field core::int? instanceFieldAndStaticSetter;
+  synthetic constructor •() → self::Class
+    ;
+  set instanceFieldAndSetter(core::int? value) → void
+    ;
+  set instanceLateFinalFieldAndSetter(core::int? value) → void
+    ;
+  static set staticFieldAndSetter(core::int? value) → void
+    ;
+  static set staticLateFinalFieldAndSetter(core::int? value) → void
+    ;
+  set staticFieldAndInstanceSetter(core::int? value) → void
+    ;
+  static set instanceFieldAndStaticSetter(core::int? value) → void
+    ;
+}
+extension Extension on core::int? {
+  field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+  static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
+  set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
+  static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
+  set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
+  static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+}
+static field core::int? topLevelFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
+static set topLevelFieldAndSetter(core::int? value) → void
+  ;
+static set topLevelLateFinalFieldAndSetter(core::int? value) → void
+  ;
+static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void
+  ;
+static set Extension|extensionStaticFieldAndSetter(core::int? value) → void
+  ;
+static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void
+  ;
+static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void
+  ;
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
new file mode 100644
index 0000000..3ac89ba
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
@@ -0,0 +1,211 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+//   int? instanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// void set topLevelFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:5:6: Error: Conflicts with setter 'topLevelFieldAndSetter'.
+// int? topLevelFieldAndSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
+//   static int? staticFieldAndInstanceSetter;
+//               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
+//   int? instanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+//   c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+//                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+//   0.extensionInstanceFieldAndStaticSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int? instanceFieldAndSetter = null;
+  late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndSetter = null;
+  late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndInstanceSetter = null;
+  field core::int? instanceFieldAndStaticSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  set instanceFieldAndSetter(core::int? value) → void {}
+  set instanceLateFinalFieldAndSetter(core::int? value) → void {}
+  static set staticFieldAndSetter(core::int? value) → void {}
+  static set staticLateFinalFieldAndSetter(core::int? value) → void {}
+  set staticFieldAndInstanceSetter(core::int? value) → void {}
+  static set instanceFieldAndStaticSetter(core::int? value) → void {}
+}
+extension Extension on core::int? {
+  field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+  static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
+  set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
+  static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
+  set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
+  static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+}
+static field core::int? topLevelFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
+static set topLevelFieldAndSetter(core::int? value) → void {}
+static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static method test() → dynamic {
+  self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+  self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+  self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
+  c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
+  self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+  self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+  c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?);
+  self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+  self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+      0.extensionInstanceFieldAndStaticSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+  0.extensionInstanceFieldAndStaticSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
new file mode 100644
index 0000000..92d9d15
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.transformed.expect
@@ -0,0 +1,211 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+//   int? instanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// void set topLevelFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:5:6: Error: Conflicts with setter 'topLevelFieldAndSetter'.
+// int? topLevelFieldAndSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
+//   static int? staticFieldAndInstanceSetter;
+//               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
+//   int? instanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+//   c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+//                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+//   0.extensionInstanceFieldAndStaticSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int? instanceFieldAndSetter = null;
+  late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndSetter = null;
+  late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndInstanceSetter = null;
+  field core::int? instanceFieldAndStaticSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  set instanceFieldAndSetter(core::int? value) → void {}
+  set instanceLateFinalFieldAndSetter(core::int? value) → void {}
+  static set staticFieldAndSetter(core::int? value) → void {}
+  static set staticLateFinalFieldAndSetter(core::int? value) → void {}
+  set staticFieldAndInstanceSetter(core::int? value) → void {}
+  static set instanceFieldAndStaticSetter(core::int? value) → void {}
+}
+extension Extension on core::int? {
+  field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+  static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
+  set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
+  static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
+  set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
+  static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+}
+static field core::int? topLevelFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
+static set topLevelFieldAndSetter(core::int? value) → void {}
+static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static method test() → dynamic {
+  self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+  self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+  self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
+  c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
+  self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+  self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+  c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
+  self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+  self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+      0.extensionInstanceFieldAndStaticSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+  0.extensionInstanceFieldAndStaticSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
new file mode 100644
index 0000000..9be3ed0
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.textual_outline.expect
@@ -0,0 +1,36 @@
+int? topLevelFieldAndSetter;
+void set topLevelFieldAndSetter(int? value) {}
+late
+final int? topLevelLateFinalFieldAndSetter;
+void set topLevelLateFinalFieldAndSetter(int? value) {}
+class Class {
+  int? instanceFieldAndSetter;
+  void set instanceFieldAndSetter(int? value) {}
+  late
+  final int? instanceLateFinalFieldAndSetter;
+  void set instanceLateFinalFieldAndSetter(int? value) {}
+  static int? staticFieldAndSetter;
+  static void set staticFieldAndSetter(int? value) {}
+  static late ;
+  final int? staticLateFinalFieldAndSetter;
+  static void set staticLateFinalFieldAndSetter(int? value) {}
+  static int? staticFieldAndInstanceSetter;
+  void set staticFieldAndInstanceSetter(int? value) {}
+  int? instanceFieldAndStaticSetter;
+  static void set instanceFieldAndStaticSetter(int? value) {}
+}
+extension Extension on int? {
+  int? extensionInstanceFieldAndSetter;
+  void set extensionInstanceFieldAndSetter(int? value) {}
+  static int? extensionStaticFieldAndSetter;
+  static void set extensionStaticFieldAndSetter(int? value) {}
+  static late ;
+  final int? extensionStaticLateFinalFieldAndSetter;
+  static void set extensionStaticFieldAndSetter(int? value) {}
+  static int? extensionStaticFieldAndInstanceSetter;
+  void set extensionStaticFieldAndInstanceSetter(int? value) {}
+  int? extensionInstanceFieldAndStaticSetter;
+  static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+}
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
new file mode 100644
index 0000000..3ac89ba
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
@@ -0,0 +1,211 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+//   int? instanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// void set topLevelFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:5:6: Error: Conflicts with setter 'topLevelFieldAndSetter'.
+// int? topLevelFieldAndSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
+//   static int? staticFieldAndInstanceSetter;
+//               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
+//   int? instanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+//   c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+//                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+//   0.extensionInstanceFieldAndStaticSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int? instanceFieldAndSetter = null;
+  late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndSetter = null;
+  late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndInstanceSetter = null;
+  field core::int? instanceFieldAndStaticSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  set instanceFieldAndSetter(core::int? value) → void {}
+  set instanceLateFinalFieldAndSetter(core::int? value) → void {}
+  static set staticFieldAndSetter(core::int? value) → void {}
+  static set staticLateFinalFieldAndSetter(core::int? value) → void {}
+  set staticFieldAndInstanceSetter(core::int? value) → void {}
+  static set instanceFieldAndStaticSetter(core::int? value) → void {}
+}
+extension Extension on core::int? {
+  field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+  static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
+  set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
+  static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
+  set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
+  static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+}
+static field core::int? topLevelFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
+static set topLevelFieldAndSetter(core::int? value) → void {}
+static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static method test() → dynamic {
+  self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+  self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+  self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
+  c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
+  self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+  self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+  c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?);
+  self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+  self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+      0.extensionInstanceFieldAndStaticSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+  0.extensionInstanceFieldAndStaticSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
new file mode 100644
index 0000000..92d9d15
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.transformed.expect
@@ -0,0 +1,211 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'extensionStaticFieldAndSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:36:19: Context: Previous declaration of 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:12: Error: Conflicts with member 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:19:19: Error: Conflicts with member 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:18:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with member 'staticFieldAndInstanceSetter'.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: Conflicts with member 'instanceFieldAndStaticSetter'.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+//   int? instanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:33:12: Error: Conflicts with member 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with member 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:12: Error: Conflicts with member 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with member 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with member 'topLevelFieldAndSetter'.
+// void set topLevelFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:5:6: Error: Conflicts with setter 'topLevelFieldAndSetter'.
+// int? topLevelFieldAndSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:15: Error: This static member conflicts with an instance member.
+//   static int? staticFieldAndInstanceSetter;
+//               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Context: This is the instance member.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+//   static void set instanceFieldAndStaticSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
+//   int? instanceFieldAndStaticSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+//   c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+//                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+//       0.extensionInstanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+//   0.extensionInstanceFieldAndStaticSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  field core::int? instanceFieldAndSetter = null;
+  late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndSetter = null;
+  late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  static field core::int? staticFieldAndInstanceSetter = null;
+  field core::int? instanceFieldAndStaticSetter = null;
+  synthetic constructor •() → self::Class
+    : super core::Object::•()
+    ;
+  set instanceFieldAndSetter(core::int? value) → void {}
+  set instanceLateFinalFieldAndSetter(core::int? value) → void {}
+  static set staticFieldAndSetter(core::int? value) → void {}
+  static set staticLateFinalFieldAndSetter(core::int? value) → void {}
+  set staticFieldAndInstanceSetter(core::int? value) → void {}
+  static set instanceFieldAndStaticSetter(core::int? value) → void {}
+}
+extension Extension on core::int? {
+  field extensionInstanceFieldAndSetter = self::Extension|extensionInstanceFieldAndSetter;
+  static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  field extensionInstanceFieldAndStaticSetter = self::Extension|extensionInstanceFieldAndStaticSetter;
+  set extensionInstanceFieldAndSetter = self::Extension|set#extensionInstanceFieldAndSetter;
+  static set extensionStaticFieldAndSetter = set self::Extension|extensionStaticFieldAndSetter;
+  set extensionStaticFieldAndInstanceSetter = self::Extension|set#extensionStaticFieldAndInstanceSetter;
+  static set extensionInstanceFieldAndStaticSetter = set self::Extension|extensionInstanceFieldAndStaticSetter;
+}
+static field core::int? topLevelFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionInstanceFieldAndStaticSetter;
+static set topLevelFieldAndSetter(core::int? value) → void {}
+static set topLevelLateFinalFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionInstanceFieldAndSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionStaticFieldAndSetter(core::int? value) → void {}
+static method Extension|set#extensionStaticFieldAndInstanceSetter(lowered final core::int? #this, core::int? value) → void {}
+static set Extension|extensionInstanceFieldAndStaticSetter(core::int? value) → void {}
+static method test() → dynamic {
+  self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+  self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+  self::Class::staticLateFinalFieldAndSetter = self::Class::staticLateFinalFieldAndSetter;
+  c.{self::Class::staticFieldAndInstanceSetter} = self::Class::staticFieldAndInstanceSetter;
+  self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+  self::Class::instanceFieldAndStaticSetter = c.{self::Class::instanceFieldAndStaticSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:5: Error: The setter 'instanceFieldAndStaticSetter' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'instanceFieldAndStaticSetter'.
+  c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionInstanceFieldAndSetter(0, invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
+  self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+  self::Extension|extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  self::Extension|extensionInstanceFieldAndStaticSetter = invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:9: Error: The getter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'extensionInstanceFieldAndStaticSetter'.
+      0.extensionInstanceFieldAndStaticSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:80:5: Error: The setter 'extensionInstanceFieldAndStaticSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndStaticSetter'.
+  0.extensionInstanceFieldAndStaticSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart
new file mode 100644
index 0000000..f7edbd4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart
@@ -0,0 +1,75 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// 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.
+
+topLevelMethodAndSetter() {}
+void set topLevelMethodAndSetter(value) {}
+
+typedef typedefAndSetter = Function();
+void set topLevelMethodAndSetter(value) {}
+
+class classAndSetter {}
+
+void set classAndSetter(value) {}
+
+class Class {
+  instanceMethodAndSetter() {}
+  void set instanceMethodAndSetter(value) {}
+
+  static staticMethodAndSetter() {}
+  static void set staticMethodAndSetter(value) {}
+
+  instanceMethodAndStaticSetter() {}
+  static void set instanceMethodAndStaticSetter(value) {}
+
+  static staticMethodAndInstanceSetter() {}
+  void set staticMethodAndInstanceSetter(value) {}
+
+  Class() {}
+  void set Class(value) {}
+}
+
+extension Extension on int? {
+  extensionInstanceMethodAndSetter() {}
+  void set extensionInstanceMethodAndSetter(value) {}
+
+  static extensionStaticMethodAndSetter() {}
+  static void set extensionStaticMethodAndSetter(value) {}
+
+  extensionInstanceMethodAndStaticSetter() {}
+  static void set extensionInstanceMethodAndStaticSetter(value) {}
+
+  static extensionStaticMethodAndInstanceSetter() {}
+  void set extensionStaticMethodAndInstanceSetter(value) {}
+}
+
+test() {
+  topLevelMethodAndSetter = topLevelMethodAndSetter();
+  typedefAndSetter = typedefAndSetter();
+  classAndSetter = classAndSetter();
+
+  var c = new Class();
+
+  c.instanceMethodAndSetter = c.instanceMethodAndSetter();
+
+  Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+
+  c.staticMethodAndInstanceSetter = Class.staticMethodAndInstanceSetter();
+
+  Class.instanceMethodAndStaticSetter = c.instanceMethodAndStaticSetter();
+
+  c.Class = c.Class;
+
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+
+  Extension.extensionStaticMethodAndSetter =
+      Extension.extensionStaticMethodAndSetter();
+
+  0.extensionStaticMethodAndInstanceSetter =
+      Extension.extensionStaticMethodAndInstanceSetter();
+
+  Extension.extensionInstanceMethodAndStaticSetter =
+      0.extensionInstanceMethodAndStaticSetter();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.outline.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.outline.expect
new file mode 100644
index 0000000..cb7f98c
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.outline.expect
@@ -0,0 +1,159 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: 'topLevelMethodAndSetter' is already declared in this scope.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Context: Previous declaration of 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:29:12: Error: A class member can't have the same name as the enclosing class.
+// Try renaming the member.
+//   void set Class(value) {}
+//            ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
+//   void set extensionInstanceMethodAndSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:33:3: Error: Conflicts with setter 'extensionInstanceMethodAndSetter'.
+//   extensionInstanceMethodAndSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:37:19: Error: Conflicts with member 'extensionStaticMethodAndSetter'.
+//   static void set extensionStaticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:36:10: Error: Conflicts with setter 'extensionStaticMethodAndSetter'.
+//   static extensionStaticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:40:19: Error: Conflicts with member 'extensionInstanceMethodAndStaticSetter'.
+//   static void set extensionInstanceMethodAndStaticSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:39:3: Error: Conflicts with setter 'extensionInstanceMethodAndStaticSetter'.
+//   extensionInstanceMethodAndStaticSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:43:12: Error: Conflicts with member 'extensionStaticMethodAndInstanceSetter'.
+//   void set extensionStaticMethodAndInstanceSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:42:10: Error: Conflicts with setter 'extensionStaticMethodAndInstanceSetter'.
+//   static extensionStaticMethodAndInstanceSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:17:12: Error: 'instanceMethodAndSetter' is already declared in this scope.
+//   void set instanceMethodAndSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:16:3: Context: Previous declaration of 'instanceMethodAndSetter'.
+//   instanceMethodAndSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: 'staticMethodAndSetter' is already declared in this scope.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Context: Previous declaration of 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:23:19: Error: This static member conflicts with an instance member.
+//   static void set instanceMethodAndStaticSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:22:3: Context: This is the instance member.
+//   instanceMethodAndStaticSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:25:10: Error: This static member conflicts with an instance member.
+//   static staticMethodAndInstanceSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:26:12: Context: This is the instance member.
+//   void set staticMethodAndInstanceSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef typedefAndSetter = () → dynamic;
+class classAndSetter extends core::Object {
+  synthetic constructor •() → self::classAndSetter
+    ;
+}
+class Class extends core::Object {
+  constructor •() → self::Class
+    ;
+  method instanceMethodAndSetter() → dynamic
+    ;
+  set instanceMethodAndSetter(dynamic value) → void
+    ;
+  static method staticMethodAndSetter() → dynamic
+    ;
+  static set staticMethodAndSetter(dynamic value) → void
+    ;
+  method instanceMethodAndStaticSetter() → dynamic
+    ;
+  static set instanceMethodAndStaticSetter(dynamic value) → void
+    ;
+  static method staticMethodAndInstanceSetter() → dynamic
+    ;
+  set staticMethodAndInstanceSetter(dynamic value) → void
+    ;
+  set Class(dynamic value) → void
+    ;
+}
+extension Extension on core::int? {
+  method extensionInstanceMethodAndSetter = self::Extension|extensionInstanceMethodAndSetter;
+  tearoff extensionInstanceMethodAndSetter = self::Extension|get#extensionInstanceMethodAndSetter;
+  static method extensionStaticMethodAndSetter = self::Extension|extensionStaticMethodAndSetter;
+  method extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter;
+  tearoff extensionInstanceMethodAndStaticSetter = self::Extension|get#extensionInstanceMethodAndStaticSetter;
+  static method extensionStaticMethodAndInstanceSetter = self::Extension|extensionStaticMethodAndInstanceSetter;
+  set extensionInstanceMethodAndSetter = self::Extension|set#extensionInstanceMethodAndSetter;
+  static set extensionStaticMethodAndSetter = set self::Extension|extensionStaticMethodAndSetter;
+  static set extensionInstanceMethodAndStaticSetter = set self::Extension|extensionInstanceMethodAndStaticSetter;
+  set extensionStaticMethodAndInstanceSetter = self::Extension|set#extensionStaticMethodAndInstanceSetter;
+}
+static const field dynamic _exports# = "{\"topLevelMethodAndSetter\":\"'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.\"}" /*isLegacy, from null */;
+static method topLevelMethodAndSetter() → dynamic
+  ;
+static set topLevelMethodAndSetter(dynamic value) → void
+  ;
+static set classAndSetter(dynamic value) → void
+  ;
+static method Extension|extensionInstanceMethodAndSetter(lowered final core::int? #this) → dynamic
+  ;
+static method Extension|get#extensionInstanceMethodAndSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndSetter(#this);
+static method Extension|set#extensionInstanceMethodAndSetter(lowered final core::int? #this, dynamic value) → void
+  ;
+static method Extension|extensionStaticMethodAndSetter() → dynamic
+  ;
+static set Extension|extensionStaticMethodAndSetter(dynamic value) → void
+  ;
+static method Extension|extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → dynamic
+  ;
+static method Extension|get#extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndStaticSetter(#this);
+static set Extension|extensionInstanceMethodAndStaticSetter(dynamic value) → void
+  ;
+static method Extension|extensionStaticMethodAndInstanceSetter() → dynamic
+  ;
+static method Extension|set#extensionStaticMethodAndInstanceSetter(lowered final core::int? #this, dynamic value) → void
+  ;
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
new file mode 100644
index 0000000..03ffb8f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.expect
@@ -0,0 +1,208 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: 'topLevelMethodAndSetter' is already declared in this scope.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Context: Previous declaration of 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:29:12: Error: A class member can't have the same name as the enclosing class.
+// Try renaming the member.
+//   void set Class(value) {}
+//            ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
+//   void set extensionInstanceMethodAndSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:33:3: Error: Conflicts with setter 'extensionInstanceMethodAndSetter'.
+//   extensionInstanceMethodAndSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:37:19: Error: Conflicts with member 'extensionStaticMethodAndSetter'.
+//   static void set extensionStaticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:36:10: Error: Conflicts with setter 'extensionStaticMethodAndSetter'.
+//   static extensionStaticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:40:19: Error: Conflicts with member 'extensionInstanceMethodAndStaticSetter'.
+//   static void set extensionInstanceMethodAndStaticSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:39:3: Error: Conflicts with setter 'extensionInstanceMethodAndStaticSetter'.
+//   extensionInstanceMethodAndStaticSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:43:12: Error: Conflicts with member 'extensionStaticMethodAndInstanceSetter'.
+//   void set extensionStaticMethodAndInstanceSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:42:10: Error: Conflicts with setter 'extensionStaticMethodAndInstanceSetter'.
+//   static extensionStaticMethodAndInstanceSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:17:12: Error: 'instanceMethodAndSetter' is already declared in this scope.
+//   void set instanceMethodAndSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:16:3: Context: Previous declaration of 'instanceMethodAndSetter'.
+//   instanceMethodAndSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: 'staticMethodAndSetter' is already declared in this scope.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Context: Previous declaration of 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:23:19: Error: This static member conflicts with an instance member.
+//   static void set instanceMethodAndStaticSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:22:3: Context: This is the instance member.
+//   instanceMethodAndStaticSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:25:10: Error: This static member conflicts with an instance member.
+//   static staticMethodAndInstanceSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:26:12: Context: This is the instance member.
+//   void set staticMethodAndInstanceSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+//   topLevelMethodAndSetter = topLevelMethodAndSetter();
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+//   typedefAndSetter = typedefAndSetter();
+//                      ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+//   typedefAndSetter = typedefAndSetter();
+//   ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+//   classAndSetter = classAndSetter();
+//   ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+//   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+//   Extension.extensionStaticMethodAndSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+//   c.Class = c.Class;
+//               ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef typedefAndSetter = () → dynamic;
+class classAndSetter extends core::Object {
+  synthetic constructor •() → self::classAndSetter
+    : super core::Object::•()
+    ;
+}
+class Class extends core::Object {
+  constructor •() → self::Class
+    : super core::Object::•() {}
+  method instanceMethodAndSetter() → dynamic {}
+  set instanceMethodAndSetter(dynamic value) → void {}
+  static method staticMethodAndSetter() → dynamic {}
+  static set staticMethodAndSetter(dynamic value) → void {}
+  method instanceMethodAndStaticSetter() → dynamic {}
+  static set instanceMethodAndStaticSetter(dynamic value) → void {}
+  static method staticMethodAndInstanceSetter() → dynamic {}
+  set staticMethodAndInstanceSetter(dynamic value) → void {}
+  set Class(dynamic value) → void {}
+}
+extension Extension on core::int? {
+  method extensionInstanceMethodAndSetter = self::Extension|extensionInstanceMethodAndSetter;
+  tearoff extensionInstanceMethodAndSetter = self::Extension|get#extensionInstanceMethodAndSetter;
+  static method extensionStaticMethodAndSetter = self::Extension|extensionStaticMethodAndSetter;
+  method extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter;
+  tearoff extensionInstanceMethodAndStaticSetter = self::Extension|get#extensionInstanceMethodAndStaticSetter;
+  static method extensionStaticMethodAndInstanceSetter = self::Extension|extensionStaticMethodAndInstanceSetter;
+  set extensionInstanceMethodAndSetter = self::Extension|set#extensionInstanceMethodAndSetter;
+  static set extensionStaticMethodAndSetter = set self::Extension|extensionStaticMethodAndSetter;
+  static set extensionInstanceMethodAndStaticSetter = set self::Extension|extensionInstanceMethodAndStaticSetter;
+  set extensionStaticMethodAndInstanceSetter = self::Extension|set#extensionStaticMethodAndInstanceSetter;
+}
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethodAndSetter() → dynamic {}
+static set topLevelMethodAndSetter(dynamic value) → void {}
+static set classAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndSetter(#this);
+static method Extension|set#extensionInstanceMethodAndSetter(lowered final core::int? #this, dynamic value) → void {}
+static method Extension|extensionStaticMethodAndSetter() → dynamic {}
+static set Extension|extensionStaticMethodAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndStaticSetter(#this);
+static set Extension|extensionInstanceMethodAndStaticSetter(dynamic value) → void {}
+static method Extension|extensionStaticMethodAndInstanceSetter() → dynamic {}
+static method Extension|set#extensionStaticMethodAndInstanceSetter(lowered final core::int? #this, dynamic value) → void {}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+  topLevelMethodAndSetter = topLevelMethodAndSetter();
+  ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+  typedefAndSetter = typedefAndSetter();
+  ^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+  classAndSetter = classAndSetter();
+  ^^^^^^^^^^^^^^";
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+  Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
+  c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+  c.Class = c.Class;
+              ^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+  Extension.extensionStaticMethodAndSetter =
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionStaticMethodAndInstanceSetter(0, self::Extension|extensionStaticMethodAndInstanceSetter());
+  self::Extension|extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter(0);
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = "{\"topLevelMethodAndSetter\":\"'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
new file mode 100644
index 0000000..03ffb8f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.strong.transformed.expect
@@ -0,0 +1,208 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: 'topLevelMethodAndSetter' is already declared in this scope.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Context: Previous declaration of 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:29:12: Error: A class member can't have the same name as the enclosing class.
+// Try renaming the member.
+//   void set Class(value) {}
+//            ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
+//   void set extensionInstanceMethodAndSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:33:3: Error: Conflicts with setter 'extensionInstanceMethodAndSetter'.
+//   extensionInstanceMethodAndSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:37:19: Error: Conflicts with member 'extensionStaticMethodAndSetter'.
+//   static void set extensionStaticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:36:10: Error: Conflicts with setter 'extensionStaticMethodAndSetter'.
+//   static extensionStaticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:40:19: Error: Conflicts with member 'extensionInstanceMethodAndStaticSetter'.
+//   static void set extensionInstanceMethodAndStaticSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:39:3: Error: Conflicts with setter 'extensionInstanceMethodAndStaticSetter'.
+//   extensionInstanceMethodAndStaticSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:43:12: Error: Conflicts with member 'extensionStaticMethodAndInstanceSetter'.
+//   void set extensionStaticMethodAndInstanceSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:42:10: Error: Conflicts with setter 'extensionStaticMethodAndInstanceSetter'.
+//   static extensionStaticMethodAndInstanceSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:17:12: Error: 'instanceMethodAndSetter' is already declared in this scope.
+//   void set instanceMethodAndSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:16:3: Context: Previous declaration of 'instanceMethodAndSetter'.
+//   instanceMethodAndSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: 'staticMethodAndSetter' is already declared in this scope.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Context: Previous declaration of 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:23:19: Error: This static member conflicts with an instance member.
+//   static void set instanceMethodAndStaticSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:22:3: Context: This is the instance member.
+//   instanceMethodAndStaticSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:25:10: Error: This static member conflicts with an instance member.
+//   static staticMethodAndInstanceSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:26:12: Context: This is the instance member.
+//   void set staticMethodAndInstanceSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+//   topLevelMethodAndSetter = topLevelMethodAndSetter();
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+//   typedefAndSetter = typedefAndSetter();
+//                      ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+//   typedefAndSetter = typedefAndSetter();
+//   ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+//   classAndSetter = classAndSetter();
+//   ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+//   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+//   Extension.extensionStaticMethodAndSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+//   c.Class = c.Class;
+//               ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef typedefAndSetter = () → dynamic;
+class classAndSetter extends core::Object {
+  synthetic constructor •() → self::classAndSetter
+    : super core::Object::•()
+    ;
+}
+class Class extends core::Object {
+  constructor •() → self::Class
+    : super core::Object::•() {}
+  method instanceMethodAndSetter() → dynamic {}
+  set instanceMethodAndSetter(dynamic value) → void {}
+  static method staticMethodAndSetter() → dynamic {}
+  static set staticMethodAndSetter(dynamic value) → void {}
+  method instanceMethodAndStaticSetter() → dynamic {}
+  static set instanceMethodAndStaticSetter(dynamic value) → void {}
+  static method staticMethodAndInstanceSetter() → dynamic {}
+  set staticMethodAndInstanceSetter(dynamic value) → void {}
+  set Class(dynamic value) → void {}
+}
+extension Extension on core::int? {
+  method extensionInstanceMethodAndSetter = self::Extension|extensionInstanceMethodAndSetter;
+  tearoff extensionInstanceMethodAndSetter = self::Extension|get#extensionInstanceMethodAndSetter;
+  static method extensionStaticMethodAndSetter = self::Extension|extensionStaticMethodAndSetter;
+  method extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter;
+  tearoff extensionInstanceMethodAndStaticSetter = self::Extension|get#extensionInstanceMethodAndStaticSetter;
+  static method extensionStaticMethodAndInstanceSetter = self::Extension|extensionStaticMethodAndInstanceSetter;
+  set extensionInstanceMethodAndSetter = self::Extension|set#extensionInstanceMethodAndSetter;
+  static set extensionStaticMethodAndSetter = set self::Extension|extensionStaticMethodAndSetter;
+  static set extensionInstanceMethodAndStaticSetter = set self::Extension|extensionInstanceMethodAndStaticSetter;
+  set extensionStaticMethodAndInstanceSetter = self::Extension|set#extensionStaticMethodAndInstanceSetter;
+}
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethodAndSetter() → dynamic {}
+static set topLevelMethodAndSetter(dynamic value) → void {}
+static set classAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndSetter(#this);
+static method Extension|set#extensionInstanceMethodAndSetter(lowered final core::int? #this, dynamic value) → void {}
+static method Extension|extensionStaticMethodAndSetter() → dynamic {}
+static set Extension|extensionStaticMethodAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndStaticSetter(#this);
+static set Extension|extensionInstanceMethodAndStaticSetter(dynamic value) → void {}
+static method Extension|extensionStaticMethodAndInstanceSetter() → dynamic {}
+static method Extension|set#extensionStaticMethodAndInstanceSetter(lowered final core::int? #this, dynamic value) → void {}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+  topLevelMethodAndSetter = topLevelMethodAndSetter();
+  ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+  typedefAndSetter = typedefAndSetter();
+  ^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+  classAndSetter = classAndSetter();
+  ^^^^^^^^^^^^^^";
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+  Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
+  c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+  c.Class = c.Class;
+              ^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+  Extension.extensionStaticMethodAndSetter =
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionStaticMethodAndInstanceSetter(0, self::Extension|extensionStaticMethodAndInstanceSetter());
+  self::Extension|extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter(0);
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = "{\"topLevelMethodAndSetter\":\"'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.textual_outline.expect
new file mode 100644
index 0000000..9886982
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.textual_outline.expect
@@ -0,0 +1,30 @@
+topLevelMethodAndSetter() {}
+void set topLevelMethodAndSetter(value) {}
+typedef typedefAndSetter = Function();
+void set topLevelMethodAndSetter(value) {}
+class classAndSetter {}
+void set classAndSetter(value) {}
+class Class {
+  instanceMethodAndSetter() {}
+  void set instanceMethodAndSetter(value) {}
+  static staticMethodAndSetter() {}
+  static void set staticMethodAndSetter(value) {}
+  instanceMethodAndStaticSetter() {}
+  static void set instanceMethodAndStaticSetter(value) {}
+  static staticMethodAndInstanceSetter() {}
+  void set staticMethodAndInstanceSetter(value) {}
+  Class() {}
+  void set Class(value) {}
+}
+extension Extension on int? {
+  extensionInstanceMethodAndSetter() {}
+  void set extensionInstanceMethodAndSetter(value) {}
+  static extensionStaticMethodAndSetter() {}
+  static void set extensionStaticMethodAndSetter(value) {}
+  extensionInstanceMethodAndStaticSetter() {}
+  static void set extensionInstanceMethodAndStaticSetter(value) {}
+  static extensionStaticMethodAndInstanceSetter() {}
+  void set extensionStaticMethodAndInstanceSetter(value) {}
+}
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
new file mode 100644
index 0000000..03ffb8f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.expect
@@ -0,0 +1,208 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: 'topLevelMethodAndSetter' is already declared in this scope.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Context: Previous declaration of 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:29:12: Error: A class member can't have the same name as the enclosing class.
+// Try renaming the member.
+//   void set Class(value) {}
+//            ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
+//   void set extensionInstanceMethodAndSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:33:3: Error: Conflicts with setter 'extensionInstanceMethodAndSetter'.
+//   extensionInstanceMethodAndSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:37:19: Error: Conflicts with member 'extensionStaticMethodAndSetter'.
+//   static void set extensionStaticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:36:10: Error: Conflicts with setter 'extensionStaticMethodAndSetter'.
+//   static extensionStaticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:40:19: Error: Conflicts with member 'extensionInstanceMethodAndStaticSetter'.
+//   static void set extensionInstanceMethodAndStaticSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:39:3: Error: Conflicts with setter 'extensionInstanceMethodAndStaticSetter'.
+//   extensionInstanceMethodAndStaticSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:43:12: Error: Conflicts with member 'extensionStaticMethodAndInstanceSetter'.
+//   void set extensionStaticMethodAndInstanceSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:42:10: Error: Conflicts with setter 'extensionStaticMethodAndInstanceSetter'.
+//   static extensionStaticMethodAndInstanceSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:17:12: Error: 'instanceMethodAndSetter' is already declared in this scope.
+//   void set instanceMethodAndSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:16:3: Context: Previous declaration of 'instanceMethodAndSetter'.
+//   instanceMethodAndSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: 'staticMethodAndSetter' is already declared in this scope.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Context: Previous declaration of 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:23:19: Error: This static member conflicts with an instance member.
+//   static void set instanceMethodAndStaticSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:22:3: Context: This is the instance member.
+//   instanceMethodAndStaticSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:25:10: Error: This static member conflicts with an instance member.
+//   static staticMethodAndInstanceSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:26:12: Context: This is the instance member.
+//   void set staticMethodAndInstanceSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+//   topLevelMethodAndSetter = topLevelMethodAndSetter();
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+//   typedefAndSetter = typedefAndSetter();
+//                      ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+//   typedefAndSetter = typedefAndSetter();
+//   ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+//   classAndSetter = classAndSetter();
+//   ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+//   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+//   Extension.extensionStaticMethodAndSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+//   c.Class = c.Class;
+//               ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef typedefAndSetter = () → dynamic;
+class classAndSetter extends core::Object {
+  synthetic constructor •() → self::classAndSetter
+    : super core::Object::•()
+    ;
+}
+class Class extends core::Object {
+  constructor •() → self::Class
+    : super core::Object::•() {}
+  method instanceMethodAndSetter() → dynamic {}
+  set instanceMethodAndSetter(dynamic value) → void {}
+  static method staticMethodAndSetter() → dynamic {}
+  static set staticMethodAndSetter(dynamic value) → void {}
+  method instanceMethodAndStaticSetter() → dynamic {}
+  static set instanceMethodAndStaticSetter(dynamic value) → void {}
+  static method staticMethodAndInstanceSetter() → dynamic {}
+  set staticMethodAndInstanceSetter(dynamic value) → void {}
+  set Class(dynamic value) → void {}
+}
+extension Extension on core::int? {
+  method extensionInstanceMethodAndSetter = self::Extension|extensionInstanceMethodAndSetter;
+  tearoff extensionInstanceMethodAndSetter = self::Extension|get#extensionInstanceMethodAndSetter;
+  static method extensionStaticMethodAndSetter = self::Extension|extensionStaticMethodAndSetter;
+  method extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter;
+  tearoff extensionInstanceMethodAndStaticSetter = self::Extension|get#extensionInstanceMethodAndStaticSetter;
+  static method extensionStaticMethodAndInstanceSetter = self::Extension|extensionStaticMethodAndInstanceSetter;
+  set extensionInstanceMethodAndSetter = self::Extension|set#extensionInstanceMethodAndSetter;
+  static set extensionStaticMethodAndSetter = set self::Extension|extensionStaticMethodAndSetter;
+  static set extensionInstanceMethodAndStaticSetter = set self::Extension|extensionInstanceMethodAndStaticSetter;
+  set extensionStaticMethodAndInstanceSetter = self::Extension|set#extensionStaticMethodAndInstanceSetter;
+}
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethodAndSetter() → dynamic {}
+static set topLevelMethodAndSetter(dynamic value) → void {}
+static set classAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndSetter(#this);
+static method Extension|set#extensionInstanceMethodAndSetter(lowered final core::int? #this, dynamic value) → void {}
+static method Extension|extensionStaticMethodAndSetter() → dynamic {}
+static set Extension|extensionStaticMethodAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndStaticSetter(#this);
+static set Extension|extensionInstanceMethodAndStaticSetter(dynamic value) → void {}
+static method Extension|extensionStaticMethodAndInstanceSetter() → dynamic {}
+static method Extension|set#extensionStaticMethodAndInstanceSetter(lowered final core::int? #this, dynamic value) → void {}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+  topLevelMethodAndSetter = topLevelMethodAndSetter();
+  ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+  typedefAndSetter = typedefAndSetter();
+  ^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+  classAndSetter = classAndSetter();
+  ^^^^^^^^^^^^^^";
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+  Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
+  c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+  c.Class = c.Class;
+              ^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+  Extension.extensionStaticMethodAndSetter =
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionStaticMethodAndInstanceSetter(0, self::Extension|extensionStaticMethodAndInstanceSetter());
+  self::Extension|extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter(0);
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = "{\"topLevelMethodAndSetter\":\"'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
new file mode 100644
index 0000000..03ffb8f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart.weak.transformed.expect
@@ -0,0 +1,208 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:9:10: Error: 'topLevelMethodAndSetter' is already declared in this scope.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:6:10: Context: Previous declaration of 'topLevelMethodAndSetter'.
+// void set topLevelMethodAndSetter(value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:29:12: Error: A class member can't have the same name as the enclosing class.
+// Try renaming the member.
+//   void set Class(value) {}
+//            ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart: Error: 'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: Conflicts with member 'staticMethodAndSetter'.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Error: Conflicts with setter 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:34:12: Error: Conflicts with member 'extensionInstanceMethodAndSetter'.
+//   void set extensionInstanceMethodAndSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:33:3: Error: Conflicts with setter 'extensionInstanceMethodAndSetter'.
+//   extensionInstanceMethodAndSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:37:19: Error: Conflicts with member 'extensionStaticMethodAndSetter'.
+//   static void set extensionStaticMethodAndSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:36:10: Error: Conflicts with setter 'extensionStaticMethodAndSetter'.
+//   static extensionStaticMethodAndSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:40:19: Error: Conflicts with member 'extensionInstanceMethodAndStaticSetter'.
+//   static void set extensionInstanceMethodAndStaticSetter(value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:39:3: Error: Conflicts with setter 'extensionInstanceMethodAndStaticSetter'.
+//   extensionInstanceMethodAndStaticSetter() {}
+//   ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:43:12: Error: Conflicts with member 'extensionStaticMethodAndInstanceSetter'.
+//   void set extensionStaticMethodAndInstanceSetter(value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:42:10: Error: Conflicts with setter 'extensionStaticMethodAndInstanceSetter'.
+//   static extensionStaticMethodAndInstanceSetter() {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:17:12: Error: 'instanceMethodAndSetter' is already declared in this scope.
+//   void set instanceMethodAndSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:16:3: Context: Previous declaration of 'instanceMethodAndSetter'.
+//   instanceMethodAndSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:20:19: Error: 'staticMethodAndSetter' is already declared in this scope.
+//   static void set staticMethodAndSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:19:10: Context: Previous declaration of 'staticMethodAndSetter'.
+//   static staticMethodAndSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:23:19: Error: This static member conflicts with an instance member.
+//   static void set instanceMethodAndStaticSetter(value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:22:3: Context: This is the instance member.
+//   instanceMethodAndStaticSetter() {}
+//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:25:10: Error: This static member conflicts with an instance member.
+//   static staticMethodAndInstanceSetter() {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:26:12: Context: This is the instance member.
+//   void set staticMethodAndInstanceSetter(value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+//   topLevelMethodAndSetter = topLevelMethodAndSetter();
+//   ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:22: Error: Method not found: 'typedefAndSetter'.
+//   typedefAndSetter = typedefAndSetter();
+//                      ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+//   typedefAndSetter = typedefAndSetter();
+//   ^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+//   classAndSetter = classAndSetter();
+//   ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+//   Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+//         ^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+//   Extension.extensionStaticMethodAndSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+//  - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+//   c.Class = c.Class;
+//               ^^^^^
+//
+// pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+//   0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+typedef typedefAndSetter = () → dynamic;
+class classAndSetter extends core::Object {
+  synthetic constructor •() → self::classAndSetter
+    : super core::Object::•()
+    ;
+}
+class Class extends core::Object {
+  constructor •() → self::Class
+    : super core::Object::•() {}
+  method instanceMethodAndSetter() → dynamic {}
+  set instanceMethodAndSetter(dynamic value) → void {}
+  static method staticMethodAndSetter() → dynamic {}
+  static set staticMethodAndSetter(dynamic value) → void {}
+  method instanceMethodAndStaticSetter() → dynamic {}
+  static set instanceMethodAndStaticSetter(dynamic value) → void {}
+  static method staticMethodAndInstanceSetter() → dynamic {}
+  set staticMethodAndInstanceSetter(dynamic value) → void {}
+  set Class(dynamic value) → void {}
+}
+extension Extension on core::int? {
+  method extensionInstanceMethodAndSetter = self::Extension|extensionInstanceMethodAndSetter;
+  tearoff extensionInstanceMethodAndSetter = self::Extension|get#extensionInstanceMethodAndSetter;
+  static method extensionStaticMethodAndSetter = self::Extension|extensionStaticMethodAndSetter;
+  method extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter;
+  tearoff extensionInstanceMethodAndStaticSetter = self::Extension|get#extensionInstanceMethodAndStaticSetter;
+  static method extensionStaticMethodAndInstanceSetter = self::Extension|extensionStaticMethodAndInstanceSetter;
+  set extensionInstanceMethodAndSetter = self::Extension|set#extensionInstanceMethodAndSetter;
+  static set extensionStaticMethodAndSetter = set self::Extension|extensionStaticMethodAndSetter;
+  static set extensionInstanceMethodAndStaticSetter = set self::Extension|extensionInstanceMethodAndStaticSetter;
+  set extensionStaticMethodAndInstanceSetter = self::Extension|set#extensionStaticMethodAndInstanceSetter;
+}
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
+static method topLevelMethodAndSetter() → dynamic {}
+static set topLevelMethodAndSetter(dynamic value) → void {}
+static set classAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndSetter(#this);
+static method Extension|set#extensionInstanceMethodAndSetter(lowered final core::int? #this, dynamic value) → void {}
+static method Extension|extensionStaticMethodAndSetter() → dynamic {}
+static set Extension|extensionStaticMethodAndSetter(dynamic value) → void {}
+static method Extension|extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → dynamic {}
+static method Extension|get#extensionInstanceMethodAndStaticSetter(lowered final core::int? #this) → () → dynamic
+  return () → dynamic => self::Extension|extensionInstanceMethodAndStaticSetter(#this);
+static set Extension|extensionInstanceMethodAndStaticSetter(dynamic value) → void {}
+static method Extension|extensionStaticMethodAndInstanceSetter() → dynamic {}
+static method Extension|set#extensionStaticMethodAndInstanceSetter(lowered final core::int? #this, dynamic value) → void {}
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:47:3: Error: Setter not found: 'topLevelMethodAndSetter'.
+  topLevelMethodAndSetter = topLevelMethodAndSetter();
+  ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:48:3: Error: Can't assign to a type literal.
+  typedefAndSetter = typedefAndSetter();
+  ^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:49:3: Error: Can't assign to a type literal.
+  classAndSetter = classAndSetter();
+  ^^^^^^^^^^^^^^";
+  self::Class c = new self::Class::•();
+  c.{self::Class::instanceMethodAndSetter} = c.{self::Class::instanceMethodAndSetter}();
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:55:9: Error: Setter not found: 'staticMethodAndSetter'.
+  Class.staticMethodAndSetter = Class.staticMethodAndSetter();
+        ^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::staticMethodAndInstanceSetter} = self::Class::staticMethodAndInstanceSetter();
+  self::Class::instanceMethodAndStaticSetter = c.{self::Class::instanceMethodAndStaticSetter}();
+  c.{self::Class::Class} = invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:61:15: Error: The getter 'Class' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'Class'.
+  c.Class = c.Class;
+              ^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:63:5: Error: The setter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'extensionInstanceFieldAndSetter'.
+  0.extensionInstanceFieldAndSetter = 0.extensionInstanceMethodAndSetter();
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart:65:13: Error: Setter not found: 'extensionStaticMethodAndSetter'.
+  Extension.extensionStaticMethodAndSetter =
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|set#extensionStaticMethodAndInstanceSetter(0, self::Extension|extensionStaticMethodAndInstanceSetter());
+  self::Extension|extensionInstanceMethodAndStaticSetter = self::Extension|extensionInstanceMethodAndStaticSetter(0);
+}
+static method main() → dynamic {}
+
+constants  {
+  #C1 = "{\"topLevelMethodAndSetter\":\"'topLevelMethodAndSetter' is exported from both 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/nonfield_vs_setter.dart'.\"}"
+}
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index bbb5c64..10f576d 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -169,6 +169,7 @@
 inference_new/invalid_assignment_during_toplevel_inference: TypeCheckError
 late_lowering/covariant_late_field: TypeCheckError
 nnbd/covariant_late_field: TypeCheckError
+nnbd/duplicates_instance_extension: VerificationError
 nnbd/getter_vs_setter_type: TypeCheckError
 nnbd/issue41180: RuntimeError # Strong mode runtime checking fails due to mixed strong mode.
 nnbd/issue42603: TypeCheckError
diff --git a/pkg/front_end/testcases/text_serialization.status b/pkg/front_end/testcases/text_serialization.status
index c21c124..ca60b99 100644
--- a/pkg/front_end/testcases/text_serialization.status
+++ b/pkg/front_end/testcases/text_serialization.status
@@ -169,6 +169,7 @@
 inference_new/invalid_assignment_during_toplevel_inference: TypeCheckError
 late_lowering/covariant_late_field: TypeCheckError
 nnbd/covariant_late_field: TypeCheckError
+nnbd/duplicates_instance_extension: VerificationError
 nnbd/getter_vs_setter_type: TypeCheckError
 nnbd/issue41180: RuntimeError
 nnbd/issue42603: TypeCheckError
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index add6cbb..a6f248c 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -108,6 +108,11 @@
 late_lowering/uninitialized_non_nullable_late_fields: FormatterCrash
 nnbd/abstract_field_errors: FormatterCrash
 nnbd/covariant_late_field: FormatterCrash
+nnbd/duplicates_instance: FormatterCrash
+nnbd/duplicates_instance_extension: FormatterCrash
+nnbd/duplicates_static: FormatterCrash
+nnbd/duplicates_static_extension: FormatterCrash
+nnbd/field_vs_setter: FormatterCrash
 nnbd/forbidden_supers: FormatterCrash
 nnbd/getter_vs_setter_type_late: FormatterCrash
 nnbd/inheritance_from_opt_in: FormatterCrash
@@ -119,6 +124,7 @@
 nnbd/later: FormatterCrash
 nnbd/no_null_shorting_explicit_extension: FormatterCrash
 nnbd/no_null_shorting_extension: FormatterCrash
+nnbd/nonfield_vs_setter: FormatterCrash
 nnbd/non_nullable_field_initialization: FormatterCrash
 nnbd/opt_out: FormatterCrash
 nnbd/potentially_non_nullable_field: FormatterCrash
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index 731df3e..6efa9d9 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -57,6 +57,7 @@
 general_nnbd_opt_out/void_methods: RuntimeError
 late_lowering/covariant_late_field: TypeCheckError
 nnbd/covariant_late_field: TypeCheckError
+nnbd/duplicates_instance_extension: VerificationError
 nnbd/getter_vs_setter_type: TypeCheckError
 nnbd/issue42603: TypeCheckError
 nnbd/no_support_for_old_null_aware_index_access_syntax: RuntimeError # Expected.
diff --git a/pkg/vm_service/test/get_stack_test.dart b/pkg/vm_service/test/get_stack_test.dart
index f1ba6f1..28c5001 100644
--- a/pkg/vm_service/test/get_stack_test.dart
+++ b/pkg/vm_service/test/get_stack_test.dart
@@ -52,11 +52,12 @@
   // Before the first await.
   hasStoppedAtBreakpoint,
   stoppedAtLine(LINE_A),
+  // At LINE_A we're still running sync. so no asyncCausalFrames.
   (VmService service, IsolateRef isolateRef) async {
     final result = await service.getStack(isolateRef.id!);
 
     expect(result.frames, hasLength(16));
-    expect(result.asyncCausalFrames, hasLength(16));
+    expect(result.asyncCausalFrames, isNull);
     expect(result.awaiterFrames, hasLength(16));
 
     expectFrames(result.frames, [
@@ -73,20 +74,6 @@
       [equals('Regular'), endsWith(' testMain')],
     ]);
 
-    expectFrames(result.asyncCausalFrames, [
-      [equals('Regular'), endsWith(' func10')],
-      [equals('Regular'), endsWith(' func9')],
-      [equals('Regular'), endsWith(' func8')],
-      [equals('Regular'), endsWith(' func7')],
-      [equals('Regular'), endsWith(' func6')],
-      [equals('Regular'), endsWith(' func5')],
-      [equals('Regular'), endsWith(' func4')],
-      [equals('Regular'), endsWith(' func3')],
-      [equals('Regular'), endsWith(' func2')],
-      [equals('Regular'), endsWith(' func1')],
-      [equals('Regular'), endsWith(' testMain')],
-    ]);
-
     expectFrames(result.awaiterFrames, [
       [equals('AsyncActivation'), endsWith(' func10')],
       [equals('AsyncActivation'), endsWith(' func9')],
@@ -101,10 +88,10 @@
       [equals('AsyncActivation'), endsWith(' testMain')],
     ]);
   },
-  // After resuming the continuation - i.e. running async.
   resumeIsolate,
   hasStoppedAtBreakpoint,
   stoppedAtLine(LINE_B),
+  // After resuming the continuation - i.e. running async.
   (VmService service, IsolateRef isolateRef) async {
     final result = await service.getStack(isolateRef.id!);
 
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc
index 50283d3..41fb6f8 100644
--- a/runtime/bin/dartutils.cc
+++ b/runtime/bin/dartutils.cc
@@ -758,6 +758,22 @@
   return NewDartExceptionWithMessage(kCoreLibURL, "_InternalError", message);
 }
 
+Dart_Handle DartUtils::NewStringFormatted(const char* format, ...) {
+  va_list args;
+  va_start(args, format);
+  intptr_t len = vsnprintf(NULL, 0, format, args);
+  va_end(args);
+
+  char* buffer = reinterpret_cast<char*>(Dart_ScopeAllocate(len + 1));
+  MSAN_UNPOISON(buffer, (len + 1));
+  va_list args2;
+  va_start(args2, format);
+  vsnprintf(buffer, (len + 1), format, args2);
+  va_end(args2);
+
+  return NewString(buffer);
+}
+
 bool DartUtils::SetOriginalWorkingDirectory() {
   // If we happen to re-initialize the Dart VM multiple times, make sure to free
   // the old string (allocated by getcwd()) before setting a new one.
diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h
index 66da23f..f7f1d8d 100644
--- a/runtime/bin/dartutils.h
+++ b/runtime/bin/dartutils.h
@@ -195,13 +195,16 @@
                                         const char* message,
                                         Dart_Handle os_error);
 
-  // Create a new Dart String object from a C String.
+  // Create a new Dart String object from a UTF8 encoded C String.
   static Dart_Handle NewString(const char* str) {
     ASSERT(str != NULL);
     return Dart_NewStringFromUTF8(reinterpret_cast<const uint8_t*>(str),
                                   strlen(str));
   }
 
+  // Create a new Dart String object from a formatted string.
+  static Dart_Handle NewStringFormatted(const char* format, ...);
+
   // Allocate length bytes for a C string with Dart_ScopeAllocate.
   static char* ScopedCString(intptr_t length) {
     char* result = NULL;
diff --git a/runtime/bin/process.cc b/runtime/bin/process.cc
index 727b18f..914a5f8 100644
--- a/runtime/bin/process.cc
+++ b/runtime/bin/process.cc
@@ -164,13 +164,29 @@
     result =
         DartUtils::SetIntegerField(status_handle, "_errorCode", error_code);
     ThrowIfError(result);
-    Dart_Handle val = DartUtils::NewString(os_error_message != NULL
-                                               ? os_error_message
-                                               : "Cannot get error message");
+
+    const char* error_message = (os_error_message != NULL)
+                                    ? os_error_message
+                                    : "Failed to get error message";
+    Dart_Handle val = DartUtils::NewString(error_message);
     if (Dart_IsError(val)) {
-      // If conversion of the OS error message to a Dart string fails, fall back
-      // on a stock message.
-      val = DartUtils::NewString("OS error message was a not a utf8 string.");
+      // Try to clean the message from non-ASCII characters.
+      const intptr_t len = strlen(error_message);
+      char* ascii_message =
+          reinterpret_cast<char*>(Dart_ScopeAllocate(len + 1));
+      for (intptr_t i = 0; i < len; i++) {
+        if (static_cast<uint8_t>(error_message[i]) < 0x80) {
+          ascii_message[i] = error_message[i];
+        } else {
+          ascii_message[i] = '?';
+        }
+      }
+      ascii_message[len] = '\0';
+
+      val = DartUtils::NewStringFormatted(
+          "Failed to start %s. OS returned an error (code %d) which can't be "
+          "fully converted to Dart string (%s): %s",
+          path, error_code, Dart_GetError(val), ascii_message);
     }
     result = Dart_SetField(status_handle, DartUtils::NewString("_errorMessage"),
                            val);
diff --git a/runtime/bin/process_linux.cc b/runtime/bin/process_linux.cc
index dc8d500..7c81637 100644
--- a/runtime/bin/process_linux.cc
+++ b/runtime/bin/process_linux.cc
@@ -399,6 +399,8 @@
   }
 
  private:
+  static constexpr int kErrorBufferSize = 1024;
+
   int CreatePipes() {
     int result;
     result = TEMP_FAILURE_RETRY(pipe2(exec_control_, O_CLOEXEC));
@@ -705,9 +707,8 @@
   }
 
   void SetChildOsErrorMessage() {
-    const int kBufferSize = 1024;
-    char* error_message = DartUtils::ScopedCString(kBufferSize);
-    Utils::StrError(errno, error_message, kBufferSize);
+    char* error_message = DartUtils::ScopedCString(kErrorBufferSize);
+    Utils::StrError(errno, error_message, kErrorBufferSize);
     *os_error_message_ = error_message;
   }
 
@@ -715,9 +716,9 @@
     // In the case of failure in the child process write the errno and
     // the OS error message to the exec control pipe and exit.
     int child_errno = errno;
-    const int kBufferSize = 1024;
-    char error_buf[kBufferSize];
-    char* os_error_message = Utils::StrError(errno, error_buf, kBufferSize);
+    char error_buf[kErrorBufferSize];
+    char* os_error_message =
+        Utils::StrError(errno, error_buf, kErrorBufferSize);
     int bytes_written = FDUtils::WriteToBlocking(exec_control_[1], &child_errno,
                                                  sizeof(child_errno));
     if (bytes_written == sizeof(child_errno)) {
@@ -741,11 +742,10 @@
   }
 
   void ReadChildError() {
-    const int kMaxMessageSize = 256;
-    char* message = DartUtils::ScopedCString(kMaxMessageSize);
+    char* message = DartUtils::ScopedCString(kErrorBufferSize);
     if (message != NULL) {
-      FDUtils::ReadFromBlocking(exec_control_[0], message, kMaxMessageSize);
-      message[kMaxMessageSize - 1] = '\0';
+      FDUtils::ReadFromBlocking(exec_control_[0], message, kErrorBufferSize);
+      message[kErrorBufferSize - 1] = '\0';
       *os_error_message_ = message;
     } else {
       // Could not get error message. It will be NULL.
diff --git a/runtime/observatory/tests/service/causal_async_stack_presence_test.dart b/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
index 3a90e4a..01331cd 100644
--- a/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
+++ b/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
@@ -11,8 +11,8 @@
 import 'test_helper.dart';
 
 const LINE_C = 19;
-const LINE_A = 24;
-const LINE_B = 30;
+const LINE_A = 25;
+const LINE_B = 31;
 
 foobar() {
   debugger();
@@ -20,6 +20,7 @@
 }
 
 helper() async {
+  await 0; // Yield. The rest will run async.
   debugger();
   print('helper'); // LINE_A.
   foobar();
@@ -36,6 +37,7 @@
   (Isolate isolate) async {
     ServiceMap stack = await isolate.getStack();
     // No causal frames because we are in a completely synchronous stack.
+    // Async function hasn't yielded yet.
     expect(stack['asyncCausalFrames'], isNull);
   },
   resumeIsolate,
@@ -43,7 +45,7 @@
   stoppedAtLine(LINE_A),
   (Isolate isolate) async {
     ServiceMap stack = await isolate.getStack();
-    // Has causal frames (we are inside an async function)
+    // Async function has yielded once, so it's now running async.
     expect(stack['asyncCausalFrames'], isNotNull);
   },
   resumeIsolate,
diff --git a/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart b/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
index 4d3e448..9b605cb 100644
--- a/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
+++ b/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
@@ -39,7 +39,7 @@
   (Isolate isolate) async {
     ServiceMap stack = await isolate.getStack();
     // No causal frames because we are in a completely synchronous stack.
-    expect(stack['asyncCausalFrames'], isNotNull);
+    expect(stack['asyncCausalFrames'], isNull);
   },
   resumeIsolate,
   hasStoppedAtBreakpoint,
diff --git a/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart b/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart
index f52f4a1..cd9ef6a 100644
--- a/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart
+++ b/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart
@@ -11,8 +11,8 @@
 import 'test_helper.dart';
 
 const LINE_C = 19;
-const LINE_A = 24;
-const LINE_B = 30;
+const LINE_A = 25;
+const LINE_B = 31;
 
 foobar() {
   debugger();
@@ -20,6 +20,7 @@
 }
 
 helper() async {
+  await 0; // Yield. The rest will run async.
   debugger();
   print('helper'); // LINE_A.
   foobar();
diff --git a/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart b/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart
index 7fb385a..8acf40d 100644
--- a/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart
+++ b/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart
@@ -39,7 +39,7 @@
   (Isolate isolate) async {
     ServiceMap stack = await isolate.getStack();
     // No causal frames because we are in a completely synchronous stack.
-    expect(stack['asyncCausalFrames'], isNotNull);
+    expect(stack['asyncCausalFrames'], isNull);
   },
   resumeIsolate,
   hasStoppedAtBreakpoint,
diff --git a/runtime/tests/vm/dart/causal_stacks/utils.dart b/runtime/tests/vm/dart/causal_stacks/utils.dart
index fdebc07..16deb64 100644
--- a/runtime/tests/vm/dart/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart/causal_stacks/utils.dart
@@ -40,7 +40,7 @@
 }
 
 // ----
-// Scenario: None of the async functions yieled before the throw:
+// Scenario: None of the async functions yielded before the throw:
 // ----
 Future<void> noYields() async {
   await noYields2();
@@ -178,12 +178,22 @@
   return Future.sync(throwAsync).whenComplete(() => 'nop');
 }
 
+// ----
+// Scenario: Future.then:
+// ----
+
+Future futureThen() {
+  return Future.value(0).then((value) {
+    throwSync();
+  });
+}
+
 // Helpers:
 
 // We want lines that either start with a frame index or an async gap marker.
 final _lineRE = RegExp(r'^(?:#(?<number>\d+)|<asynchronous suspension>)');
 
-void assertStack(List<String> expects, StackTrace stackTrace,
+Future<void> assertStack(List<String> expects, StackTrace stackTrace,
     [String? debugInfoFilename]) async {
   final original = await Stream.value(stackTrace.toString())
       .transform(const LineSplitter())
@@ -253,7 +263,7 @@
     await f();
     Expect.fail('No exception thrown!');
   } on String catch (e, s) {
-    assertStack(expectedStack, s, debugInfoFilename);
+    return assertStack(expectedStack, s, debugInfoFilename);
   }
 }
 
@@ -267,7 +277,7 @@
     await f().then((e) => Expect.fail('No exception thrown!'));
     Expect.fail('No exception thrown!');
   } on String catch (e, s) {
-    assertStack(expectedStack, s, debugInfoFilename);
+    return assertStack(expectedStack, s, debugInfoFilename);
   }
 }
 
@@ -278,7 +288,7 @@
   await f().catchError((e, s) {
     stackTrace = s;
   });
-  assertStack(expectedStack, stackTrace, debugInfoFilename);
+  return assertStack(expectedStack, stackTrace, debugInfoFilename);
 }
 
 // ----
@@ -287,342 +297,262 @@
 
 // For: --no-lazy-async-stacks
 Future<void> doTestsNoCausalNoLazy([String? debugInfoFilename]) async {
-  final allYieldExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'^#2      _RootZone.runUnary ',
-    r'^#3      _FutureListener.handleValue ',
-    r'^#4      Future._propagateToListeners.handleValueCallback ',
-    r'^#5      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#7      _microtaskLoop ',
-    r'^#8      _startMicrotaskLoop ',
-    r'^#9      _runPendingImmediateCallback ',
-    r'^#10     _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(allYield, allYieldExpected, debugInfoFilename);
-  await doTestAwaitThen(allYield, allYieldExpected, debugInfoFilename);
-  await doTestAwaitCatchError(allYield, allYieldExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'^#2      _RootZone.runUnary ',
+      r'^#3      _FutureListener.handleValue ',
+      r'^#4      Future._propagateToListeners.handleValueCallback ',
+      r'^#5      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#7      _microtaskLoop ',
+      r'^#8      _startMicrotaskLoop ',
+      r'^#9      _runPendingImmediateCallback ',
+      r'^#10     _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(allYield, expected, debugInfoFilename);
+    await doTestAwaitThen(allYield, expected, debugInfoFilename);
+    await doTestAwaitCatchError(allYield, expected, debugInfoFilename);
+  }
 
-  final noYieldsExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
-    r'^#2      noYields3 \(.*/utils.dart:53(:23)?\)$',
-    r'^#3      noYields2 \(.*/utils.dart:50(:9)?\)$',
-    r'^#4      noYields2 \(.*/utils.dart:49(:23)?\)$',
-    r'^#5      noYields \(.*/utils.dart:46(:9)?\)$',
-    r'^#6      noYields \(.*/utils.dart:45(:22)?\)$',
-  ];
-  await doTestAwait(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#7      doTestAwait ',
-            r'^#8      doTestAwait ',
-            r'^#9      doTestsNoCausalNoLazy ',
-            r'^#10     _RootZone.runUnary ',
-            r'^#11     _FutureListener.handleValue ',
-            r'^#12     Future._propagateToListeners.handleValueCallback ',
-            r'^#13     Future._propagateToListeners ',
-            r'^#14     Future._completeWithValue ',
-            r'^#15     _completeOnAsyncReturn ',
-            r'^#16     doTestAwaitCatchError ',
-            r'^#17     _RootZone.runUnary ',
-            r'^#18     _FutureListener.handleValue ',
-            r'^#19     Future._propagateToListeners.handleValueCallback ',
-            r'^#20     Future._propagateToListeners ',
-            r'^#21     Future._completeError ',
-            r'^#22     _completeOnAsyncError ',
-            r'^#23     allYield ',
-            r'^#24     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#25     _RootZone.runBinary ',
-            r'^#26     _FutureListener.handleError ',
-            r'^#27     Future._propagateToListeners.handleError ',
-            r'^#28     Future._propagateToListeners ',
-            r'^#29     Future._completeError ',
-            r'^#30     _completeOnAsyncError ',
-            r'^#31     allYield2 ',
-            r'^#32     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#33     _RootZone.runBinary ',
-            r'^#34     _FutureListener.handleError ',
-            r'^#35     Future._propagateToListeners.handleError ',
-            r'^#36     Future._propagateToListeners ',
-            r'^#37     Future._completeError ',
-            r'^#38     _completeOnAsyncError ',
-            r'^#39     allYield3 ',
-            r'^#40     _RootZone.runUnary ',
-            r'^#41     _FutureListener.handleValue ',
-            r'^#42     Future._propagateToListeners.handleValueCallback ',
-            r'^#43     Future._propagateToListeners ',
-            r'^#44     Future._addListener.<anonymous closure> ',
-            r'^#45     _microtaskLoop ',
-            r'^#46     _startMicrotaskLoop ',
-            r'^#47     _runPendingImmediateCallback ',
-            r'^#48     _RawReceivePortImpl._handleMessage ',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#7      doTestAwaitThen ',
-            r'^#8      doTestAwaitThen ',
-            r'^#9      doTestsNoCausalNoLazy ',
-            r'^#10     _RootZone.runUnary ',
-            r'^#11     _FutureListener.handleValue ',
-            r'^#12     Future._propagateToListeners.handleValueCallback ',
-            r'^#13     Future._propagateToListeners ',
-            r'^#14     Future._completeWithValue ',
-            r'^#15     _completeOnAsyncReturn ',
-            r'^#16     doTestAwait ',
-            r'^#17     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#18     _RootZone.runBinary ',
-            r'^#19     _FutureListener.handleError ',
-            r'^#20     Future._propagateToListeners.handleError ',
-            r'^#21     Future._propagateToListeners ',
-            r'^#22     Future._completeError ',
-            r'^#23     _completeOnAsyncError ',
-            r'^#24     noYields ',
-            r'^#25     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#26     _RootZone.runBinary ',
-            r'^#27     _FutureListener.handleError ',
-            r'^#28     Future._propagateToListeners.handleError ',
-            r'^#29     Future._propagateToListeners ',
-            r'^#30     Future._completeError ',
-            r'^#31     _completeOnAsyncError ',
-            r'^#32     noYields2 ',
-            r'^#33     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#34     _RootZone.runBinary ',
-            r'^#35     _FutureListener.handleError ',
-            r'^#36     Future._propagateToListeners.handleError ',
-            r'^#37     Future._propagateToListeners ',
-            r'^#38     Future._completeError ',
-            r'^#39     Future._asyncCompleteError.<anonymous closure> ',
-            r'^#40     _microtaskLoop ',
-            r'^#41     _startMicrotaskLoop ',
-            r'^#42     _runPendingImmediateCallback ',
-            r'^#43     _RawReceivePortImpl._handleMessage ',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#7      doTestAwaitCatchError ',
-            r'^#8      doTestAwaitCatchError ',
-            r'^#9      doTestsNoCausalNoLazy ',
-            r'^#10     _RootZone.runUnary ',
-            r'^#11     _FutureListener.handleValue ',
-            r'^#12     Future._propagateToListeners.handleValueCallback ',
-            r'^#13     Future._propagateToListeners ',
-            r'^#14     Future._completeWithValue ',
-            r'^#15     _completeOnAsyncReturn ',
-            r'^#16     doTestAwaitThen ',
-            r'^#17     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#18     _RootZone.runBinary ',
-            r'^#19     _FutureListener.handleError ',
-            r'^#20     Future._propagateToListeners.handleError ',
-            r'^#21     Future._propagateToListeners ',
-            r'^#22     Future._completeError ',
-            r'^#23     _completeOnAsyncError ',
-            r'^#24     noYields ',
-            r'^#25     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#26     _RootZone.runBinary ',
-            r'^#27     _FutureListener.handleError ',
-            r'^#28     Future._propagateToListeners.handleError ',
-            r'^#29     Future._propagateToListeners ',
-            r'^#30     Future._completeError ',
-            r'^#31     _completeOnAsyncError ',
-            r'^#32     noYields2 ',
-            r'^#33     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#34     _RootZone.runBinary ',
-            r'^#35     _FutureListener.handleError ',
-            r'^#36     Future._propagateToListeners.handleError ',
-            r'^#37     Future._propagateToListeners ',
-            r'^#38     Future._completeError ',
-            r'^#39     Future._asyncCompleteError.<anonymous closure> ',
-            r'^#40     _microtaskLoop ',
-            r'^#41     _startMicrotaskLoop ',
-            r'^#42     _runPendingImmediateCallback ',
-            r'^#43     _RawReceivePortImpl._handleMessage ',
-          ],
-      debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
+      r'^#2      noYields3 \(.*/utils.dart:53(:23)?\)$',
+      r'^#3      noYields2 \(.*/utils.dart:50(:9)?\)$',
+      r'^#4      noYields2 \(.*/utils.dart:49(:23)?\)$',
+      r'^#5      noYields \(.*/utils.dart:46(:9)?\)$',
+      r'^#6      noYields \(.*/utils.dart:45(:22)?\)$',
+    ];
+    final postfix = const <String>[
+      r'^#9      doTestsNoCausalNoLazy ',
+      r'^#10     _RootZone.runUnary ',
+      r'^#11     _FutureListener.handleValue ',
+      r'^#12     Future._propagateToListeners.handleValueCallback ',
+      r'^#13     Future._propagateToListeners ',
+      r'^#14     Future._addListener.<anonymous closure> ',
+      r'^#15     _microtaskLoop ',
+      r'^#16     _startMicrotaskLoop ',
+      r'^#17     _runPendingImmediateCallback ',
+      r'^#18     _RawReceivePortImpl._handleMessage ',
+    ];
+    await 0; // Don't let the `await do..`s chain together.
+    await doTestAwait(
+        noYields,
+        expected +
+            const <String>[
+              r'^#7      doTestAwait ',
+              r'^#8      doTestAwait ',
+            ] +
+            postfix,
+        debugInfoFilename);
+    await 0; // Don't let the `await do..`s chain together.
+    await doTestAwaitThen(
+        noYields,
+        expected +
+            const <String>[
+              r'^#7      doTestAwaitThen ',
+              r'^#8      doTestAwaitThen ',
+            ] +
+            postfix,
+        debugInfoFilename);
+    await 0; // Don't let the `await do..`s chain together.
+    await doTestAwaitCatchError(
+        noYields,
+        expected +
+            const <String>[
+              r'^#7      doTestAwaitCatchError ',
+              r'^#8      doTestAwaitCatchError ',
+            ] +
+            postfix,
+        debugInfoFilename);
+  }
 
-  final mixedYieldsExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(mixedYields, mixedYieldsExpected, debugInfoFilename);
-  await doTestAwaitThen(mixedYields, mixedYieldsExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      mixedYields, mixedYieldsExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(mixedYields, expected, debugInfoFilename);
+    await doTestAwaitThen(mixedYields, expected, debugInfoFilename);
+    await doTestAwaitCatchError(mixedYields, expected, debugInfoFilename);
+  }
 
-  final syncSuffixExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(syncSuffix, syncSuffixExpected, debugInfoFilename);
-  await doTestAwaitThen(syncSuffix, syncSuffixExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      syncSuffix, syncSuffixExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(syncSuffix, expected, debugInfoFilename);
+    await doTestAwaitThen(syncSuffix, expected, debugInfoFilename);
+    await doTestAwaitCatchError(syncSuffix, expected, debugInfoFilename);
+  }
 
-  final nonAsyncNoStackExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(nonAsyncNoStack, expected, debugInfoFilename);
+    await doTestAwaitThen(nonAsyncNoStack, expected, debugInfoFilename);
+    await doTestAwaitCatchError(nonAsyncNoStack, expected, debugInfoFilename);
+  }
 
-  final asyncStarThrowSyncExpected = const <String>[
-    r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
-    r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
-    r'^#2      _RootZone.runUnary \(.+\)$',
-    r'^#3      _FutureListener.handleValue \(.+\)$',
-    r'^#4      Future._propagateToListeners.handleValueCallback \(.+\)$',
-    r'^#5      Future._propagateToListeners \(.+\)$',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> \(.+\)$',
-    r'^#7      _microtaskLoop \(.+\)$',
-    r'^#8      _startMicrotaskLoop \(.+\)$',
-    r'^#9      _runPendingImmediateCallback \(.+\)$',
-    r'^#10     _RawReceivePortImpl._handleMessage \(.+\)$',
-  ];
-  await doTestAwait(awaitEveryAsyncStarThrowSync, asyncStarThrowSyncExpected,
-      debugInfoFilename);
-  await doTestAwaitThen(awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected, debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
+      r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
+      r'^#2      _RootZone.runUnary \(.+\)$',
+      r'^#3      _FutureListener.handleValue \(.+\)$',
+      r'^#4      Future._propagateToListeners.handleValueCallback \(.+\)$',
+      r'^#5      Future._propagateToListeners \(.+\)$',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> \(.+\)$',
+      r'^#7      _microtaskLoop \(.+\)$',
+      r'^#8      _startMicrotaskLoop \(.+\)$',
+      r'^#9      _runPendingImmediateCallback \(.+\)$',
+      r'^#10     _RawReceivePortImpl._handleMessage \(.+\)$',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
+  }
 
-  final asyncStarThrowAsyncExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(awaitEveryAsyncStarThrowAsync, asyncStarThrowAsyncExpected,
-      debugInfoFilename);
-  await doTestAwaitThen(awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected, debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
+  }
 
-  final listenAsyncStartExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(listenAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitThen(
+        listenAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        listenAsyncStarThrowAsync, expected, debugInfoFilename);
+  }
 
-  final customErrorZoneExpected = const <String>[
-    r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'#2      _rootRunUnary ',
-    r'#3      _CustomZone.runUnary ',
-    r'#4      _FutureListener.handleValue ',
-    r'#5      Future._propagateToListeners.handleValueCallback ',
-    r'#6      Future._propagateToListeners ',
-    r'#7      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'#8      _rootRun ',
-    r'#9      _CustomZone.run ',
-    r'#10     _CustomZone.runGuarded ',
-    r'#11     _CustomZone.bindCallbackGuarded.<anonymous closure> ',
-    r'#12     _microtaskLoop ',
-    r'#13     _startMicrotaskLoop ',
-    r'#14     _runPendingImmediateCallback ',
-    r'#15     _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'#2      _rootRunUnary ',
+      r'#3      _CustomZone.runUnary ',
+      r'#4      _FutureListener.handleValue ',
+      r'#5      Future._propagateToListeners.handleValueCallback ',
+      r'#6      Future._propagateToListeners ',
+      r'#7      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'#8      _rootRun ',
+      r'#9      _CustomZone.run ',
+      r'#10     _CustomZone.runGuarded ',
+      r'#11     _CustomZone.bindCallbackGuarded.<anonymous closure> ',
+      r'#12     _microtaskLoop ',
+      r'#13     _startMicrotaskLoop ',
+      r'#14     _runPendingImmediateCallback ',
+      r'#15     _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(customErrorZone, expected, debugInfoFilename);
+    await doTestAwaitThen(customErrorZone, expected, debugInfoFilename);
+    await doTestAwaitCatchError(customErrorZone, expected, debugInfoFilename);
+  }
 
-  final awaitTimeoutExpected = const <String>[
-    r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
-  await doTestAwaitThen(awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(awaitTimeout, expected, debugInfoFilename);
+    await doTestAwaitThen(awaitTimeout, expected, debugInfoFilename);
+    await doTestAwaitCatchError(awaitTimeout, expected, debugInfoFilename);
+  }
 
-  final awaitWaitExpected = const <String>[
-    r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(awaitWait, awaitWaitExpected, debugInfoFilename);
-  await doTestAwaitThen(awaitWait, awaitWaitExpected, debugInfoFilename);
-  await doTestAwaitCatchError(awaitWait, awaitWaitExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(awaitWait, expected, debugInfoFilename);
+    await doTestAwaitThen(awaitWait, expected, debugInfoFilename);
+    await doTestAwaitCatchError(awaitWait, expected, debugInfoFilename);
+  }
 
   {
     final expected = const <String>[
@@ -642,333 +572,501 @@
     await doTestAwaitCatchError(
         futureSyncWhenComplete, expected, debugInfoFilename);
   }
+
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      futureThen.<anonymous closure> \(.*/utils.dart:187(:5)?\)$',
+      r'^#2      _RootZone.runUnary ',
+      r'^#3      _FutureListener.handleValue ',
+      r'^#4      Future._propagateToListeners.handleValueCallback ',
+      r'^#5      Future._propagateToListeners ',
+      r'^#6      Future._completeWithValue ',
+      r'^#7      Future._asyncCompleteWithValue.<anonymous closure> ',
+      r'^#8      _microtaskLoop ',
+      r'^#9      _startMicrotaskLoop ',
+      r'^#10     _runPendingImmediateCallback ',
+      r'^#11     _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(futureThen, expected, debugInfoFilename);
+    await doTestAwaitThen(futureThen, expected, debugInfoFilename);
+    await doTestAwaitCatchError(futureThen, expected, debugInfoFilename);
+  }
 }
 
 // For: --lazy-async-stacks
 Future<void> doTestsLazy([String? debugInfoFilename]) async {
-  final allYieldExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#3      allYield \(.*/utils.dart:29(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      allYield,
-      allYieldExpected +
-          const <String>[
-            r'^#4      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      allYield,
-      allYieldExpected +
-          const <String>[
-            r'^#4      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(allYield, allYieldExpected, debugInfoFilename);
+  // allYield
+  {
+    final allYieldExpected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#3      allYield \(.*/utils.dart:29(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        allYield,
+        allYieldExpected +
+            const <String>[
+              r'^#4      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        allYield,
+        allYieldExpected +
+            const <String>[
+              r'^#4      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        allYield,
+        allYieldExpected +
+            const <String>[
+              r'^#4      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final noYieldsExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
-    r'^#2      noYields2 \(.*/utils.dart:50(:9)?\)$',
-    r'^#3      noYields \(.*/utils.dart:46(:9)?\)$',
-  ];
-  await doTestAwait(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwait ',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwaitThen ',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwaitCatchError ',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
+  // noYields
+  {
+    final noYieldsExpected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
+      r'^#2      noYields2 \(.*/utils.dart:50(:9)?\)$',
+      r'^#3      noYields \(.*/utils.dart:46(:9)?\)$',
+    ];
+    await doTestAwait(
+        noYields,
+        noYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwait ',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        noYields,
+        noYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwaitThen ',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        noYields,
+        noYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwaitCatchError ',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final mixedYieldsExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      mixedYields3 \(.*/utils.dart:70(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      mixedYields2 \(.*/utils.dart:66(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#3      mixedYields \(.*/utils.dart:61(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      mixedYields,
-      mixedYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      mixedYields,
-      mixedYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      mixedYields, mixedYieldsExpected, debugInfoFilename);
+  // mixedYields
+  {
+    final mixedYieldsExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      mixedYields3 \(.*/utils.dart:70(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      mixedYields2 \(.*/utils.dart:66(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#3      mixedYields \(.*/utils.dart:61(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        mixedYields,
+        mixedYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        mixedYields,
+        mixedYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        mixedYields,
+        mixedYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final syncSuffixExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      syncSuffix2 \(.*/utils.dart:82(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      syncSuffix \(.*/utils.dart:77(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      syncSuffix,
-      syncSuffixExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      syncSuffix,
-      syncSuffixExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      syncSuffix, syncSuffixExpected, debugInfoFilename);
+  // syncSuffix
+  {
+    final syncSuffixExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      syncSuffix2 \(.*/utils.dart:82(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      syncSuffix \(.*/utils.dart:77(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        syncSuffix,
+        syncSuffixExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        syncSuffix,
+        syncSuffixExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        syncSuffix,
+        syncSuffixExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final nonAsyncNoStackExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      nonAsyncNoStack2 \(.*/utils.dart:97(:36)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      nonAsyncNoStack1 \(.*/utils.dart:95(:36)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#3      nonAsyncNoStack \(.*/utils.dart:93(:35)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      nonAsyncNoStack,
-      nonAsyncNoStackExpected +
-          const <String>[
-            r'^#4      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      nonAsyncNoStack,
-      nonAsyncNoStackExpected +
-          const <String>[
-            r'^#4      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
+  // nonAsyncNoStack
+  {
+    final nonAsyncNoStackExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      nonAsyncNoStack2 \(.*/utils.dart:97(:36)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      nonAsyncNoStack1 \(.*/utils.dart:95(:36)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#3      nonAsyncNoStack \(.*/utils.dart:93(:35)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        nonAsyncNoStack,
+        nonAsyncNoStackExpected +
+            const <String>[
+              r'^#4      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        nonAsyncNoStack,
+        nonAsyncNoStackExpected +
+            const <String>[
+              r'^#4      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        nonAsyncNoStack,
+        nonAsyncNoStackExpected +
+            const <String>[
+              r'^#4      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final asyncStarThrowSyncExpected = const <String>[
-    r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
-    r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitEveryAsyncStarThrowSync \(.+/utils.dart:104(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected, debugInfoFilename);
+  // awaitEveryAsyncStarThrowSync
+  {
+    final asyncStarThrowSyncExpected = const <String>[
+      r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
+      r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitEveryAsyncStarThrowSync \(.+/utils.dart:104(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowSync,
+        asyncStarThrowSyncExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowSync,
+        asyncStarThrowSyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowSync,
+        asyncStarThrowSyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final asyncStarThrowAsyncExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitEveryAsyncStarThrowAsync \(.+/utils.dart:117(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected, debugInfoFilename);
+  // awaitEveryAsyncStarThrowAsync
+  {
+    final asyncStarThrowAsyncExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitEveryAsyncStarThrowAsync \(.+/utils.dart:117(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowAsync,
+        asyncStarThrowAsyncExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowAsync,
+        asyncStarThrowAsyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowAsync,
+        asyncStarThrowAsyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final listenAsyncStartExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      listenAsyncStarThrowAsync.<anonymous closure> \(.+/utils.dart(:0)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+  // listenAsyncStarThrowAsync
+  {
+    final listenAsyncStartExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      listenAsyncStarThrowAsync.<anonymous closure> \(.+/utils.dart(:0)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+    await doTestAwaitThen(
+        listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+  }
 
-  final customErrorZoneExpected = const <String>[
-    r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'<asynchronous suspension>$',
-    r'#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
-    r'<asynchronous suspension>$',
-    r'#3      allYield \(.*/utils.dart:29(:3)?\)$',
-    r'<asynchronous suspension>$',
-    r'#4      customErrorZone.<anonymous closure> \(.*/utils.dart:144(:5)?\)$',
-    r'<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
+  // customErrorZone
+  {
+    final customErrorZoneExpected = const <String>[
+      r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'<asynchronous suspension>$',
+      r'#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
+      r'<asynchronous suspension>$',
+      r'#3      allYield \(.*/utils.dart:29(:3)?\)$',
+      r'<asynchronous suspension>$',
+      r'#4      customErrorZone.<anonymous closure> \(.*/utils.dart:144(:5)?\)$',
+      r'<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        customErrorZone, customErrorZoneExpected, debugInfoFilename);
+    await doTestAwaitThen(
+        customErrorZone, customErrorZoneExpected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        customErrorZone, customErrorZoneExpected, debugInfoFilename);
+  }
 
-  final awaitTimeoutExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      Future.timeout.<anonymous closure> \(dart:async/future_impl.dart',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitTimeout ',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitTimeout,
-      awaitTimeoutExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitTimeout,
-      awaitTimeoutExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
+  // awaitTimeout
+  {
+    final awaitTimeoutExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      Future.timeout.<anonymous closure> \(dart:async/future_impl.dart',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitTimeout ',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitTimeout,
+        awaitTimeoutExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitTimeout,
+        awaitTimeoutExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitTimeout,
+        awaitTimeoutExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
-  final awaitWaitExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      Future.wait.<anonymous closure> \(dart:async/future.dart',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitWait ',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitWait,
-      awaitWaitExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitWait,
-      awaitWaitExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(awaitWait, awaitWaitExpected, debugInfoFilename);
+  // awaitWait
+  {
+    final awaitWaitExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      Future.wait.<anonymous closure> \(dart:async/future.dart',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitWait ',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitWait,
+        awaitWaitExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitWait,
+        awaitWaitExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitWait,
+        awaitWaitExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
 
+  // futureSyncWhenComplete
   {
     final expected = const <String>[
       r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
@@ -990,11 +1088,70 @@
         futureSyncWhenComplete,
         expected +
             const <String>[
-              r'^#1      doTestAwaitThen.<anonymous closure> ',
+              r'^#1      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#2      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#3      main ',
               r'^<asynchronous suspension>$',
             ],
         debugInfoFilename);
     await doTestAwaitCatchError(
-        futureSyncWhenComplete, expected, debugInfoFilename);
+        futureSyncWhenComplete,
+        expected +
+            const <String>[
+              r'^#1      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#2      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#3      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // futureThen
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      futureThen.<anonymous closure> ',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        futureThen,
+        expected +
+            const <String>[
+              r'^#2      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#3      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#4      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        futureThen,
+        expected +
+            const <String>[
+              r'^#2      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#3      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#4      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        futureThen,
+        expected +
+            const <String>[
+              r'^#2      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#3      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#4      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
   }
 }
diff --git a/runtime/tests/vm/dart_2/causal_stacks/utils.dart b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
index 192984f..12083be 100644
--- a/runtime/tests/vm/dart_2/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
@@ -178,12 +178,22 @@
   return Future.sync(throwAsync).whenComplete(() => 'nop');
 }
 
+// ----
+// Scenario: Future.then:
+// ----
+
+Future futureThen() {
+  return Future.value(0).then((value) {
+    throwSync();
+  });
+}
+
 // Helpers:
 
 // We want lines that either start with a frame index or an async gap marker.
 final _lineRE = RegExp(r'^(?:#(?<number>\d+)|<asynchronous suspension>)');
 
-void assertStack(List<String> expects, StackTrace stackTrace,
+Future<void> assertStack(List<String> expects, StackTrace stackTrace,
     [String debugInfoFilename]) async {
   final original = await Stream.value(stackTrace.toString())
       .transform(const LineSplitter())
@@ -253,7 +263,7 @@
     await f();
     Expect.fail('No exception thrown!');
   } on String catch (e, s) {
-    assertStack(expectedStack, s, debugInfoFilename);
+    return assertStack(expectedStack, s, debugInfoFilename);
   }
 }
 
@@ -267,7 +277,7 @@
     await f().then((e) => Expect.fail('No exception thrown!'));
     Expect.fail('No exception thrown!');
   } on String catch (e, s) {
-    assertStack(expectedStack, s, debugInfoFilename);
+    return assertStack(expectedStack, s, debugInfoFilename);
   }
 }
 
@@ -278,7 +288,7 @@
   await f().catchError((e, s) {
     stackTrace = s;
   });
-  assertStack(expectedStack, stackTrace, debugInfoFilename);
+  return assertStack(expectedStack, stackTrace, debugInfoFilename);
 }
 
 // ----
@@ -287,342 +297,262 @@
 
 // For: --no-lazy-async-stacks
 Future<void> doTestsNoCausalNoLazy([String debugInfoFilename]) async {
-  final allYieldExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'^#2      _RootZone.runUnary ',
-    r'^#3      _FutureListener.handleValue ',
-    r'^#4      Future._propagateToListeners.handleValueCallback ',
-    r'^#5      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#7      _microtaskLoop ',
-    r'^#8      _startMicrotaskLoop ',
-    r'^#9      _runPendingImmediateCallback ',
-    r'^#10     _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(allYield, allYieldExpected, debugInfoFilename);
-  await doTestAwaitThen(allYield, allYieldExpected, debugInfoFilename);
-  await doTestAwaitCatchError(allYield, allYieldExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'^#2      _RootZone.runUnary ',
+      r'^#3      _FutureListener.handleValue ',
+      r'^#4      Future._propagateToListeners.handleValueCallback ',
+      r'^#5      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#7      _microtaskLoop ',
+      r'^#8      _startMicrotaskLoop ',
+      r'^#9      _runPendingImmediateCallback ',
+      r'^#10     _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(allYield, expected, debugInfoFilename);
+    await doTestAwaitThen(allYield, expected, debugInfoFilename);
+    await doTestAwaitCatchError(allYield, expected, debugInfoFilename);
+  }
 
-  final noYieldsExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
-    r'^#2      noYields3 \(.*/utils.dart:53(:23)?\)$',
-    r'^#3      noYields2 \(.*/utils.dart:50(:9)?\)$',
-    r'^#4      noYields2 \(.*/utils.dart:49(:23)?\)$',
-    r'^#5      noYields \(.*/utils.dart:46(:9)?\)$',
-    r'^#6      noYields \(.*/utils.dart:45(:22)?\)$',
-  ];
-  await doTestAwait(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#7      doTestAwait ',
-            r'^#8      doTestAwait ',
-            r'^#9      doTestsNoCausalNoLazy ',
-            r'^#10     _RootZone.runUnary ',
-            r'^#11     _FutureListener.handleValue ',
-            r'^#12     Future._propagateToListeners.handleValueCallback ',
-            r'^#13     Future._propagateToListeners ',
-            r'^#14     Future._completeWithValue ',
-            r'^#15     _completeOnAsyncReturn ',
-            r'^#16     doTestAwaitCatchError ',
-            r'^#17     _RootZone.runUnary ',
-            r'^#18     _FutureListener.handleValue ',
-            r'^#19     Future._propagateToListeners.handleValueCallback ',
-            r'^#20     Future._propagateToListeners ',
-            r'^#21     Future._completeError ',
-            r'^#22     _completeOnAsyncError ',
-            r'^#23     allYield ',
-            r'^#24     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#25     _RootZone.runBinary ',
-            r'^#26     _FutureListener.handleError ',
-            r'^#27     Future._propagateToListeners.handleError ',
-            r'^#28     Future._propagateToListeners ',
-            r'^#29     Future._completeError ',
-            r'^#30     _completeOnAsyncError ',
-            r'^#31     allYield2 ',
-            r'^#32     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#33     _RootZone.runBinary ',
-            r'^#34     _FutureListener.handleError ',
-            r'^#35     Future._propagateToListeners.handleError ',
-            r'^#36     Future._propagateToListeners ',
-            r'^#37     Future._completeError ',
-            r'^#38     _completeOnAsyncError ',
-            r'^#39     allYield3 ',
-            r'^#40     _RootZone.runUnary ',
-            r'^#41     _FutureListener.handleValue ',
-            r'^#42     Future._propagateToListeners.handleValueCallback ',
-            r'^#43     Future._propagateToListeners ',
-            r'^#44     Future._addListener.<anonymous closure> ',
-            r'^#45     _microtaskLoop ',
-            r'^#46     _startMicrotaskLoop ',
-            r'^#47     _runPendingImmediateCallback ',
-            r'^#48     _RawReceivePortImpl._handleMessage ',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#7      doTestAwaitThen ',
-            r'^#8      doTestAwaitThen ',
-            r'^#9      doTestsNoCausalNoLazy ',
-            r'^#10     _RootZone.runUnary ',
-            r'^#11     _FutureListener.handleValue ',
-            r'^#12     Future._propagateToListeners.handleValueCallback ',
-            r'^#13     Future._propagateToListeners ',
-            r'^#14     Future._completeWithValue ',
-            r'^#15     _completeOnAsyncReturn ',
-            r'^#16     doTestAwait ',
-            r'^#17     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#18     _RootZone.runBinary ',
-            r'^#19     _FutureListener.handleError ',
-            r'^#20     Future._propagateToListeners.handleError ',
-            r'^#21     Future._propagateToListeners ',
-            r'^#22     Future._completeError ',
-            r'^#23     _completeOnAsyncError ',
-            r'^#24     noYields ',
-            r'^#25     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#26     _RootZone.runBinary ',
-            r'^#27     _FutureListener.handleError ',
-            r'^#28     Future._propagateToListeners.handleError ',
-            r'^#29     Future._propagateToListeners ',
-            r'^#30     Future._completeError ',
-            r'^#31     _completeOnAsyncError ',
-            r'^#32     noYields2 ',
-            r'^#33     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#34     _RootZone.runBinary ',
-            r'^#35     _FutureListener.handleError ',
-            r'^#36     Future._propagateToListeners.handleError ',
-            r'^#37     Future._propagateToListeners ',
-            r'^#38     Future._completeError ',
-            r'^#39     Future._asyncCompleteError.<anonymous closure> ',
-            r'^#40     _microtaskLoop ',
-            r'^#41     _startMicrotaskLoop ',
-            r'^#42     _runPendingImmediateCallback ',
-            r'^#43     _RawReceivePortImpl._handleMessage ',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#7      doTestAwaitCatchError ',
-            r'^#8      doTestAwaitCatchError ',
-            r'^#9      doTestsNoCausalNoLazy ',
-            r'^#10     _RootZone.runUnary ',
-            r'^#11     _FutureListener.handleValue ',
-            r'^#12     Future._propagateToListeners.handleValueCallback ',
-            r'^#13     Future._propagateToListeners ',
-            r'^#14     Future._completeWithValue ',
-            r'^#15     _completeOnAsyncReturn ',
-            r'^#16     doTestAwaitThen ',
-            r'^#17     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#18     _RootZone.runBinary ',
-            r'^#19     _FutureListener.handleError ',
-            r'^#20     Future._propagateToListeners.handleError ',
-            r'^#21     Future._propagateToListeners ',
-            r'^#22     Future._completeError ',
-            r'^#23     _completeOnAsyncError ',
-            r'^#24     noYields ',
-            r'^#25     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#26     _RootZone.runBinary ',
-            r'^#27     _FutureListener.handleError ',
-            r'^#28     Future._propagateToListeners.handleError ',
-            r'^#29     Future._propagateToListeners ',
-            r'^#30     Future._completeError ',
-            r'^#31     _completeOnAsyncError ',
-            r'^#32     noYields2 ',
-            r'^#33     _asyncErrorWrapperHelper.errorCallback ',
-            r'^#34     _RootZone.runBinary ',
-            r'^#35     _FutureListener.handleError ',
-            r'^#36     Future._propagateToListeners.handleError ',
-            r'^#37     Future._propagateToListeners ',
-            r'^#38     Future._completeError ',
-            r'^#39     Future._asyncCompleteError.<anonymous closure> ',
-            r'^#40     _microtaskLoop ',
-            r'^#41     _startMicrotaskLoop ',
-            r'^#42     _runPendingImmediateCallback ',
-            r'^#43     _RawReceivePortImpl._handleMessage ',
-          ],
-      debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
+      r'^#2      noYields3 \(.*/utils.dart:53(:23)?\)$',
+      r'^#3      noYields2 \(.*/utils.dart:50(:9)?\)$',
+      r'^#4      noYields2 \(.*/utils.dart:49(:23)?\)$',
+      r'^#5      noYields \(.*/utils.dart:46(:9)?\)$',
+      r'^#6      noYields \(.*/utils.dart:45(:22)?\)$',
+    ];
+    final postfix = const <String>[
+      r'^#9      doTestsNoCausalNoLazy ',
+      r'^#10     _RootZone.runUnary ',
+      r'^#11     _FutureListener.handleValue ',
+      r'^#12     Future._propagateToListeners.handleValueCallback ',
+      r'^#13     Future._propagateToListeners ',
+      r'^#14     Future._addListener.<anonymous closure> ',
+      r'^#15     _microtaskLoop ',
+      r'^#16     _startMicrotaskLoop ',
+      r'^#17     _runPendingImmediateCallback ',
+      r'^#18     _RawReceivePortImpl._handleMessage ',
+    ];
+    await 0; // Don't let the `await do..`s chain together.
+    await doTestAwait(
+        noYields,
+        expected +
+            const <String>[
+              r'^#7      doTestAwait ',
+              r'^#8      doTestAwait ',
+            ] +
+            postfix,
+        debugInfoFilename);
+    await 0; // Don't let the `await do..`s chain together.
+    await doTestAwaitThen(
+        noYields,
+        expected +
+            const <String>[
+              r'^#7      doTestAwaitThen ',
+              r'^#8      doTestAwaitThen ',
+            ] +
+            postfix,
+        debugInfoFilename);
+    await 0; // Don't let the `await do..`s chain together.
+    await doTestAwaitCatchError(
+        noYields,
+        expected +
+            const <String>[
+              r'^#7      doTestAwaitCatchError ',
+              r'^#8      doTestAwaitCatchError ',
+            ] +
+            postfix,
+        debugInfoFilename);
+  }
 
-  final mixedYieldsExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(mixedYields, mixedYieldsExpected, debugInfoFilename);
-  await doTestAwaitThen(mixedYields, mixedYieldsExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      mixedYields, mixedYieldsExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(mixedYields, expected, debugInfoFilename);
+    await doTestAwaitThen(mixedYields, expected, debugInfoFilename);
+    await doTestAwaitCatchError(mixedYields, expected, debugInfoFilename);
+  }
 
-  final syncSuffixExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(syncSuffix, syncSuffixExpected, debugInfoFilename);
-  await doTestAwaitThen(syncSuffix, syncSuffixExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      syncSuffix, syncSuffixExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(syncSuffix, expected, debugInfoFilename);
+    await doTestAwaitThen(syncSuffix, expected, debugInfoFilename);
+    await doTestAwaitCatchError(syncSuffix, expected, debugInfoFilename);
+  }
 
-  final nonAsyncNoStackExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(nonAsyncNoStack, expected, debugInfoFilename);
+    await doTestAwaitThen(nonAsyncNoStack, expected, debugInfoFilename);
+    await doTestAwaitCatchError(nonAsyncNoStack, expected, debugInfoFilename);
+  }
 
-  final asyncStarThrowSyncExpected = const <String>[
-    r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
-    r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
-    r'^#2      _RootZone.runUnary \(.+\)$',
-    r'^#3      _FutureListener.handleValue \(.+\)$',
-    r'^#4      Future._propagateToListeners.handleValueCallback \(.+\)$',
-    r'^#5      Future._propagateToListeners \(.+\)$',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> \(.+\)$',
-    r'^#7      _microtaskLoop \(.+\)$',
-    r'^#8      _startMicrotaskLoop \(.+\)$',
-    r'^#9      _runPendingImmediateCallback \(.+\)$',
-    r'^#10     _RawReceivePortImpl._handleMessage \(.+\)$',
-  ];
-  await doTestAwait(awaitEveryAsyncStarThrowSync, asyncStarThrowSyncExpected,
-      debugInfoFilename);
-  await doTestAwaitThen(awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected, debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
+      r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
+      r'^#2      _RootZone.runUnary \(.+\)$',
+      r'^#3      _FutureListener.handleValue \(.+\)$',
+      r'^#4      Future._propagateToListeners.handleValueCallback \(.+\)$',
+      r'^#5      Future._propagateToListeners \(.+\)$',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#6      Future.(_addListener|_prependListeners).<anonymous closure> \(.+\)$',
+      r'^#7      _microtaskLoop \(.+\)$',
+      r'^#8      _startMicrotaskLoop \(.+\)$',
+      r'^#9      _runPendingImmediateCallback \(.+\)$',
+      r'^#10     _RawReceivePortImpl._handleMessage \(.+\)$',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
+  }
 
-  final asyncStarThrowAsyncExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(awaitEveryAsyncStarThrowAsync, asyncStarThrowAsyncExpected,
-      debugInfoFilename);
-  await doTestAwaitThen(awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected, debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
+  }
 
-  final listenAsyncStartExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    // TODO(dart-vm): Figure out why this is inconsistent:
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      // TODO(dart-vm): Figure out why this is inconsistent:
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(listenAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitThen(
+        listenAsyncStarThrowAsync, expected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        listenAsyncStarThrowAsync, expected, debugInfoFilename);
+  }
 
-  final customErrorZoneExpected = const <String>[
-    r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'#2      _rootRunUnary ',
-    r'#3      _CustomZone.runUnary ',
-    r'#4      _FutureListener.handleValue ',
-    r'#5      Future._propagateToListeners.handleValueCallback ',
-    r'#6      Future._propagateToListeners ',
-    r'#7      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'#8      _rootRun ',
-    r'#9      _CustomZone.run ',
-    r'#10     _CustomZone.runGuarded ',
-    r'#11     _CustomZone.bindCallbackGuarded.<anonymous closure> ',
-    r'#12     _microtaskLoop ',
-    r'#13     _startMicrotaskLoop ',
-    r'#14     _runPendingImmediateCallback ',
-    r'#15     _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'#2      _rootRunUnary ',
+      r'#3      _CustomZone.runUnary ',
+      r'#4      _FutureListener.handleValue ',
+      r'#5      Future._propagateToListeners.handleValueCallback ',
+      r'#6      Future._propagateToListeners ',
+      r'#7      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'#8      _rootRun ',
+      r'#9      _CustomZone.run ',
+      r'#10     _CustomZone.runGuarded ',
+      r'#11     _CustomZone.bindCallbackGuarded.<anonymous closure> ',
+      r'#12     _microtaskLoop ',
+      r'#13     _startMicrotaskLoop ',
+      r'#14     _runPendingImmediateCallback ',
+      r'#15     _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(customErrorZone, expected, debugInfoFilename);
+    await doTestAwaitThen(customErrorZone, expected, debugInfoFilename);
+    await doTestAwaitCatchError(customErrorZone, expected, debugInfoFilename);
+  }
 
-  final awaitTimeoutExpected = const <String>[
-    r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
-  await doTestAwaitThen(awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(awaitTimeout, expected, debugInfoFilename);
+    await doTestAwaitThen(awaitTimeout, expected, debugInfoFilename);
+    await doTestAwaitCatchError(awaitTimeout, expected, debugInfoFilename);
+  }
 
-  final awaitWaitExpected = const <String>[
-    r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^#1      _RootZone.runUnary ',
-    r'^#2      _FutureListener.handleValue ',
-    r'^#3      Future._propagateToListeners.handleValueCallback ',
-    r'^#4      Future._propagateToListeners ',
-    r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
-    r'^#6      _microtaskLoop ',
-    r'^#7      _startMicrotaskLoop ',
-    r'^#8      _runPendingImmediateCallback ',
-    r'^#9      _RawReceivePortImpl._handleMessage ',
-  ];
-  await doTestAwait(awaitWait, awaitWaitExpected, debugInfoFilename);
-  await doTestAwaitThen(awaitWait, awaitWaitExpected, debugInfoFilename);
-  await doTestAwaitCatchError(awaitWait, awaitWaitExpected, debugInfoFilename);
+  {
+    final expected = const <String>[
+      r'#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^#1      _RootZone.runUnary ',
+      r'^#2      _FutureListener.handleValue ',
+      r'^#3      Future._propagateToListeners.handleValueCallback ',
+      r'^#4      Future._propagateToListeners ',
+      r'^#5      Future.(_addListener|_prependListeners).<anonymous closure> ',
+      r'^#6      _microtaskLoop ',
+      r'^#7      _startMicrotaskLoop ',
+      r'^#8      _runPendingImmediateCallback ',
+      r'^#9      _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(awaitWait, expected, debugInfoFilename);
+    await doTestAwaitThen(awaitWait, expected, debugInfoFilename);
+    await doTestAwaitCatchError(awaitWait, expected, debugInfoFilename);
+  }
 
   {
     final expected = const <String>[
@@ -642,337 +572,505 @@
     await doTestAwaitCatchError(
         futureSyncWhenComplete, expected, debugInfoFilename);
   }
+
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      futureThen.<anonymous closure> \(.*/utils.dart:187(:5)?\)$',
+      r'^#2      _RootZone.runUnary ',
+      r'^#3      _FutureListener.handleValue ',
+      r'^#4      Future._propagateToListeners.handleValueCallback ',
+      r'^#5      Future._propagateToListeners ',
+      r'^#6      Future._completeWithValue ',
+      r'^#7      Future._asyncCompleteWithValue.<anonymous closure> ',
+      r'^#8      _microtaskLoop ',
+      r'^#9      _startMicrotaskLoop ',
+      r'^#10     _runPendingImmediateCallback ',
+      r'^#11     _RawReceivePortImpl._handleMessage ',
+    ];
+    await doTestAwait(futureThen, expected, debugInfoFilename);
+    await doTestAwaitThen(futureThen, expected, debugInfoFilename);
+    await doTestAwaitCatchError(futureThen, expected, debugInfoFilename);
+  }
 }
 
 // For: --lazy-async-stacks
 Future<void> doTestsLazy([String debugInfoFilename]) async {
-  final allYieldExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#3      allYield \(.*/utils.dart:29(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      allYield,
-      allYieldExpected +
-          const <String>[
-            r'^#4      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      allYield,
-      allYieldExpected +
-          const <String>[
-            r'^#4      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(allYield, allYieldExpected, debugInfoFilename);
-
-  final noYieldsExpected = const <String>[
-    r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
-    r'^#2      noYields2 \(.*/utils.dart:50(:9)?\)$',
-    r'^#3      noYields \(.*/utils.dart:46(:9)?\)$',
-  ];
-  await doTestAwait(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwait ',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwaitThen ',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      noYields,
-      noYieldsExpected +
-          const <String>[
-            r'^#4      doTestAwaitCatchError ',
-            r'^#5      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#6      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-
-  final mixedYieldsExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      mixedYields2 \(.*/utils.dart:66(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      mixedYields \(.*/utils.dart:61(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      mixedYields,
-      mixedYieldsExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      mixedYields,
-      mixedYieldsExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      mixedYields, mixedYieldsExpected, debugInfoFilename);
-
-  final syncSuffixExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      syncSuffix2 \(.*/utils.dart:82(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      syncSuffix \(.*/utils.dart:77(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      syncSuffix,
-      syncSuffixExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      syncSuffix,
-      syncSuffixExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      syncSuffix, syncSuffixExpected, debugInfoFilename);
-
-  final nonAsyncNoStackExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      nonAsyncNoStack1 \(.*/utils.dart:95(:36)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      nonAsyncNoStack \(.*/utils.dart:93(:35)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      nonAsyncNoStack,
-      nonAsyncNoStackExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      nonAsyncNoStack,
-      nonAsyncNoStackExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      nonAsyncNoStack, nonAsyncNoStackExpected, debugInfoFilename);
-
-  final asyncStarThrowSyncExpected = const <String>[
-    r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
-    r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitEveryAsyncStarThrowSync \(.+/utils.dart:104(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowSync,
-      asyncStarThrowSyncExpected, debugInfoFilename);
-
-  final asyncStarThrowAsyncExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitEveryAsyncStarThrowAsync \(.+/utils.dart:117(:3)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(awaitEveryAsyncStarThrowAsync,
-      asyncStarThrowAsyncExpected, debugInfoFilename);
-
-  final listenAsyncStartExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#2      listenAsyncStarThrowAsync.<anonymous closure> \(.+/utils.dart(:0)?\)$',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
-
-  final customErrorZoneExpected = const <String>[
-    r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
-    r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
-    r'<asynchronous suspension>$',
-    r'#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
-    r'<asynchronous suspension>$',
-    r'#3      allYield \(.*/utils.dart:29(:3)?\)$',
-    r'<asynchronous suspension>$',
-    r'#4      customErrorZone.<anonymous closure> \(.*/utils.dart:144(:5)?\)$',
-    r'<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitThen(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-  await doTestAwaitCatchError(
-      customErrorZone, customErrorZoneExpected, debugInfoFilename);
-
-  final awaitTimeoutExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      Future.timeout.<anonymous closure> \(dart:async/future_impl.dart',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitTimeout ',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitTimeout,
-      awaitTimeoutExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitTimeout,
-      awaitTimeoutExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(
-      awaitTimeout, awaitTimeoutExpected, debugInfoFilename);
-
-  final awaitWaitExpected = const <String>[
-    r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
-    r'^<asynchronous suspension>$',
-    r'^#1      Future.wait.<anonymous closure> \(dart:async/future.dart',
-    r'^<asynchronous suspension>$',
-    r'^#2      awaitWait ',
-    r'^<asynchronous suspension>$',
-  ];
-  await doTestAwait(
-      awaitWait,
-      awaitWaitExpected +
-          const <String>[
-            r'^#3      doTestAwait ',
-            r'^<asynchronous suspension>$',
-            r'^#4      doTestsLazy ',
-            r'^<asynchronous suspension>$',
-            r'^#5      main ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitThen(
-      awaitWait,
-      awaitWaitExpected +
-          const <String>[
-            r'^#3      doTestAwaitThen.<anonymous closure> ',
-            r'^<asynchronous suspension>$',
-          ],
-      debugInfoFilename);
-  await doTestAwaitCatchError(awaitWait, awaitWaitExpected, debugInfoFilename);
-
+  // allYield
   {
-    final expect = const <String>[
+    final allYieldExpected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#3      allYield \(.*/utils.dart:29(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        allYield,
+        allYieldExpected +
+            const <String>[
+              r'^#4      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        allYield,
+        allYieldExpected +
+            const <String>[
+              r'^#4      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        allYield,
+        allYieldExpected +
+            const <String>[
+              r'^#4      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // noYields
+  {
+    final noYieldsExpected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      noYields3 \(.*/utils.dart:54(:3)?\)$',
+      r'^#2      noYields2 \(.*/utils.dart:50(:9)?\)$',
+      r'^#3      noYields \(.*/utils.dart:46(:9)?\)$',
+    ];
+    await doTestAwait(
+        noYields,
+        noYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwait ',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        noYields,
+        noYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwaitThen ',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        noYields,
+        noYieldsExpected +
+            const <String>[
+              r'^#4      doTestAwaitCatchError ',
+              r'^#5      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#6      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // mixedYields
+  {
+    final mixedYieldsExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      mixedYields2 \(.*/utils.dart:66(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      mixedYields \(.*/utils.dart:61(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        mixedYields,
+        mixedYieldsExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        mixedYields,
+        mixedYieldsExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        mixedYields,
+        mixedYieldsExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // syncSuffix
+  {
+    final syncSuffixExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      syncSuffix2 \(.*/utils.dart:82(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      syncSuffix \(.*/utils.dart:77(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        syncSuffix,
+        syncSuffixExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        syncSuffix,
+        syncSuffixExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        syncSuffix,
+        syncSuffixExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // nonAsyncNoStack
+  {
+    final nonAsyncNoStackExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      nonAsyncNoStack1 \(.*/utils.dart:95(:36)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      nonAsyncNoStack \(.*/utils.dart:93(:35)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        nonAsyncNoStack,
+        nonAsyncNoStackExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        nonAsyncNoStack,
+        nonAsyncNoStackExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        nonAsyncNoStack,
+        nonAsyncNoStackExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // awaitEveryAsyncStarThrowSync
+  {
+    final asyncStarThrowSyncExpected = const <String>[
+      r'^#0      throwSync \(.+/utils.dart:16(:3)?\)$',
+      r'^#1      asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitEveryAsyncStarThrowSync \(.+/utils.dart:104(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowSync,
+        asyncStarThrowSyncExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowSync,
+        asyncStarThrowSyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowSync,
+        asyncStarThrowSyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // awaitEveryAsyncStarThrowAsync
+  {
+    final asyncStarThrowAsyncExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitEveryAsyncStarThrowAsync \(.+/utils.dart:117(:3)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitEveryAsyncStarThrowAsync,
+        asyncStarThrowAsyncExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitEveryAsyncStarThrowAsync,
+        asyncStarThrowAsyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitEveryAsyncStarThrowAsync,
+        asyncStarThrowAsyncExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // listenAsyncStarThrowAsync
+  {
+    final listenAsyncStartExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      asyncStarThrowAsync \(.*/utils.dart:126(:5)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#2      listenAsyncStarThrowAsync.<anonymous closure> \(.+/utils.dart(:0)?\)$',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+    await doTestAwaitThen(
+        listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        listenAsyncStarThrowAsync, listenAsyncStartExpected, debugInfoFilename);
+  }
+
+  // customErrorZone
+  {
+    final customErrorZoneExpected = const <String>[
+      r'#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'#1      allYield3 \(.*/utils.dart:39(:3)?\)$',
+      r'<asynchronous suspension>$',
+      r'#2      allYield2 \(.*/utils.dart:34(:3)?\)$',
+      r'<asynchronous suspension>$',
+      r'#3      allYield \(.*/utils.dart:29(:3)?\)$',
+      r'<asynchronous suspension>$',
+      r'#4      customErrorZone.<anonymous closure> \(.*/utils.dart:144(:5)?\)$',
+      r'<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        customErrorZone, customErrorZoneExpected, debugInfoFilename);
+    await doTestAwaitThen(
+        customErrorZone, customErrorZoneExpected, debugInfoFilename);
+    await doTestAwaitCatchError(
+        customErrorZone, customErrorZoneExpected, debugInfoFilename);
+  }
+
+  // awaitTimeout
+  {
+    final awaitTimeoutExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      Future.timeout.<anonymous closure> \(dart:async/future_impl.dart',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitTimeout ',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitTimeout,
+        awaitTimeoutExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitTimeout,
+        awaitTimeoutExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitTimeout,
+        awaitTimeoutExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // awaitWait
+  {
+    final awaitWaitExpected = const <String>[
+      r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
+      r'^<asynchronous suspension>$',
+      r'^#1      Future.wait.<anonymous closure> \(dart:async/future.dart',
+      r'^<asynchronous suspension>$',
+      r'^#2      awaitWait ',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        awaitWait,
+        awaitWaitExpected +
+            const <String>[
+              r'^#3      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        awaitWait,
+        awaitWaitExpected +
+            const <String>[
+              r'^#3      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        awaitWait,
+        awaitWaitExpected +
+            const <String>[
+              r'^#3      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#4      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#5      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // futureSyncWhenComplete
+  {
+    final expected = const <String>[
       r'^#0      throwAsync \(.*/utils.dart:21(:3)?\)$',
       r'^<asynchronous suspension>$',
     ];
     await doTestAwait(
         futureSyncWhenComplete,
-        expect +
+        expected +
             const <String>[
               r'^#1      doTestAwait ',
               r'^<asynchronous suspension>$',
@@ -984,13 +1082,72 @@
         debugInfoFilename);
     await doTestAwaitThen(
         futureSyncWhenComplete,
-        expect +
+        expected +
             const <String>[
-              r'^#1      doTestAwaitThen.<anonymous closure> ',
+              r'^#1      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#2      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#3      main ',
               r'^<asynchronous suspension>$',
             ],
         debugInfoFilename);
     await doTestAwaitCatchError(
-        futureSyncWhenComplete, expect, debugInfoFilename);
+        futureSyncWhenComplete,
+        expected +
+            const <String>[
+              r'^#1      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#2      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#3      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+  }
+
+  // futureThen
+  {
+    final expected = const <String>[
+      r'^#0      throwSync \(.*/utils.dart:16(:3)?\)$',
+      r'^#1      futureThen.<anonymous closure> ',
+      r'^<asynchronous suspension>$',
+    ];
+    await doTestAwait(
+        futureThen,
+        expected +
+            const <String>[
+              r'^#2      doTestAwait ',
+              r'^<asynchronous suspension>$',
+              r'^#3      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#4      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitThen(
+        futureThen,
+        expected +
+            const <String>[
+              r'^#2      doTestAwaitThen ',
+              r'^<asynchronous suspension>$',
+              r'^#3      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#4      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
+    await doTestAwaitCatchError(
+        futureThen,
+        expected +
+            const <String>[
+              r'^#2      doTestAwaitCatchError ',
+              r'^<asynchronous suspension>$',
+              r'^#3      doTestsLazy ',
+              r'^<asynchronous suspension>$',
+              r'^#4      main ',
+              r'^<asynchronous suspension>$',
+            ],
+        debugInfoFilename);
   }
 }
diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h
index 185af0a..6822001 100644
--- a/runtime/vm/compiler/recognized_methods_list.h
+++ b/runtime/vm/compiler/recognized_methods_list.h
@@ -196,6 +196,8 @@
   V(_Utf8Decoder, _scan, Utf8DecoderScan, 0xb35ced99)                          \
   V(_Future, timeout, FutureTimeout, 0x6ad7d1ef)                               \
   V(Future, wait, FutureWait, 0x264aacc2)                                      \
+  V(_RootZone, runUnary, RootZoneRunUnary, 0x76e41d34)                         \
+  V(_FutureListener, handleValue, FutureListenerHandleValue, 0x73894d16)       \
 
 // List of intrinsics:
 // (class-name, function-name, intrinsification method, fingerprint).
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 7f6775d..51975f3 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -1848,7 +1848,7 @@
                                      /*skip_frames=*/0, &on_sync_frame,
                                      &has_async);
 
-  // If the entire stack is sync, return no trace.
+  // If the entire stack is sync, return no (async) trace.
   if (!has_async) {
     return nullptr;
   }
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index 5a6c5a9..96ad60d 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -528,6 +528,19 @@
   frames_.Unpoison();
 }
 
+StackFrameIterator::StackFrameIterator(const StackFrameIterator& orig)
+    : validate_(orig.validate_),
+      entry_(orig.thread_),
+      exit_(orig.thread_),
+      frames_(orig.thread_),
+      current_frame_(nullptr),
+      thread_(orig.thread_) {
+  frames_.fp_ = orig.frames_.fp_;
+  frames_.sp_ = orig.frames_.sp_;
+  frames_.pc_ = orig.frames_.pc_;
+  frames_.Unpoison();
+}
+
 StackFrame* StackFrameIterator::NextFrame() {
   // When we are at the start of iteration after having created an
   // iterator object, current_frame_ will be NULL as we haven't seen
diff --git a/runtime/vm/stack_frame.h b/runtime/vm/stack_frame.h
index 92f864f..6969642 100644
--- a/runtime/vm/stack_frame.h
+++ b/runtime/vm/stack_frame.h
@@ -236,6 +236,8 @@
                      Thread* thread,
                      CrossThreadPolicy cross_thread_policy);
 
+  StackFrameIterator(const StackFrameIterator& orig);
+
   // Checks if a next frame exists.
   bool HasNextFrame() const { return frames_.fp_ != 0; }
 
@@ -300,7 +302,6 @@
   Thread* thread_;
 
   friend class ProfilerDartStackWalker;
-  DISALLOW_COPY_AND_ASSIGN(StackFrameIterator);
 };
 
 // Iterator for iterating over all dart frames (skips over exit frames,
@@ -339,6 +340,8 @@
                 thread,
                 cross_thread_policy) {}
 
+  DartFrameIterator(const DartFrameIterator& orig) : frames_(orig.frames_) {}
+
   // Get next dart frame.
   StackFrame* NextFrame() {
     StackFrame* frame = frames_.NextFrame();
@@ -350,8 +353,6 @@
 
  private:
   StackFrameIterator frames_;
-
-  DISALLOW_COPY_AND_ASSIGN(DartFrameIterator);
 };
 
 // Iterator for iterating over all inlined dart functions in an optimized
diff --git a/runtime/vm/stack_trace.cc b/runtime/vm/stack_trace.cc
index ae8849a..18aebc1 100644
--- a/runtime/vm/stack_trace.cc
+++ b/runtime/vm/stack_trace.cc
@@ -10,11 +10,18 @@
 
 namespace dart {
 
-// Keep in sync with
-// sdk/lib/async/stream_controller.dart:_StreamController._STATE_SUBSCRIBED.
+// Keep in sync with:
+// - sdk/lib/async/stream_controller.dart:_StreamController._STATE_SUBSCRIBED.
 const intptr_t k_StreamController__STATE_SUBSCRIBED = 1;
-// sdk/lib/async/future_impl.dart:_FutureListener.stateWhencomplete.
-const intptr_t k_FutureListener_stateWhencomplete = 8;
+// - sdk/lib/async/future_impl.dart:_FutureListener.stateThen.
+const intptr_t k_FutureListener_stateThen = 1;
+// - sdk/lib/async/future_impl.dart:_FutureListener.stateCatchError.
+const intptr_t k_FutureListener_stateCatchError = 2;
+// - sdk/lib/async/future_impl.dart:_FutureListener.stateWhenComplete.
+const intptr_t k_FutureListener_stateWhenComplete = 8;
+
+// Keep in sync with sdk/lib/async/future_impl.dart:_FutureListener.handleValue.
+const intptr_t kNumArgsFutureListenerHandleValue = 1;
 
 // Find current yield index from async closure.
 // Async closures contains a variable, :await_jump_var that holds the index into
@@ -140,21 +147,19 @@
   ASSERT(!future.IsNull());
   ASSERT(future.GetClassId() == future_impl_class.id());
 
-  listener_ = Instance::Cast(future).GetField(future_result_or_listeners_field);
-  if (listener_.GetClassId() != future_listener_class.id()) {
+  // Since this function is recursive, we have to keep a local ref.
+  auto& listener = Object::Handle(
+      Instance::Cast(future).GetField(future_result_or_listeners_field));
+  if (listener.GetClassId() != future_listener_class.id()) {
     return Closure::null();
   }
 
-  // If the _FutureListener is a whenComplete listener, follow the Future being
-  // completed, `result`, instead of the dangling whenComplete `callback`.
-  state_ = Instance::Cast(listener_).GetField(future_listener_state_field);
-  ASSERT(state_.IsSmi());
-  if (Smi::Cast(state_).Value() == k_FutureListener_stateWhencomplete) {
-    future_ = Instance::Cast(listener_).GetField(future_listener_result_field);
-    return GetCallerInFutureImpl(future_);
+  callback_ = GetCallerInFutureListener(listener);
+  if (callback_.IsInstance() && !callback_.IsNull()) {
+    return Closure::Cast(callback_).ptr();
   }
 
-  callback_ = Instance::Cast(listener_).GetField(callback_field);
+  callback_ = Instance::Cast(listener).GetField(callback_field);
   // This happens for e.g.: await f().catchError(..);
   if (callback_.IsNull()) {
     return Closure::null();
@@ -221,22 +226,46 @@
   UNREACHABLE();  // If no onData is found we have a bug.
 }
 
+ClosurePtr CallerClosureFinder::GetCallerInFutureListener(
+    const Object& future_listener) {
+  ASSERT(future_listener.GetClassId() == future_listener_class.id());
+
+  state_ =
+      Instance::Cast(future_listener).GetField(future_listener_state_field);
+
+  auto value = Smi::Cast(state_).Value();
+  // If the _FutureListener is a `then`, `catchError`, or `whenComplete`
+  // listener, follow the Future being completed, `result`, instead of the
+  // dangling whenComplete `callback`.
+  if (value == k_FutureListener_stateThen ||
+      value == k_FutureListener_stateCatchError ||
+      value == k_FutureListener_stateWhenComplete) {
+    future_ =
+        Instance::Cast(future_listener).GetField(future_listener_result_field);
+    return GetCallerInFutureImpl(future_);
+  }
+
+  return Closure::null();
+}
+
 ClosurePtr CallerClosureFinder::FindCaller(const Closure& receiver_closure) {
   receiver_function_ = receiver_closure.function();
   receiver_context_ = receiver_closure.context();
 
   if (receiver_function_.IsAsyncClosure()) {
     return FindCallerInAsyncClosure(receiver_context_);
-  } else if (receiver_function_.IsAsyncGenClosure()) {
+  }
+  if (receiver_function_.IsAsyncGenClosure()) {
     return FindCallerInAsyncGenClosure(receiver_context_);
-  } else if (receiver_function_.IsLocalFunction()) {
+  }
+  if (receiver_function_.IsLocalFunction()) {
     parent_function_ = receiver_function_.parent_function();
     if (parent_function_.recognized_kind() ==
         MethodRecognizer::kFutureTimeout) {
       context_entry_ = receiver_context_.At(Context::kFutureTimeoutFutureIndex);
       return GetCallerInFutureImpl(context_entry_);
-    } else if (parent_function_.recognized_kind() ==
-               MethodRecognizer::kFutureWait) {
+    }
+    if (parent_function_.recognized_kind() == MethodRecognizer::kFutureWait) {
       receiver_context_ = receiver_context_.parent();
       ASSERT(!receiver_context_.IsNull());
       context_entry_ = receiver_context_.At(Context::kFutureWaitFutureIndex);
@@ -300,6 +329,110 @@
   UNREACHABLE();
 }
 
+ClosurePtr StackTraceUtils::ClosureFromFrameFunction(
+    Zone* zone,
+    CallerClosureFinder* caller_closure_finder,
+    const DartFrameIterator& frames,
+    StackFrame* frame,
+    bool* skip_frame,
+    bool* is_async) {
+  auto& closure = Closure::Handle(zone);
+  auto& function = Function::Handle(zone);
+
+  function = frame->LookupDartFunction();
+  if (function.IsNull()) {
+    return Closure::null();
+  }
+
+  if (function.IsAsyncClosure() || function.IsAsyncGenClosure()) {
+    // Next, look up caller's closure on the stack and walk backwards
+    // through the yields.
+    ObjectPtr* last_caller_obj =
+        reinterpret_cast<ObjectPtr*>(frame->GetCallerSp());
+    closure = FindClosureInFrame(last_caller_obj, function);
+
+    // If this async function hasn't yielded yet, we're still dealing with a
+    // normal stack. Continue to next frame as usual.
+    if (!caller_closure_finder->IsRunningAsync(closure)) {
+      return Closure::null();
+    }
+
+    *is_async = true;
+
+    // Skip: Already handled this as a sync. frame.
+    return caller_closure_finder->FindCaller(closure);
+  }
+
+  // May have been called from `_FutureListener.handleValue`, which means its
+  // receiver holds the Future chain.
+  DartFrameIterator future_frames(frames);
+  if (function.recognized_kind() == MethodRecognizer::kRootZoneRunUnary) {
+    frame = future_frames.NextFrame();
+    function = frame->LookupDartFunction();
+    if (function.recognized_kind() !=
+        MethodRecognizer::kFutureListenerHandleValue) {
+      return Closure::null();
+    }
+  }
+  if (function.recognized_kind() ==
+      MethodRecognizer::kFutureListenerHandleValue) {
+    *is_async = true;
+    *skip_frame = true;
+
+    // The _FutureListener receiver is at the top of the previous frame, right
+    // before the arguments to the call.
+    Object& receiver =
+        Object::Handle(*(reinterpret_cast<ObjectPtr*>(frame->GetCallerSp()) +
+                         kNumArgsFutureListenerHandleValue));
+
+    return caller_closure_finder->GetCallerInFutureListener(receiver);
+  }
+
+  return Closure::null();
+}
+
+void StackTraceUtils::UnwindAwaiterChain(
+    Zone* zone,
+    const GrowableObjectArray& code_array,
+    const GrowableObjectArray& pc_offset_array,
+    CallerClosureFinder* caller_closure_finder,
+    const Closure& leaf_closure) {
+  auto& code = Code::Handle(zone);
+  auto& function = Function::Handle(zone);
+  auto& closure = Closure::Handle(zone, leaf_closure.ptr());
+  auto& pc_descs = PcDescriptors::Handle(zone);
+  auto& offset = Smi::Handle(zone);
+
+  // Inject async suspension marker.
+  code_array.Add(StubCode::AsynchronousGapMarker());
+  offset = Smi::New(0);
+  pc_offset_array.Add(offset);
+
+  // Traverse the trail of async futures all the way up.
+  for (; !closure.IsNull();
+       closure = caller_closure_finder->FindCaller(closure)) {
+    function = closure.function();
+    if (function.IsNull()) {
+      continue;
+    }
+    // In hot-reload-test-mode we sometimes have to do this:
+    code = function.EnsureHasCode();
+    RELEASE_ASSERT(!code.IsNull());
+    code_array.Add(code);
+    pc_descs = code.pc_descriptors();
+    offset = Smi::New(FindPcOffset(pc_descs, GetYieldIndex(closure)));
+    // Unlike other sources of PC offsets, the offset may be 0 here if we
+    // reach a non-async closure receiving the yielded value.
+    ASSERT(offset.Value() >= 0);
+    pc_offset_array.Add(offset);
+
+    // Inject async suspension marker.
+    code_array.Add(StubCode::AsynchronousGapMarker());
+    offset = Smi::New(0);
+    pc_offset_array.Add(offset);
+  }
+}
+
 void StackTraceUtils::CollectFramesLazy(
     Thread* thread,
     const GrowableObjectArray& code_array,
@@ -320,13 +453,11 @@
     return;
   }
 
-  auto& function = Function::Handle(zone);
   auto& code = Code::Handle(zone);
   auto& offset = Smi::Handle(zone);
-
   auto& closure = Closure::Handle(zone);
+
   CallerClosureFinder caller_closure_finder(zone);
-  auto& pc_descs = PcDescriptors::Handle();
 
   // Start by traversing the sync. part of the stack.
   for (; frame != nullptr; frame = frames.NextFrame()) {
@@ -335,79 +466,36 @@
       continue;
     }
 
-    function = frame->LookupDartFunction();
+    // If we encounter a known part of the async/Future mechanism, unwind the
+    // awaiter chain from the closures.
+    bool skip_frame = false;
+    bool is_async = false;
+    closure = ClosureFromFrameFunction(zone, &caller_closure_finder, frames,
+                                       frame, &skip_frame, &is_async);
 
-    // Add the current synchronous frame.
-    code = frame->LookupDartCode();
-    ASSERT(function.ptr() == code.function());
-    code_array.Add(code);
-    const intptr_t pc_offset = frame->pc() - code.PayloadStart();
-    ASSERT(pc_offset > 0 && pc_offset <= code.Size());
-    offset = Smi::New(pc_offset);
-    pc_offset_array.Add(offset);
-    if (on_sync_frames != nullptr) {
-      (*on_sync_frames)(frame);
+    // This isn't a special (async) frame we should skip.
+    if (!skip_frame) {
+      // Add the current synchronous frame.
+      code = frame->LookupDartCode();
+      code_array.Add(code);
+      const intptr_t pc_offset = frame->pc() - code.PayloadStart();
+      ASSERT(pc_offset > 0 && pc_offset <= code.Size());
+      offset = Smi::New(pc_offset);
+      pc_offset_array.Add(offset);
+      // Callback for sync frame.
+      if (on_sync_frames != nullptr) {
+        (*on_sync_frames)(frame);
+      }
     }
 
-    // Either continue the loop (sync-async case) or find all await'ers and
-    // return.
-    if (!function.IsNull() &&
-        (function.IsAsyncClosure() || function.IsAsyncGenClosure())) {
+    // This frame is running async.
+    // Note: The closure might still be null in case it's an unawaited future.
+    if (is_async) {
+      UnwindAwaiterChain(zone, code_array, pc_offset_array,
+                         &caller_closure_finder, closure);
       if (has_async != nullptr) {
         *has_async = true;
       }
-
-      {
-        NoSafepointScope nsp;
-
-        // Next, look up caller's closure on the stack and walk backwards
-        // through the yields.
-        ObjectPtr* last_caller_obj =
-            reinterpret_cast<ObjectPtr*>(frame->GetCallerSp());
-        closure = FindClosureInFrame(last_caller_obj, function);
-
-        // If this async function hasn't yielded yet, we're still dealing with a
-        // normal stack. Continue to next frame as usual.
-        if (!caller_closure_finder.IsRunningAsync(closure)) {
-          continue;
-        }
-      }
-
-      // Inject async suspension marker.
-      code_array.Add(StubCode::AsynchronousGapMarker());
-      offset = Smi::New(0);
-      pc_offset_array.Add(offset);
-
-      // Skip: Already handled this frame's function above.
-      closure = caller_closure_finder.FindCaller(closure);
-
-      // Traverse the trail of async futures all the way up.
-      for (; !closure.IsNull();
-           closure = caller_closure_finder.FindCaller(closure)) {
-        function = closure.function();
-        // In hot-reload-test-mode we sometimes have to do this:
-        if (!function.HasCode()) {
-          function.EnsureHasCode();
-        }
-        if (function.HasCode()) {
-          code = function.CurrentCode();
-          code_array.Add(code);
-          pc_descs = code.pc_descriptors();
-          offset = Smi::New(FindPcOffset(pc_descs, GetYieldIndex(closure)));
-        } else {
-          UNREACHABLE();
-        }
-        // Unlike other sources of PC offsets, the offset may be 0 here if we
-        // reach a non-async closure receiving the yielded value.
-        ASSERT(offset.Value() >= 0);
-        pc_offset_array.Add(offset);
-
-        // Inject async suspension marker.
-        code_array.Add(StubCode::AsynchronousGapMarker());
-        offset = Smi::New(0);
-        pc_offset_array.Add(offset);
-      }
-
       // Ignore the rest of the stack; already unwound all async calls.
       return;
     }
diff --git a/runtime/vm/stack_trace.h b/runtime/vm/stack_trace.h
index 215da83..2074673 100644
--- a/runtime/vm/stack_trace.h
+++ b/runtime/vm/stack_trace.h
@@ -21,6 +21,8 @@
 
   ClosurePtr GetCallerInFutureImpl(const Object& future_);
 
+  ClosurePtr GetCallerInFutureListener(const Object& future_listener);
+
   ClosurePtr FindCallerInAsyncClosure(const Context& receiver_context);
 
   ClosurePtr FindCallerInAsyncGenClosure(const Context& receiver_context);
@@ -61,6 +63,8 @@
   Field& state_field;
   Field& on_data_field;
   Field& state_data_field;
+
+  DISALLOW_COPY_AND_ASSIGN(CallerClosureFinder);
 };
 
 class StackTraceUtils : public AllStatic {
@@ -69,6 +73,20 @@
   static ClosurePtr FindClosureInFrame(ObjectPtr* last_object_in_caller,
                                        const Function& function);
 
+  static ClosurePtr ClosureFromFrameFunction(
+      Zone* zone,
+      CallerClosureFinder* caller_closure_finder,
+      const DartFrameIterator& frames,
+      StackFrame* frame,
+      bool* skip_frame,
+      bool* is_async);
+
+  static void UnwindAwaiterChain(Zone* zone,
+                                 const GrowableObjectArray& code_array,
+                                 const GrowableObjectArray& pc_offset_array,
+                                 CallerClosureFinder* caller_closure_finder,
+                                 const Closure& leaf_closure);
+
   /// Collects all frames on the current stack until an async/async* frame is
   /// hit which has yielded before (i.e. is not in sync-async case).
   ///
diff --git a/sdk/lib/async/future_impl.dart b/sdk/lib/async/future_impl.dart
index df8a347..a9f2b80 100644
--- a/sdk/lib/async/future_impl.dart
+++ b/sdk/lib/async/future_impl.dart
@@ -63,18 +63,19 @@
 }
 
 class _FutureListener<S, T> {
+  // Keep in sync with sdk/runtime/vm/stack_trace.cc.
   static const int maskValue = 1;
   static const int maskError = 2;
   static const int maskTestError = 4;
-  static const int maskWhencomplete = 8;
+  static const int maskWhenComplete = 8;
   static const int stateChain = 0;
   static const int stateThen = maskValue;
   static const int stateThenOnerror = maskValue | maskError;
-  static const int stateCatcherror = maskError;
-  static const int stateCatcherrorTest = maskError | maskTestError;
-  static const int stateWhencomplete = maskWhencomplete;
+  static const int stateCatchError = maskError;
+  static const int stateCatchErrorTest = maskError | maskTestError;
+  static const int stateWhenComplete = maskWhenComplete;
   static const int maskType =
-      maskValue | maskError | maskTestError | maskWhencomplete;
+      maskValue | maskError | maskTestError | maskWhenComplete;
   static const int stateIsAwait = 16;
 
   // Listeners on the same future are linked through this link.
@@ -109,18 +110,18 @@
             stateIsAwait;
 
   _FutureListener.catchError(this.result, this.errorCallback, this.callback)
-      : state = (callback == null) ? stateCatcherror : stateCatcherrorTest;
+      : state = (callback == null) ? stateCatchError : stateCatchErrorTest;
 
   _FutureListener.whenComplete(this.result, this.callback)
       : errorCallback = null,
-        state = stateWhencomplete;
+        state = stateWhenComplete;
 
   _Zone get _zone => result._zone;
 
   bool get handlesValue => (state & maskValue != 0);
   bool get handlesError => (state & maskError != 0);
-  bool get hasErrorTest => (state & maskType == stateCatcherrorTest);
-  bool get handlesComplete => (state & maskType == stateWhencomplete);
+  bool get hasErrorTest => (state & maskType == stateCatchErrorTest);
+  bool get handlesComplete => (state & maskType == stateWhenComplete);
   bool get isAwait => (state & stateIsAwait != 0);
 
   FutureOr<T> Function(S) get _onValue {
@@ -148,6 +149,8 @@
     return _onError != null;
   }
 
+  @pragma("vm:recognized", "other")
+  @pragma("vm:never-inline")
   FutureOr<T> handleValue(S sourceResult) {
     return _zone.runUnary<FutureOr<T>, S>(_onValue, sourceResult);
   }
diff --git a/sdk/lib/async/zone.dart b/sdk/lib/async/zone.dart
index 4f0873d..5400814 100644
--- a/sdk/lib/async/zone.dart
+++ b/sdk/lib/async/zone.dart
@@ -1608,6 +1608,7 @@
     return _rootRun(null, null, this, f);
   }
 
+  @pragma("vm:recognized", "other")
   R runUnary<R, T>(R f(T arg), T arg) {
     if (identical(Zone._current, _rootZone)) return f(arg);
     return _rootRunUnary(null, null, this, f, arg);
diff --git a/tools/VERSION b/tools/VERSION
index 96e8a89..dacee7e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 12
 PATCH 0
-PRERELEASE 262
+PRERELEASE 263
 PRERELEASE_PATCH 0
\ No newline at end of file