Version 2.13.0-21.0.dev

Merge commit 'dbfcf237d081ed77c9f1d8c984f3db2d4c9440d1' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index 2b29fe4..29268f2 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
     "constraint, update this by running tools/generate_package_config.dart."
   ],
   "configVersion": 2,
-  "generated": "2021-02-04T09:42:25.936196",
+  "generated": "2021-02-08T17:50:36.420568",
   "generator": "tools/generate_package_config.dart",
   "packages": [
     {
@@ -112,7 +112,7 @@
       "name": "async",
       "rootUri": "../third_party/pkg/async",
       "packageUri": "lib/",
-      "languageVersion": "2.10"
+      "languageVersion": "2.12"
     },
     {
       "name": "async_helper",
@@ -166,7 +166,7 @@
       "name": "collection",
       "rootUri": "../third_party/pkg/collection",
       "packageUri": "lib/",
-      "languageVersion": "2.10"
+      "languageVersion": "2.12"
     },
     {
       "name": "compiler",
@@ -404,7 +404,7 @@
       "name": "markdown",
       "rootUri": "../third_party/pkg/markdown",
       "packageUri": "lib/",
-      "languageVersion": "2.6"
+      "languageVersion": "2.12"
     },
     {
       "name": "matcher",
@@ -497,7 +497,7 @@
       "name": "path",
       "rootUri": "../third_party/pkg/path",
       "packageUri": "lib/",
-      "languageVersion": "2.10"
+      "languageVersion": "2.12"
     },
     {
       "name": "pedantic",
@@ -665,19 +665,19 @@
       "name": "test",
       "rootUri": "../third_party/pkg/test/pkgs/test",
       "packageUri": "lib/",
-      "languageVersion": "2.10"
+      "languageVersion": "2.12"
     },
     {
       "name": "test_api",
       "rootUri": "../third_party/pkg/test/pkgs/test_api",
       "packageUri": "lib/",
-      "languageVersion": "2.10"
+      "languageVersion": "2.12"
     },
     {
       "name": "test_core",
       "rootUri": "../third_party/pkg/test/pkgs/test_core",
       "packageUri": "lib/",
-      "languageVersion": "2.10"
+      "languageVersion": "2.12"
     },
     {
       "name": "test_descriptor",
@@ -782,4 +782,4 @@
       "languageVersion": "2.12"
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/DEPS b/DEPS
index 397cf38..3316fb1 100644
--- a/DEPS
+++ b/DEPS
@@ -121,7 +121,7 @@
   "linter_tag": "0.1.129",
   "logging_rev": "e2f633b543ef89c54688554b15ca3d7e425b86a2",
   "markupsafe_rev": "8f45f5cfa0009d2a70589bcda0349b8cb2b72783",
-  "markdown_rev": "6f89681d59541ddb1cf3a58efbdaa2304ffc3f51",
+  "markdown_rev": "9c4beaac96d8f008078e00b027915f81b665d2de",
   "matcher_rev": "43d5cac48fcd386643016e767164da87c5c25e29",
   "mime_rev": "c931f4bed87221beaece356494b43731445ce7b8",
   "mockito_rev": "d39ac507483b9891165e422ec98d9fb480037c8b",
@@ -156,7 +156,7 @@
   "test_descriptor_tag": "1.1.1",
   "test_process_tag": "1.0.3",
   "term_glyph_rev": "6a0f9b6fb645ba75e7a00a4e20072678327a0347",
-  "test_reflective_loader_rev": "b76ae201ab9c6f3b90643958965e7cc215a38e9b",
+  "test_reflective_loader_rev": "54e930a11c372683792e22bddad79197728c91ce",
   "test_rev": "bb98af3d17a821c28488ef8e2881e3ca173baf94",
   "typed_data_tag": "f94fc57b8e8c0e4fe4ff6cfd8290b94af52d3719",
   "usage_rev": "6c64d9e7b6b3758d06d030efcb5afe20bfc04dde",
diff --git a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
index ba9b171..ddd82cc 100644
--- a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
@@ -3485,7 +3485,8 @@
   final Map<Statement, _BranchTargetContext<Variable, Type>>
       _statementToContext = {};
 
-  late FlowModel<Variable, Type> _current;
+  FlowModel<Variable, Type> _current =
+      new FlowModel<Variable, Type>(Reachability.initial);
 
   /// The most recently visited expression for which an [ExpressionInfo] object
   /// exists, or `null` if no expression has been visited that has a
@@ -3519,9 +3520,7 @@
       {bool allowLocalBooleanVarsToPromote = false})
       : allowLocalBooleanVarsToPromote =
             allowLocalBooleanVarsToPromoteByDefault ||
-                allowLocalBooleanVarsToPromote {
-    _current = new FlowModel<Variable, Type>(Reachability.initial);
-  }
+                allowLocalBooleanVarsToPromote;
 
   @override
   bool get isReachable => _current.reachable.overallReachable;
@@ -4141,7 +4140,7 @@
       Variable? exceptionVariable, Variable? stackTraceVariable) {
     _TryContext<Variable, Type> context =
         _stack.last as _TryContext<Variable, Type>;
-    _current = context._beforeCatch!;
+    _current = context._beforeCatch;
     if (exceptionVariable != null) {
       _current = _current.declare(exceptionVariable, true);
     }
@@ -4162,7 +4161,7 @@
   void tryCatchStatement_end() {
     _TryContext<Variable, Type> context =
         _stack.removeLast() as _TryContext<Variable, Type>;
-    _current = context._afterBodyAndCatches!.unsplit();
+    _current = context._afterBodyAndCatches.unsplit();
   }
 
   @override
@@ -4177,11 +4176,11 @@
     _TryFinallyContext<Variable, Type> context =
         _stack.removeLast() as _TryFinallyContext<Variable, Type>;
     if (allowLocalBooleanVarsToPromote) {
-      _current = context._afterBodyAndCatches!
+      _current = context._afterBodyAndCatches
           .attachFinally(typeOperations, context._beforeFinally, _current);
     } else {
       _current = _current.restrict(
-          typeOperations, context._afterBodyAndCatches!, info._written);
+          typeOperations, context._afterBodyAndCatches, info._written);
     }
   }
 
@@ -5122,14 +5121,14 @@
     extends _SimpleContext<Variable, Type> {
   /// If the statement is a "try/catch" statement, the flow model representing
   /// program state at the top of any `catch` block.
-  FlowModel<Variable, Type>? _beforeCatch;
+  late final FlowModel<Variable, Type> _beforeCatch;
 
   /// If the statement is a "try/catch" statement, the accumulated flow model
   /// representing program state after the `try` block or one of the `catch`
   /// blocks has finished executing.  If the statement is a "try/finally"
   /// statement, the flow model representing program state after the `try` block
   /// has finished executing.
-  FlowModel<Variable, Type>? _afterBodyAndCatches;
+  late FlowModel<Variable, Type> _afterBodyAndCatches;
 
   _TryContext(FlowModel<Variable, Type> previous) : super(previous);
 
@@ -5143,7 +5142,7 @@
     extends _TryContext<Variable, Type> {
   /// The flow model representing program state at the top of the `finally`
   /// block.
-  late FlowModel<Variable, Type> _beforeFinally;
+  late final FlowModel<Variable, Type> _beforeFinally;
 
   _TryFinallyContext(FlowModel<Variable, Type> previous) : super(previous);
 }
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index 71efad4..5ba8d5f 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -1079,6 +1079,28 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(String name)>
+    templateConflictsWithImplicitSetter =
+    const Template<Message Function(String name)>(
+        messageTemplate:
+            r"""Conflicts with the implicit setter of the field '#name'.""",
+        withArguments: _withArgumentsConflictsWithImplicitSetter);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)> codeConflictsWithImplicitSetter =
+    const Code<Message Function(String name)>("ConflictsWithImplicitSetter",
+        analyzerCodes: <String>["CONFLICTS_WITH_MEMBER"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsConflictsWithImplicitSetter(String name) {
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeConflictsWithImplicitSetter,
+      message: """Conflicts with the implicit setter of the field '${name}'.""",
+      arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<Message Function(String name)> templateConflictsWithMember =
     const Template<Message Function(String name)>(
         messageTemplate: r"""Conflicts with member '#name'.""",
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
index 309bf3e..697726f 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
@@ -17,7 +17,7 @@
 
 /// The first step when processing a `for` control flow collection entry.
 class ForCondition extends LiteralEntryInfo {
-  late bool inStyle;
+  bool _inStyle = false;
 
   ForCondition() : super(false, 0);
 
@@ -39,12 +39,12 @@
 
     if (optional('in', token.next!) || optional(':', token.next!)) {
       // Process `for ( ... in ... )`
-      inStyle = true;
+      _inStyle = true;
       token = parser.parseForInLoopPartsRest(
           token, awaitToken, forToken, identifier);
     } else {
       // Process `for ( ... ; ... ; ... )`
-      inStyle = false;
+      _inStyle = false;
       token = parser.parseForLoopPartsRest(token, forToken, awaitToken);
     }
     return token;
@@ -57,17 +57,17 @@
         (optional('await', next) && optional('for', next.next!))) {
       return new Nested(
         new ForCondition(),
-        inStyle ? const ForInComplete() : const ForComplete(),
+        _inStyle ? const ForInComplete() : const ForComplete(),
       );
     } else if (optional('if', next)) {
       return new Nested(
         ifCondition,
-        inStyle ? const ForInComplete() : const ForComplete(),
+        _inStyle ? const ForInComplete() : const ForComplete(),
       );
     } else if (optional('...', next) || optional('...?', next)) {
-      return inStyle ? const ForInSpread() : const ForSpread();
+      return _inStyle ? const ForInSpread() : const ForSpread();
     }
-    return inStyle ? const ForInEntry() : const ForEntry();
+    return _inStyle ? const ForInEntry() : const ForEntry();
   }
 }
 
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
index 7c367b8..b577fba 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import '../scanner/error_token.dart' show UnmatchedToken;
-
 import '../scanner/token.dart'
     show
         BeginToken,
@@ -227,28 +226,21 @@
 }
 
 class NextTokenStreamChange implements TokenStreamChange {
-  late Token setOn;
-  Token? setOnNext;
-  late Token nextToken;
-  Token? nextTokenPrevious;
-  Token? nextTokenBeforeSynthetic;
+  final Token setOn;
+  final Token? setOnNext;
+  final Token nextToken;
+  final Token? nextTokenPrevious;
+  final Token? nextTokenBeforeSynthetic;
 
-  NextTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+  NextTokenStreamChange(
+      UndoableTokenStreamRewriter rewriter, this.setOn, this.nextToken)
+      : setOnNext = setOn.next,
+        nextTokenPrevious = nextToken.previous,
+        nextTokenBeforeSynthetic = nextToken.beforeSynthetic {
     rewriter._changes.add(this);
-  }
-
-  Token setNext(Token setOn, Token nextToken) {
-    this.setOn = setOn;
-    this.setOnNext = setOn.next;
-    this.nextToken = nextToken;
-    this.nextTokenPrevious = nextToken.previous;
-    this.nextTokenBeforeSynthetic = nextToken.beforeSynthetic;
-
     setOn.next = nextToken;
     nextToken.previous = setOn;
     nextToken.beforeSynthetic = setOn;
-
-    return nextToken;
   }
 
   @override
@@ -260,17 +252,13 @@
 }
 
 class EndGroupTokenStreamChange implements TokenStreamChange {
-  late BeginToken setOn;
-  Token? endGroup;
+  final BeginToken setOn;
+  final Token? endGroup;
 
-  EndGroupTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+  EndGroupTokenStreamChange(
+      UndoableTokenStreamRewriter rewriter, this.setOn, Token endGroup)
+      : endGroup = setOn.endGroup {
     rewriter._changes.add(this);
-  }
-
-  void setEndGroup(BeginToken setOn, Token endGroup) {
-    this.setOn = setOn;
-    this.endGroup = setOn.endGroup;
-
     setOn.endGroup = endGroup;
   }
 
@@ -281,17 +269,13 @@
 }
 
 class OffsetTokenStreamChange implements TokenStreamChange {
-  late Token setOn;
-  late int offset;
+  final Token setOn;
+  final int offset;
 
-  OffsetTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+  OffsetTokenStreamChange(
+      UndoableTokenStreamRewriter rewriter, this.setOn, int offset)
+      : offset = setOn.offset {
     rewriter._changes.add(this);
-  }
-
-  void setOffset(Token setOn, int offset) {
-    this.setOn = setOn;
-    this.offset = setOn.offset;
-
     setOn.offset = offset;
   }
 
@@ -302,17 +286,13 @@
 }
 
 class PrecedingCommentsTokenStreamChange implements TokenStreamChange {
-  late SimpleToken setOn;
-  CommentToken? comment;
+  final SimpleToken setOn;
+  final CommentToken? comment;
 
-  PrecedingCommentsTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+  PrecedingCommentsTokenStreamChange(
+      UndoableTokenStreamRewriter rewriter, this.setOn, CommentToken? comment)
+      : comment = setOn.precedingComments {
     rewriter._changes.add(this);
-  }
-
-  void setPrecedingComments(SimpleToken setOn, CommentToken? comment) {
-    this.setOn = setOn;
-    this.comment = setOn.precedingComments;
-
     setOn.precedingComments = comment;
   }
 
@@ -323,17 +303,13 @@
 }
 
 class PreviousTokenStreamChange implements TokenStreamChange {
-  late Token setOn;
-  late Token previous;
+  final Token setOn;
+  final Token previous;
 
-  PreviousTokenStreamChange(UndoableTokenStreamRewriter rewriter) {
+  PreviousTokenStreamChange(
+      UndoableTokenStreamRewriter rewriter, this.setOn, Token previous)
+      : previous = setOn.previous! {
     rewriter._changes.add(this);
-  }
-
-  void setPrevious(Token setOn, Token previous) {
-    this.setOn = setOn;
-    this.previous = setOn.previous!;
-
     setOn.previous = previous;
   }
 
@@ -359,27 +335,26 @@
 
   @override
   void _setEndGroup(BeginToken setOn, Token endGroup) {
-    new EndGroupTokenStreamChange(this).setEndGroup(setOn, endGroup);
+    new EndGroupTokenStreamChange(this, setOn, endGroup);
   }
 
   @override
   Token _setNext(Token setOn, Token nextToken) {
-    return new NextTokenStreamChange(this).setNext(setOn, nextToken);
+    return new NextTokenStreamChange(this, setOn, nextToken).nextToken;
   }
 
   @override
   void _setOffset(Token setOn, int offset) {
-    new OffsetTokenStreamChange(this).setOffset(setOn, offset);
+    new OffsetTokenStreamChange(this, setOn, offset);
   }
 
   @override
   void _setPrecedingComments(SimpleToken setOn, CommentToken? comment) {
-    new PrecedingCommentsTokenStreamChange(this)
-        .setPrecedingComments(setOn, comment);
+    new PrecedingCommentsTokenStreamChange(this, setOn, comment);
   }
 
   @override
   void _setPrevious(Token setOn, Token previous) {
-    new PreviousTokenStreamChange(this).setPrevious(setOn, previous);
+    new PreviousTokenStreamChange(this, setOn, previous);
   }
 }
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart
index 73bcfb1..edd0af2 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart
@@ -915,7 +915,7 @@
   final bool allowsVariance;
 
   @override
-  late int typeArgumentCount;
+  int typeArgumentCount = 0;
 
   /// The `>` token which ends the type parameter or argument.
   /// This closer may be synthetic, points to the next token in the stream,
@@ -938,7 +938,6 @@
   TypeParamOrArgInfo compute() {
     Token token;
     Token next = start;
-    typeArgumentCount = 0;
     while (true) {
       TypeInfo typeInfo =
           computeType(next, /* required = */ true, inDeclaration);
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
index 725cce1..65bd017 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
@@ -115,7 +115,7 @@
    */
   Token? commentsTail;
 
-  late final List<int> lineStarts;
+  final List<int> lineStarts;
 
   /**
    * The stack of open groups, e.g [: { ... ( .. :]
@@ -1948,22 +1948,11 @@
 }
 
 class LineStarts extends Object with ListMixin<int> {
-  late List<int> array;
+  List<int> array;
   int arrayLength = 0;
 
-  LineStarts(int? numberOfBytesHint) {
-    // Let's assume the average Dart file is 300 bytes.
-    if (numberOfBytesHint == null) numberOfBytesHint = 300;
-
-    // Let's assume we have on average 22 bytes per line.
-    final int expectedNumberOfLines = 1 + (numberOfBytesHint ~/ 22);
-
-    if (numberOfBytesHint > 65535) {
-      array = new Uint32List(expectedNumberOfLines);
-    } else {
-      array = new Uint16List(expectedNumberOfLines);
-    }
-
+  LineStarts(int? numberOfBytesHint)
+      : array = _createInitialArray(numberOfBytesHint) {
     // The first line starts at character offset 0.
     add(/* value = */ 0);
   }
@@ -2022,6 +2011,20 @@
     newArray.setRange(/* start = */ 0, arrayLength, array);
     array = newArray;
   }
+
+  static List<int> _createInitialArray(int? numberOfBytesHint) {
+    // Let's assume the average Dart file is 300 bytes.
+    numberOfBytesHint ??= 300;
+
+    // Let's assume we have on average 22 bytes per line.
+    final int expectedNumberOfLines = 1 + (numberOfBytesHint ~/ 22);
+
+    if (numberOfBytesHint > 65535) {
+      return new Uint32List(expectedNumberOfLines);
+    } else {
+      return new Uint16List(expectedNumberOfLines);
+    }
+  }
 }
 
 /// [ScannerConfiguration] contains information for configuring which tokens
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart
index 4e073b7..74c76f7 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/reader.dart
@@ -60,21 +60,20 @@
   /**
    * The number of characters in the string.
    */
-  late int _stringLength;
+  int _stringLength;
 
   /**
    * The index, relative to the string, of the next character to be read.
    */
-  late int _charOffset;
+  int _charOffset;
 
   /**
    * Initialize a newly created reader to read the characters in the given
    * [_sequence].
    */
-  CharSequenceReader(this._sequence) {
-    this._stringLength = _sequence.length;
-    this._charOffset = 0;
-  }
+  CharSequenceReader(this._sequence)
+      : _stringLength = _sequence.length,
+        _charOffset = 0;
 
   @override
   int get offset => _charOffset - 1;
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
index 4b15b5f..7594362 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart
@@ -22,10 +22,10 @@
  */
 class StringScanner extends AbstractScanner {
   /** The file content. */
-  late String string;
+  final String string;
 
   /** The current offset in [string]. */
-  late int scanOffset = -1;
+  int scanOffset = -1;
 
   StringScanner(String string,
       {ScannerConfiguration? configuration,
@@ -35,10 +35,9 @@
         super(configuration, includeComments, languageVersionChanged);
 
   StringScanner.recoveryOptionScanner(StringScanner copyFrom)
-      : super.recoveryOptionScanner(copyFrom) {
-    string = copyFrom.string;
-    scanOffset = copyFrom.scanOffset;
-  }
+      : string = copyFrom.string,
+        scanOffset = copyFrom.scanOffset,
+        super.recoveryOptionScanner(copyFrom);
 
   StringScanner createRecoveryOptionScanner() {
     return new StringScanner.recoveryOptionScanner(this);
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
index 9ae4026..6f92ebe 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
@@ -696,7 +696,7 @@
   /**
    * The lexeme represented by this token.
    */
-  late String _value;
+  final String _value;
 
   /**
    * Initialize a newly created token to represent a token of the given [type]
@@ -704,9 +704,8 @@
    */
   StringToken(TokenType type, String value, int offset,
       [CommentToken? precedingComment])
-      : super(type, offset, precedingComment) {
-    this._value = StringUtilities.intern(value);
-  }
+      : _value = StringUtilities.intern(value),
+        super(type, offset, precedingComment);
 
   @override
   bool get isIdentifier => identical(kind, IDENTIFIER_TOKEN);
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
index 9ef6fd2..da22f90 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart
@@ -28,7 +28,7 @@
    *
    * The content is zero-terminated.
    */
-  late List<int> bytes;
+  final List<int> bytes;
 
   /**
    * Points to the offset of the last byte returned by [advance].
@@ -98,8 +98,8 @@
   }
 
   Utf8BytesScanner.createRecoveryOptionScanner(Utf8BytesScanner copyFrom)
-      : super.recoveryOptionScanner(copyFrom) {
-    this.bytes = copyFrom.bytes;
+      : bytes = copyFrom.bytes,
+        super.recoveryOptionScanner(copyFrom) {
     this.byteOffset = copyFrom.byteOffset;
     this.scanSlack = copyFrom.scanSlack;
     this.scanSlackOffset = copyFrom.scanSlackOffset;
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index bce5281..8adc153 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -425,7 +425,7 @@
       FixKind('dart.fix.remove.unusedField', 50, 'Remove unused field');
   static const REMOVE_UNUSED_IMPORT = FixKind(
       'dart.fix.remove.unusedImport', 50, 'Remove unused import',
-      appliedTogetherMessage: 'Remove all unused imports in this file');
+      appliedTogetherMessage: 'Remove all unused imports in file');
   static const REMOVE_UNUSED_LABEL =
       FixKind('dart.fix.remove.unusedLabel', 50, 'Remove unused label');
   static const REMOVE_UNUSED_LOCAL_VARIABLE = FixKind(
@@ -438,7 +438,7 @@
       FixKind('dart.fix.rename.toCamelCase', 50, "Rename to '{0}'");
   static const REPLACE_BOOLEAN_WITH_BOOL = FixKind(
       'dart.fix.replace.booleanWithBool', 50, "Replace 'boolean' with 'bool'",
-      appliedTogetherMessage: "Replace all 'boolean' with 'bool' in file");
+      appliedTogetherMessage: "Replace all 'boolean's with 'bool' in file");
   static const REPLACE_CASCADE_WITH_DOT =
       FixKind('dart.fix.replace.cascadeWithDot', 50, "Replace '..' with '.'");
   static const REPLACE_COLON_WITH_EQUALS =
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 97be45b..55d892e 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -271,6 +271,117 @@
   }
 }
 
+/// Computer for Dart "fix all in file" fixes.
+class FixInFileProcessor {
+  final DartFixContext context;
+  FixInFileProcessor(this.context);
+
+  Future<List<Fix>> compute() async {
+    var error = context.error;
+    var errors = context.resolveResult.errors.toList();
+    // Remove any analysis errors that don't have the expected error code name
+    errors.removeWhere((e) => error.errorCode.name != e.errorCode.name);
+
+    if (errors.length < 2) {
+      return const <Fix>[];
+    }
+
+    var instrumentationService = context.instrumentationService;
+    var workspace = context.workspace;
+    var resolveResult = context.resolveResult;
+
+    var generators = _getGenerators(
+        error.errorCode,
+        CorrectionProducerContext(
+          dartFixContext: context,
+          diagnostic: error,
+          resolvedResult: resolveResult,
+          selectionOffset: context.error.offset,
+          selectionLength: context.error.length,
+          workspace: workspace,
+        ));
+
+    var fixes = <Fix>[];
+    for (var generator in generators) {
+      var builder = ChangeBuilder(workspace: workspace);
+      for (var error in errors) {
+        var fixContext = DartFixContextImpl(
+          instrumentationService,
+          workspace,
+          resolveResult,
+          error,
+          (name) => [],
+        );
+        builder = await _fixError(fixContext, builder, generator(), error);
+      }
+      var sourceChange = builder.sourceChange;
+      if (sourceChange.edits.isNotEmpty) {
+        var fixKind = generator().fixKind;
+        // todo (pq): with a table redesign we can bail earlier.
+        if (fixKind.canBeAppliedTogether()) {
+          sourceChange.message = fixKind.appliedTogetherMessage;
+          fixes.add(Fix(fixKind, sourceChange));
+        }
+      }
+    }
+    return fixes;
+  }
+
+  Future<ChangeBuilder> _fixError(
+      DartFixContext fixContext,
+      ChangeBuilder builder,
+      CorrectionProducer producer,
+      AnalysisError diagnostic) async {
+    var context = CorrectionProducerContext(
+      applyingBulkFixes: true,
+      dartFixContext: fixContext,
+      diagnostic: diagnostic,
+      resolvedResult: fixContext.resolveResult,
+      selectionOffset: diagnostic.offset,
+      selectionLength: diagnostic.length,
+      workspace: fixContext.workspace,
+    );
+
+    var setupSuccess = context.setupCompute();
+    if (!setupSuccess) {
+      return null;
+    }
+
+    producer.configure(context);
+
+    try {
+      var localBuilder = builder.copy();
+      await producer.compute(localBuilder);
+      builder = localBuilder;
+    } on ConflictingEditException {
+      // If a conflicting edit was added in [compute], then the [localBuilder]
+      // is discarded and we revert to the previous state of the builder.
+    }
+
+    return builder;
+  }
+
+  List<ProducerGenerator> _getGenerators(
+      ErrorCode errorCode, CorrectionProducerContext context) {
+    var producers = <ProducerGenerator>[];
+    if (errorCode is LintCode) {
+      var generators = FixProcessor.lintProducerMap[errorCode.name];
+      if (generators != null) {
+        producers.addAll(generators);
+      }
+    } else {
+      var generators = FixProcessor.nonLintProducerMap[errorCode];
+      if (generators != null) {
+        if (generators != null) {
+          producers.addAll(generators);
+        }
+      }
+      // todo (pq): consider support for multiGenerators
+    }
+    return producers;
+  }
+}
+
 /// The computer for Dart fixes.
 class FixProcessor extends BaseProcessor {
   /// A map from the names of lint rules to a list of generators used to create
diff --git a/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart b/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart
new file mode 100644
index 0000000..a73400b
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart
@@ -0,0 +1,74 @@
+// 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.
+
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    // defineReflectiveTests(MultiFixInFileTest);
+    defineReflectiveTests(SingleFixInFileTest);
+  });
+}
+
+//// todo (pq): update w/ a FixKind that we're sure we want to support as a file fix
+// @reflectiveTest
+// class MultiFixInFileTest extends FixInFileProcessorTest
+//     with WithNullSafetyMixin {
+//   Future<void> test_nullable() async {
+//     await resolveTestCode('''
+// class C {
+//   String? s;
+//   String? s2;
+//   C({String this.s, String this.s2});
+// }
+// ''');
+//
+//     var fixes = await getFixes();
+//     expect(fixes, hasLength(2));
+//
+//     var addRequired =
+//         fixes.where((f) => f.kind == DartFixKind.ADD_REQUIRED).first;
+//     assertProduces(addRequired, '''
+// class C {
+//   String? s;
+//   String? s2;
+//   C({required String this.s, required String this.s2});
+// }
+// ''');
+//
+//     var makeNullable =
+//         fixes.where((f) => f.kind == DartFixKind.MAKE_VARIABLE_NULLABLE).first;
+//     assertProduces(makeNullable, '''
+// class C {
+//   String? s;
+//   String? s2;
+//   C({String? this.s, String? this.s2});
+// }
+// ''');
+//   }
+// }
+
+@reflectiveTest
+class SingleFixInFileTest extends FixInFileProcessorTest {
+  Future<void> test_isNull() async {
+    await resolveTestCode('''
+bool f(p, q) {
+  return p is Null && q is Null;
+}
+''');
+
+    var fixes = await getFixes();
+    expect(fixes, hasLength(1));
+    assertProduces(fixes.first, '''
+bool f(p, q) {
+  return p == null && q == null;
+}
+''');
+  }
+}
+
+/// todo (pq): add negative tests
diff --git a/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart b/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart
index 70b6a66..ac90224 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart
@@ -25,6 +25,131 @@
 
 export 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
 
+abstract class BaseFixProcessorTest extends AbstractSingleUnitTest {
+  /// The errors in the file for which fixes are being computed.
+  List<AnalysisError> _errors;
+
+  /// The source change associated with the fix that was found, or `null` if
+  /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
+  SourceChange change;
+
+  /// The result of applying the [change] to the file content, or `null` if
+  /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
+  String resultCode;
+
+  /// The workspace in which fixes contributor operates.
+  ChangeWorkspace get workspace {
+    return DartChangeWorkspace([session]);
+  }
+
+  Future<List<AnalysisError>> _computeErrors() async {
+    if (_errors == null) {
+      if (testAnalysisResult != null) {
+        _errors = testAnalysisResult.errors;
+      }
+      if (_errors == null) {
+        var result = await session.getResolvedUnit(testFile);
+        _errors = result.errors;
+      }
+    }
+    return _errors;
+  }
+
+  /// Find the error that is to be fixed by computing the errors in the file,
+  /// using the [errorFilter] to filter out errors that should be ignored, and
+  /// expecting that there is a single remaining error. The error filter should
+  /// return `true` if the error should not be ignored.
+  Future<AnalysisError> _findErrorToFix(
+      bool Function(AnalysisError) errorFilter,
+      {int length}) async {
+    var errors = await _computeErrors();
+    if (errorFilter != null) {
+      if (errors.length == 1) {
+        fail('Unnecessary error filter');
+      }
+      errors = errors.where(errorFilter).toList();
+    }
+    if (errors.isEmpty) {
+      fail('Expected one error, found: none');
+    } else if (errors.length > 1) {
+      var buffer = StringBuffer();
+      buffer.writeln('Expected one error, found:');
+      for (var error in errors) {
+        buffer.writeln('  $error [${error.errorCode}]');
+      }
+      fail(buffer.toString());
+    }
+    return errors[0];
+  }
+
+  Future<AnalysisError> _findErrorToFixOfType(ErrorCode errorCode) async {
+    var errors = await _computeErrors();
+    for (var error in errors) {
+      if (error.errorCode == errorCode) {
+        return error;
+      }
+    }
+    return null;
+  }
+}
+
+/// A base class defining support for writing fix-in-file processor tests.
+abstract class FixInFileProcessorTest extends BaseFixProcessorTest {
+  void assertProduces(Fix fix, String expected) {
+    var fileEdits = fix.change.edits;
+    expect(fileEdits, hasLength(1));
+
+    var fileContent = testCode;
+    resultCode = SourceEdit.applySequence(fileContent, fileEdits[0].edits);
+    expect(resultCode, expected);
+  }
+
+  Future<List<Fix>> getFixes() async {
+    var errors = await _computeErrors();
+    expect(errors, isNotEmpty);
+    String errorCode;
+    for (var error in errors) {
+      errorCode ??= error.errorCode.name;
+      if (errorCode != error.errorCode.name) {
+        fail('Expected only errors of one type but found: $errors');
+      }
+    }
+
+    var fixes = await _computeFixes(errors.first);
+    return fixes;
+  }
+
+  @override
+  void setUp() {
+    super.setUp();
+    verifyNoTestUnitErrors = false;
+    useLineEndingsForPlatform = true;
+  }
+
+  /// Computes fixes for the given [error] in [testUnit].
+  Future<List<Fix>> _computeFixes(AnalysisError error) async {
+    var analysisContext = contextFor(testFile);
+
+    var tracker = DeclarationsTracker(MemoryByteStore(), resourceProvider);
+    tracker.addContext(analysisContext);
+
+    var context = DartFixContextImpl(
+      TestInstrumentationService(),
+      workspace,
+      testAnalysisResult,
+      error,
+      (name) {
+        var provider = TopLevelDeclarationsProvider(tracker);
+        provider.doTrackerWork();
+        return provider.get(analysisContext, testFile, name);
+      },
+    );
+
+    var fixes = await FixInFileProcessor(context).compute();
+    return fixes;
+  }
+}
+
 /// A base class defining support for writing fix processor tests that are
 /// specific to fixes associated with lints that use the FixKind.
 abstract class FixProcessorLintTest extends FixProcessorTest {
@@ -60,26 +185,10 @@
 }
 
 /// A base class defining support for writing fix processor tests.
-abstract class FixProcessorTest extends AbstractSingleUnitTest {
-  /// The errors in the file for which fixes are being computed.
-  List<AnalysisError> _errors;
-
-  /// The source change associated with the fix that was found, or `null` if
-  /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
-  SourceChange change;
-
-  /// The result of applying the [change] to the file content, or `null` if
-  /// neither [assertHasFix] nor [assertHasFixAllFix] has been invoked.
-  String resultCode;
-
+abstract class FixProcessorTest extends BaseFixProcessorTest {
   /// Return the kind of fixes being tested by this test class.
   FixKind get kind;
 
-  /// The workspace in which fixes contributor operates.
-  ChangeWorkspace get workspace {
-    return DartChangeWorkspace([session]);
-  }
-
   Future<void> assertHasFix(String expected,
       {bool Function(AnalysisError) errorFilter,
       int length,
@@ -266,19 +375,6 @@
     }
   }
 
-  Future<List<AnalysisError>> _computeErrors() async {
-    if (_errors == null) {
-      if (testAnalysisResult != null) {
-        _errors = testAnalysisResult.errors;
-      }
-      if (_errors == null) {
-        var result = await session.getResolvedUnit(testFile);
-        _errors = result.errors;
-      }
-    }
-    return _errors;
-  }
-
   /// Computes fixes for the given [error] in [testUnit].
   Future<List<Fix>> _computeFixes(AnalysisError error) async {
     var analysisContext = contextFor(testFile);
@@ -300,43 +396,6 @@
     return await DartFixContributor().computeFixes(context);
   }
 
-  /// Find the error that is to be fixed by computing the errors in the file,
-  /// using the [errorFilter] to filter out errors that should be ignored, and
-  /// expecting that there is a single remaining error. The error filter should
-  /// return `true` if the error should not be ignored.
-  Future<AnalysisError> _findErrorToFix(
-      bool Function(AnalysisError) errorFilter,
-      {int length}) async {
-    var errors = await _computeErrors();
-    if (errorFilter != null) {
-      if (errors.length == 1) {
-        fail('Unnecessary error filter');
-      }
-      errors = errors.where(errorFilter).toList();
-    }
-    if (errors.isEmpty) {
-      fail('Expected one error, found: none');
-    } else if (errors.length > 1) {
-      var buffer = StringBuffer();
-      buffer.writeln('Expected one error, found:');
-      for (var error in errors) {
-        buffer.writeln('  $error [${error.errorCode}]');
-      }
-      fail(buffer.toString());
-    }
-    return errors[0];
-  }
-
-  Future<AnalysisError> _findErrorToFixOfType(ErrorCode errorCode) async {
-    var errors = await _computeErrors();
-    for (var error in errors) {
-      if (error.errorCode == errorCode) {
-        return error;
-      }
-    }
-    return null;
-  }
-
   List<Position> _findResultPositions(List<String> searchStrings) {
     var positions = <Position>[];
     for (var search in searchStrings) {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
index 62832b7..41b5cce 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
@@ -81,6 +81,7 @@
 import 'create_setter_test.dart' as create_setter;
 import 'data_driven/test_all.dart' as data_driven;
 import 'extend_class_for_mixin_test.dart' as extend_class_for_mixin;
+import 'fix_in_file_test.dart' as fix_in_file;
 import 'fix_test.dart' as fix;
 import 'import_async_test.dart' as import_async;
 import 'import_library_prefix_test.dart' as import_library_prefix;
@@ -245,6 +246,7 @@
     data_driven.main();
     extend_class_for_mixin.main();
     fix.main();
+    fix_in_file.main();
     import_async.main();
     import_library_prefix.main();
     import_library_project.main();
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index b1db9af..215b4da 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -2521,6 +2521,9 @@
     // test the static type of the expression
     DartType staticType = expression.staticType!;
     if (_typeSystem.isAssignableTo(staticType, fieldType)) {
+      if (!fieldType.isVoid) {
+        _checkForUseOfVoidResult(expression);
+      }
       return;
     }
     // report problem
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
index bb83b55..d584afe 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart
@@ -1281,10 +1281,7 @@
   }
 }
 
-class _InheritanceManager3Base extends PubPackageResolutionTest
-    with WithoutNullSafetyMixin {
-  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
-  //  test cases.
+class _InheritanceManager3Base extends PubPackageResolutionTest {
   late final InheritanceManager3 manager;
 
   @override
diff --git a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
index f9664da..ab1f6c6 100644
--- a/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart
@@ -392,12 +392,7 @@
 @reflectiveTest
 class AstRewriteMethodInvocationWithNonFunctionTypeAliasesTest
     extends PubPackageResolutionTest
-    with
-        WithoutNullSafetyMixin,
-        WithNonFunctionTypeAliasesMixin,
-        AstRewriteMethodInvocationTestCases {
-  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
-  //  test cases.
+    with WithNonFunctionTypeAliasesMixin, AstRewriteMethodInvocationTestCases {
   test_targetNull_typeAlias_interfaceType() async {
     await assertNoErrorsInCode(r'''
 class A<T, U> {
diff --git a/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart b/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
index 9429125..59e92f4 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_alias_test.dart
@@ -16,9 +16,7 @@
 
 @reflectiveTest
 class ClassAliasDriverResolutionTest extends PubPackageResolutionTest
-    with WithoutNullSafetyMixin, ElementsTypesMixin {
-  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
-  //  test cases.
+    with ElementsTypesMixin {
   test_defaultConstructor() async {
     await assertNoErrorsInCode(r'''
 class A {}
@@ -69,8 +67,8 @@
     assertElementTypes(
       x.interfaces,
       [
-        interfaceTypeStar(a),
-        interfaceTypeStar(b),
+        interfaceTypeNone(a),
+        interfaceTypeNone(b),
       ],
     );
   }
@@ -87,8 +85,8 @@
     assertElementTypes(
       x.mixins,
       [
-        interfaceTypeStar(a),
-        interfaceTypeStar(b),
+        interfaceTypeNone(a),
+        interfaceTypeNone(b),
       ],
     );
   }
@@ -179,8 +177,8 @@
     await assertNoErrorsInCode(r'''
 class A {
   A.c1(int a);
-  A.c2(int a, [int b, int c]);
-  A.c3(int a, {int b, int c});
+  A.c2(int a, [int b = 0, int c = 0]);
+  A.c3(int a, {int b = 0, int c = 0});
 }
 
 class M {}
diff --git a/pkg/analyzer/test/src/dart/resolution/class_test.dart b/pkg/analyzer/test/src/dart/resolution/class_test.dart
index f2bff29..da64df0 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_test.dart
@@ -18,9 +18,7 @@
 
 @reflectiveTest
 class ClassDriverResolutionTest extends PubPackageResolutionTest
-    with WithoutNullSafetyMixin, ElementsTypesMixin {
-  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
-  //  test cases.
+    with ElementsTypesMixin {
   test_element_allSupertypes() async {
     await assertNoErrorsInCode(r'''
 class A {}
@@ -42,11 +40,11 @@
     var d = findElement.class_('D');
     var e = findElement.class_('E');
 
-    var typeA = interfaceTypeStar(a);
-    var typeB = interfaceTypeStar(b);
-    var typeC = interfaceTypeStar(c);
-    var typeD = interfaceTypeStar(d);
-    var typeE = interfaceTypeStar(e);
+    var typeA = interfaceTypeNone(a);
+    var typeB = interfaceTypeNone(b);
+    var typeC = interfaceTypeNone(c);
+    var typeD = interfaceTypeNone(d);
+    var typeE = interfaceTypeNone(e);
 
     assertElementTypes(
       findElement.class_('X1').allSupertypes,
@@ -87,16 +85,16 @@
     assertElementTypes(
       findElement.class_('X1').allSupertypes,
       [
-        interfaceTypeStar(a, typeArguments: [stringType]),
+        interfaceTypeNone(a, typeArguments: [stringType]),
         objectType
       ],
     );
     assertElementTypes(
       findElement.class_('X2').allSupertypes,
       [
-        interfaceTypeStar(b, typeArguments: [
+        interfaceTypeNone(b, typeArguments: [
           stringType,
-          interfaceTypeStar(listElement, typeArguments: [intType])
+          interfaceTypeNone(listElement, typeArguments: [intType])
         ]),
         objectType
       ],
@@ -104,8 +102,8 @@
     assertElementTypes(
       findElement.class_('X3').allSupertypes,
       [
-        interfaceTypeStar(c, typeArguments: [doubleType]),
-        interfaceTypeStar(b, typeArguments: [intType, doubleType]),
+        interfaceTypeNone(c, typeArguments: [doubleType]),
+        interfaceTypeNone(b, typeArguments: [intType, doubleType]),
         objectType
       ],
     );
@@ -129,7 +127,7 @@
     var c = findElement.class_('C');
     assertElementTypes(
       findElement.class_('X').allSupertypes,
-      [interfaceTypeStar(a), interfaceTypeStar(b), interfaceTypeStar(c)],
+      [interfaceTypeNone(a), interfaceTypeNone(b), interfaceTypeNone(c)],
     );
   }
 
@@ -155,8 +153,8 @@
     assertElementTypes(
       c.interfaces,
       [
-        interfaceTypeStar(a),
-        interfaceTypeStar(b),
+        interfaceTypeNone(a),
+        interfaceTypeNone(b),
       ],
     );
   }
@@ -175,8 +173,8 @@
     assertElementTypes(
       c.mixins,
       [
-        interfaceTypeStar(a),
-        interfaceTypeStar(b),
+        interfaceTypeNone(a),
+        interfaceTypeNone(b),
       ],
     );
   }
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index 9e23683..7c8bd6a 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -19,9 +19,7 @@
 
 @reflectiveTest
 class MixinDriverResolutionTest extends PubPackageResolutionTest
-    with WithoutNullSafetyMixin, ElementsTypesMixin {
-  // TODO(https://github.com/dart-lang/sdk/issues/44666): Use null safety in
-  //  test cases.
+    with ElementsTypesMixin {
   test_accessor_getter() async {
     await assertNoErrorsInCode(r'''
 mixin M {
@@ -96,7 +94,7 @@
     var mElement = findElement.mixin('M');
 
     var aElement = findElement.class_('A');
-    assertElementTypes(aElement.mixins, [interfaceTypeStar(mElement)]);
+    assertElementTypes(aElement.mixins, [interfaceTypeNone(mElement)]);
 
     var mRef = findNode.typeName('M {} // A');
     assertTypeName(mRef, mElement, 'M');
@@ -111,7 +109,7 @@
     var mElement = findElement.mixin('M');
 
     var aElement = findElement.class_('A');
-    assertElementTypes(aElement.mixins, [interfaceTypeStar(mElement)]);
+    assertElementTypes(aElement.mixins, [interfaceTypeNone(mElement)]);
 
     var mRef = findNode.typeName('M;');
     assertTypeName(mRef, mElement, 'M');
@@ -168,15 +166,15 @@
     var c = findElement.class_('C');
     assertElementTypes(
       findElement.mixin('M1').allSupertypes,
-      [interfaceTypeStar(a), interfaceTypeStar(b), objectType],
+      [interfaceTypeNone(a), interfaceTypeNone(b), objectType],
     );
     assertElementTypes(
       findElement.mixin('M2').allSupertypes,
       [
-        interfaceTypeStar(a),
+        interfaceTypeNone(a),
         objectType,
-        interfaceTypeStar(b),
-        interfaceTypeStar(c)
+        interfaceTypeNone(b),
+        interfaceTypeNone(c)
       ],
     );
   }
@@ -195,15 +193,15 @@
     assertElementTypes(
       findElement.mixin('M1').allSupertypes,
       [
-        interfaceTypeStar(a, typeArguments: [intType, doubleType]),
+        interfaceTypeNone(a, typeArguments: [intType, doubleType]),
         objectType
       ],
     );
     assertElementTypes(
       findElement.mixin('M2').allSupertypes,
       [
-        interfaceTypeStar(b, typeArguments: [stringType]),
-        interfaceTypeStar(a, typeArguments: [intType, stringType]),
+        interfaceTypeNone(b, typeArguments: [stringType]),
+        interfaceTypeNone(a, typeArguments: [intType, stringType]),
         objectType
       ],
     );
@@ -325,7 +323,7 @@
     var randomElement = mathImport.importedLibrary!.getType('Random')!;
 
     var element = findElement.mixin('M');
-    assertElementTypes(element.interfaces, [interfaceTypeStar(randomElement)]);
+    assertElementTypes(element.interfaces, [interfaceTypeNone(randomElement)]);
 
     var typeRef = findNode.typeName('Random {}');
     assertTypeName(typeRef, randomElement, 'Random',
@@ -413,15 +411,15 @@
   test_error_mixinApplicationConcreteSuperInvokedMemberType_method() async {
     await assertErrorsInCode(r'''
 class I {
-  void foo([int p]) {}
+  void foo([int? p]) {}
 }
 
 class A {
-  void foo(int p) {}
+  void foo(int? p) {}
 }
 
 abstract class B extends A implements I {
-  void foo([int p]);
+  void foo([int? p]);
 }
 
 mixin M on I {
@@ -435,7 +433,7 @@
       error(
           CompileTimeErrorCode
               .MIXIN_APPLICATION_CONCRETE_SUPER_INVOKED_MEMBER_TYPE,
-          224,
+          227,
           1),
     ]);
   }
@@ -447,7 +445,7 @@
 }
 
 mixin M<U> on A<U> {
-  void remove(Object x) {
+  void remove(Object? x) {
     super.remove(x as U);
   }
 }
@@ -858,7 +856,7 @@
 
     var element = findElement.mixin('M');
     assertElementTypes(element.superclassConstraints, [
-      interfaceTypeStar(randomElement),
+      interfaceTypeNone(randomElement),
     ]);
 
     var typeRef = findNode.typeName('Random {}');
@@ -937,7 +935,7 @@
     var a = findElement.mixin('A');
     var b = findElement.mixin('B');
     assertElementTypes(b.superclassConstraints, [
-      interfaceTypeStar(a),
+      interfaceTypeNone(a),
     ]);
   }
 
@@ -972,7 +970,7 @@
   test_field() async {
     await assertNoErrorsInCode(r'''
 mixin M<T> {
-  T f;
+  late T f;
 }
 ''');
 
@@ -992,7 +990,7 @@
     expect(fields, hasLength(1));
 
     var fElement = fields[0];
-    assertElementName(fElement, 'f', offset: 17);
+    assertElementName(fElement, 'f', offset: 22);
     assertEnclosingElement(fElement, element);
 
     var fNode = findNode.variableDeclaration('f;');
@@ -1018,11 +1016,11 @@
     assertElementTypes(element.interfaces, [
       findElement.class_('A').instantiate(
         typeArguments: const [],
-        nullabilitySuffix: NullabilitySuffix.star,
+        nullabilitySuffix: NullabilitySuffix.none,
       ),
       findElement.class_('B').instantiate(
         typeArguments: const [],
-        nullabilitySuffix: NullabilitySuffix.star,
+        nullabilitySuffix: NullabilitySuffix.none,
       ),
     ]);
 
@@ -1089,19 +1087,17 @@
 
   test_methodCallTypeInference_mixinType() async {
     await assertErrorsInCode('''
-main() {
+g(M<T> f<T>()) {
   C<int> c = f();
 }
 
 class C<T> {}
 
 mixin M<T> on C<T> {}
-
-M<T> f<T>() => null;
 ''', [
-      error(HintCode.UNUSED_LOCAL_VARIABLE, 18, 1),
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 26, 1),
     ]);
-    var fInvocation = findNode.methodInvocation('f()');
+    var fInvocation = findNode.functionExpressionInvocation('f()');
     assertInvokeType(fInvocation, 'M<int> Function()');
   }
 
@@ -1117,11 +1113,11 @@
     assertElementTypes(element.superclassConstraints, [
       findElement.class_('A').instantiate(
         typeArguments: const [],
-        nullabilitySuffix: NullabilitySuffix.star,
+        nullabilitySuffix: NullabilitySuffix.none,
       ),
       findElement.class_('B').instantiate(
         typeArguments: const [],
-        nullabilitySuffix: NullabilitySuffix.star,
+        nullabilitySuffix: NullabilitySuffix.none,
       ),
     ]);
 
diff --git a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
index a893d8b..478f092 100644
--- a/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/conflicting_generic_interfaces_test.dart
@@ -10,13 +10,12 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ConflictingGenericInterfacesTest);
-    defineReflectiveTests(ConflictingGenericInterfacesWithNullSafetyTest);
   });
 }
 
 @reflectiveTest
 class ConflictingGenericInterfacesTest extends PubPackageResolutionTest
-    with WithoutNullSafetyMixin {
+    with WithNonFunctionTypeAliasesMixin {
   test_class_extends_implements() async {
     await assertErrorsInCode('''
 class I<T> {}
@@ -28,52 +27,6 @@
     ]);
   }
 
-  test_class_extends_with() async {
-    await assertErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-class B implements I<String> {}
-class C extends A with B {}
-''', [
-      error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 27),
-    ]);
-  }
-
-  test_classTypeAlias_extends_with() async {
-    await assertErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-mixin M implements I<String> {}
-class C = A with M;
-''', [
-      error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 19),
-    ]);
-  }
-
-  test_mixin_on_implements() async {
-    await assertErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-class B implements I<String> {}
-mixin M on A implements B {}
-''', [
-      error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 28),
-    ]);
-  }
-
-  test_noConflict() async {
-    await assertNoErrorsInCode('''
-class I<T> {}
-class A implements I<int> {}
-class B implements I<int> {}
-class C extends A implements B {}
-''');
-  }
-}
-
-@reflectiveTest
-class ConflictingGenericInterfacesWithNullSafetyTest
-    extends ConflictingGenericInterfacesTest with WithNullSafetyMixin {
   test_class_extends_implements_never() async {
     await assertNoErrorsInCode('''
 class I<T> {}
@@ -122,6 +75,17 @@
 ''');
   }
 
+  test_class_extends_with() async {
+    await assertErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+class B implements I<String> {}
+class C extends A with B {}
+''', [
+      error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 27),
+    ]);
+  }
+
   test_class_mixed_viaLegacy() async {
     newFile('$testPackageLibPath/a.dart', content: r'''
 class A<T> {}
@@ -181,4 +145,55 @@
       error(HintCode.IMPORT_OF_LEGACY_LIBRARY_INTO_NULL_SAFE, 24, 8),
     ]);
   }
+
+  test_classTypeAlias_extends_nonFunctionTypedef_with() async {
+    await assertErrorsInCode('''
+class I<T> {}
+typedef A = I<int>;
+mixin M implements I<String> {}
+class C = A with M;
+''', [
+      error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 66, 19),
+    ]);
+  }
+
+  test_classTypeAlias_extends_nonFunctionTypedef_with_ok() async {
+    await assertNoErrorsInCode('''
+class I<T> {}
+typedef A = I<String>;
+mixin M implements I<String> {}
+class C = A with M;
+''');
+  }
+
+  test_classTypeAlias_extends_with() async {
+    await assertErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+mixin M implements I<String> {}
+class C = A with M;
+''', [
+      error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 19),
+    ]);
+  }
+
+  test_mixin_on_implements() async {
+    await assertErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+class B implements I<String> {}
+mixin M on A implements B {}
+''', [
+      error(CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES, 75, 28),
+    ]);
+  }
+
+  test_noConflict() async {
+    await assertNoErrorsInCode('''
+class I<T> {}
+class A implements I<int> {}
+class B implements I<int> {}
+class C extends A implements B {}
+''');
+  }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
index e25c163..061b5e3 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
@@ -729,6 +729,26 @@
 @reflectiveTest
 class UseOfVoidResultTest_NonNullable extends PubPackageResolutionTest
     with WithNullSafetyMixin {
+  test_assignment_toDynamic() async {
+    await assertErrorsInCode('''
+void f(void x) {
+  // ignore:unused_local_variable
+  dynamic v = x;
+}
+''', [
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 65, 1),
+    ]);
+  }
+
+  test_assignment_toVoid() async {
+    await assertNoErrorsInCode('''
+void f(void x) {
+  // ignore:unused_local_variable
+  void v = x;
+}
+''');
+  }
+
   test_await() async {
     await assertErrorsInCode('''
 main(void x) async {
@@ -739,6 +759,26 @@
     ]);
   }
 
+  test_constructorFieldInitializer_toDynamic() async {
+    await assertErrorsInCode('''
+class A {
+  dynamic f;
+  A(void x) : f = x;
+}
+''', [
+      error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 41, 1),
+    ]);
+  }
+
+  test_constructorFieldInitializer_toVoid() async {
+    await assertNoErrorsInCode('''
+class A {
+  void f;
+  A(void x) : f = x;
+}
+''');
+  }
+
   test_nullCheck() async {
     await assertErrorsInCode(r'''
 f(void x) {
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 5fa624c..d7bc492 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -4495,27 +4495,17 @@
     await assertErrorsInCode('''
 class Base {
   var x;
-  Base() : x = print('Base.1') { print('Base.2'); }
+  Base() : x = 1;
 }
 
 class Derived extends Base {
   var y, z;
-  Derived()
-      : y = print('Derived.1'),
-        super(),
-        z = print('Derived.2') {
-    print('Derived.3');
-  }
+  Derived() : y = 1, super(), z = 2;
 }
 
 class Valid extends Base {
   var y, z;
-  Valid()
-      : y = print('Valid.1'),
-        z = print('Valid.2'),
-        super() {
-    print('Valid.3');
-  }
+  Valid(): y = 1, z = 2, super();
 }
 
 class AlsoValid extends Base {
@@ -4524,7 +4514,7 @@
 
 main() => new Derived();
 ''', [
-      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 170, 5),
+      error(CompileTimeErrorCode.INVALID_SUPER_INVOCATION, 105, 5),
     ]);
   }
 
diff --git a/pkg/analyzer/tool/summary/check_test.dart b/pkg/analyzer/tool/summary/check_test.dart
index 24ca23e..a5d0473 100644
--- a/pkg/analyzer/tool/summary/check_test.dart
+++ b/pkg/analyzer/tool/summary/check_test.dart
@@ -1,4 +1,3 @@
-// @dart = 2.9
 // Copyright (c) 2015, 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.
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index cb5beab..cc515a9 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -1,4 +1,3 @@
-// @dart = 2.9
 // Copyright (c) 2015, 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.
@@ -74,7 +73,7 @@
   ///
   /// If [builder] is `true`, the returned type should be appropriate for use in
   /// a builder class.
-  String defaultValue(idl_model.FieldType type, bool builder) {
+  String? defaultValue(idl_model.FieldType type, bool builder) {
     if (type.isList) {
       if (builder) {
         idl_model.FieldType elementType =
@@ -83,9 +82,11 @@
       } else {
         return 'const <${idlPrefix(type.typeName)}>[]';
       }
-    } else if (_idl.enums.containsKey(type.typeName)) {
-      return '${idlPrefix(type.typeName)}.'
-          '${_idl.enums[type.typeName].values[0].name}';
+    }
+
+    var enum_ = _idl.enums[type.typeName];
+    if (enum_ != null) {
+      return '${idlPrefix(type.typeName)}.${enum_.values[0].name}';
     } else if (type.typeName == 'double') {
       return '0.0';
     } else if (type.typeName == 'int') {
@@ -155,12 +156,19 @@
     }
   }
 
-  void outDoc(String documentation) {
+  void outDoc(String? documentation) {
     if (documentation != null) {
       documentation.split('\n').forEach(out);
     }
   }
 
+  /// Execute [out] of [s] in [indent].
+  void outWithIndent(String s) {
+    indent(() {
+      out(s);
+    });
+  }
+
   /// Enclose [s] in quotes, escaping as necessary.
   String quoted(String s) {
     return json.encode(s);
@@ -188,8 +196,8 @@
     idl_model.LogicalProperty property,
   ) {
     var assertCondition = property.variants
-        ?.map((key) => '${class_.variantField} == idl.$key')
-        ?.join(' || ');
+        .map((key) => '${class_.variantField} == idl.$key')
+        .join(' || ');
     return 'assert($assertCondition);';
   }
 }
@@ -269,8 +277,9 @@
             for (var field in sortedFields) {
               var logicalProperties = field.logicalProperties;
               if (logicalProperties != null) {
-                for (var logicalName in logicalProperties.keys) {
-                  var logicalProperty = logicalProperties[logicalName];
+                for (var logicalEntry in logicalProperties.entries) {
+                  var logicalName = logicalEntry.key;
+                  var logicalProperty = logicalEntry.value;
                   if (logicalProperty.variants.contains(variant)) {
                     writeField(
                       logicalName,
@@ -303,9 +312,11 @@
         out('$builderName.$constructorName({');
 
         for (var field in cls.fields) {
-          if (field.logicalProperties != null) {
-            for (var logicalName in field.logicalProperties.keys) {
-              var logicalProperty = field.logicalProperties[logicalName];
+          var logicalProperties = field.logicalProperties;
+          if (logicalProperties != null) {
+            for (var logicalEntry in logicalProperties.entries) {
+              var logicalName = logicalEntry.key;
+              var logicalProperty = logicalEntry.value;
               if (logicalProperty.variants.contains(variant)) {
                 out('${encodedType2(field.type)} $logicalName,');
               }
@@ -319,9 +330,11 @@
 
         var separator = ',';
         for (var field in cls.fields) {
-          if (field.logicalProperties != null) {
-            for (var logicalName in field.logicalProperties.keys) {
-              var logicalProperty = field.logicalProperties[logicalName];
+          var logicalProperties = field.logicalProperties;
+          if (logicalProperties != null) {
+            for (var logicalEntry in logicalProperties.entries) {
+              var logicalName = logicalEntry.key;
+              var logicalProperty = logicalEntry.value;
               if (logicalProperty.variants.contains(variant)) {
                 out('$separator _${field.name} = $logicalName');
                 separator = ', ';
@@ -373,8 +386,8 @@
         idl_model.FieldType fieldType = field.type;
         String valueName = '_' + field.name;
         String offsetName = 'offset_' + field.name;
-        String condition;
-        String writeCode;
+        String? condition;
+        String? writeCode;
         if (fieldType.isList) {
           condition = ' || $valueName!.isEmpty';
           if (_idl.classes.containsKey(fieldType.typeName)) {
@@ -409,9 +422,7 @@
           } else {
             out('if (!($valueName == null$condition)) {');
           }
-          indent(() {
-            out(writeCode);
-          });
+          outWithIndent(writeCode);
           out('}');
         }
       }
@@ -423,7 +434,7 @@
         idl_model.FieldType fieldType = field.type;
         String valueName = '_' + field.name;
         String condition = '$valueName != null';
-        String writeCode;
+        String? writeCode;
         if (fieldType.isList ||
             fieldType.typeName == 'String' ||
             _idl.classes.containsKey(fieldType.typeName)) {
@@ -447,9 +458,7 @@
           throw UnimplementedError('Writing type ${fieldType.typeName}');
         }
         out('if ($condition) {');
-        indent(() {
-          out(writeCode);
-        });
+        outWithIndent(writeCode);
         out('}');
       }
       out('return fbBuilder.endTable();');
@@ -488,8 +497,9 @@
             for (var field in cls.fields) {
               var logicalProperties = field.logicalProperties;
               if (logicalProperties != null) {
-                for (var logicalName in logicalProperties.keys) {
-                  var logicalProperty = logicalProperties[logicalName];
+                for (var logicalEntry in logicalProperties.entries) {
+                  var logicalName = logicalEntry.key;
+                  var logicalProperty = logicalEntry.value;
                   if (logicalProperty.variants.contains(variant)) {
                     writeField(
                       logicalName,
@@ -519,16 +529,18 @@
       String fieldName = field.name;
       idl_model.FieldType fieldType = field.type;
       String typeStr = encodedType(fieldType);
-      String def = defaultValue(fieldType, true);
+      String? def = defaultValue(fieldType, true);
       String defSuffix = def == null ? '' : ' ??= $def';
       out();
       if (field.isDeprecated) {
         out('@override');
         out('Null get $fieldName => ${_BaseGenerator._throwDeprecated};');
       } else {
-        if (field.logicalProperties != null) {
-          for (var logicalName in field.logicalProperties.keys) {
-            var logicalProperty = field.logicalProperties[logicalName];
+        var logicalProperties = field.logicalProperties;
+        if (logicalProperties != null) {
+          for (var logicalEntry in logicalProperties.entries) {
+            var logicalName = logicalEntry.key;
+            var logicalProperty = logicalEntry.value;
             out('@override');
             out('$typeStr get $logicalName {');
             indent(() {
@@ -549,9 +561,10 @@
 
         outDoc(field.documentation);
 
-        if (field.logicalProperties != null) {
-          for (var logicalName in field.logicalProperties.keys) {
-            var logicalProperty = field.logicalProperties[logicalName];
+        if (logicalProperties != null) {
+          for (var logicalEntry in logicalProperties.entries) {
+            var logicalName = logicalEntry.key;
+            var logicalProperty = logicalEntry.value;
             out('set $logicalName($typeStr value) {');
             indent(() {
               out(_variantAssertStatement(cls, logicalProperty));
@@ -640,8 +653,8 @@
       out('List<int> toBuffer() {');
       indent(() {
         out('fb.Builder fbBuilder = fb.Builder();');
-        String fileId =
-            cls.fileIdentifier == null ? '' : ', ${quoted(cls.fileIdentifier)}';
+        var idOrNull = cls.fileIdentifier;
+        var fileId = idOrNull == null ? '' : ', ${quoted(idOrNull)}';
         out('return fbBuilder.finish(finish(fbBuilder)$fileId);');
       });
       out('}');
@@ -654,7 +667,7 @@
   final StringBuffer _outBuffer = StringBuffer();
 
   /// Semantic model of the "IDL" input file.
-  idl_model.Idl _idl;
+  final idl_model.Idl _idl = idl_model.Idl();
 
   _CodeGenerator(String idlPath) {
     // Parse the input "IDL" file.
@@ -674,12 +687,13 @@
   /// [extractIdl]).
   void checkIdl() {
     _idl.classes.forEach((String name, idl_model.ClassDeclaration cls) {
-      if (cls.fileIdentifier != null) {
-        if (cls.fileIdentifier.length != 4) {
+      var fileIdentifier = cls.fileIdentifier;
+      if (fileIdentifier != null) {
+        if (fileIdentifier.length != 4) {
           throw Exception('$name: file identifier must be 4 characters');
         }
-        for (int i = 0; i < cls.fileIdentifier.length; i++) {
-          if (cls.fileIdentifier.codeUnitAt(i) >= 256) {
+        for (int i = 0; i < fileIdentifier.length; i++) {
+          if (fileIdentifier.codeUnitAt(i) >= 256) {
             throw Exception(
                 '$name: file identifier must be encodable as Latin-1');
           }
@@ -724,21 +738,21 @@
   /// Process the AST in [idlParsed] and store the resulting semantic model in
   /// [_idl].  Also perform some error checking.
   void extractIdl(CompilationUnit idlParsed) {
-    _idl = idl_model.Idl();
     for (CompilationUnitMember decl in idlParsed.declarations) {
       if (decl is ClassDeclaration) {
         bool isTopLevel = false;
         bool isDeprecated = false;
-        String fileIdentifier;
+        String? fileIdentifier;
         String clsName = decl.name;
-        String variantField;
+        String? variantField;
         for (Annotation annotation in decl.metadata) {
-          if (annotation.arguments != null &&
+          var arguments = annotation.arguments;
+          if (arguments != null &&
               annotation.name == 'TopLevel' &&
               annotation.constructorName == null) {
             isTopLevel = true;
-            if (annotation.arguments.length == 1) {
-              Expression arg = annotation.arguments[0];
+            if (arguments.length == 1) {
+              Expression arg = arguments[0];
               if (arg is StringLiteral) {
                 fileIdentifier = arg.stringValue;
               } else {
@@ -746,19 +760,19 @@
                     'Class `$clsName`: TopLevel argument must be a string'
                     ' literal');
               }
-            } else if (annotation.arguments.isNotEmpty) {
+            } else if (arguments.isNotEmpty) {
               throw Exception(
                   'Class `$clsName`: TopLevel requires 0 or 1 arguments');
             }
-          } else if (annotation.arguments == null &&
+          } else if (arguments == null &&
               annotation.name == 'deprecated' &&
               annotation.constructorName == null) {
             isDeprecated = true;
-          } else if (annotation.arguments != null &&
+          } else if (arguments != null &&
               annotation.name == 'Variant' &&
               annotation.constructorName == null) {
-            if (annotation.arguments.length == 1) {
-              Expression arg = annotation.arguments[0];
+            if (arguments.length == 1) {
+              Expression arg = arguments[0];
               if (arg is StringLiteral) {
                 variantField = arg.stringValue;
               } else {
@@ -766,7 +780,7 @@
                   'Class `$clsName`: @Variant argument must be a string literal',
                 );
               }
-            } else if (annotation.arguments.isNotEmpty) {
+            } else if (arguments.isNotEmpty) {
               throw Exception(
                 'Class `$clsName`: @Variant requires 1 argument',
               );
@@ -783,7 +797,8 @@
         );
         _idl.classes[clsName] = cls;
         String expectedBase = 'base.SummaryClass';
-        if (decl.superclass == null || decl.superclass.name != expectedBase) {
+        var superclass = decl.superclass;
+        if (superclass == null || superclass.name != expectedBase) {
           throw Exception('Class `$clsName` needs to extend `$expectedBase`');
         }
         for (ClassMember classMember in decl.members) {
@@ -798,12 +813,12 @@
           }
         }
       } else if (decl is EnumDeclaration) {
-        String doc = _getNodeDoc(decl);
+        var doc = _getNodeDoc(decl);
         idl_model.EnumDeclaration enm =
             idl_model.EnumDeclaration(doc, decl.name);
         _idl.enums[enm.name] = enm;
         for (EnumConstantDeclaration constDecl in decl.constants) {
-          String doc = _getNodeDoc(constDecl);
+          var doc = _getNodeDoc(constDecl);
           enm.values.add(idl_model.EnumValueDeclaration(doc, constDecl.name));
         }
       } else {
@@ -879,41 +894,43 @@
     MethodDeclaration getter,
   ) {
     var desc = '${cls.name}.${getter.name}';
-    if (getter.returnType == null) {
+
+    var type = getter.returnType;
+    if (type == null) {
       throw Exception('Getter needs a type: $desc');
     }
 
-    var type = getter.returnType;
-
     var isList = false;
-    if (type.name == 'List' &&
-        type.typeArguments != null &&
-        type.typeArguments.length == 1) {
-      isList = true;
-      type = type.typeArguments[0];
+    if (type.name == 'List') {
+      var typeArguments = type.typeArguments;
+      if (typeArguments != null && typeArguments.length == 1) {
+        isList = true;
+        type = typeArguments[0];
+      }
     }
     if (type.typeArguments != null) {
       throw Exception('Cannot handle type arguments in `$type`');
     }
 
-    int id;
-    List<String> variants;
+    int? id;
+    List<String>? variants;
     bool isDeprecated = false;
     bool isInformative = false;
 
     for (Annotation annotation in getter.metadata) {
+      var arguments = annotation.arguments;
       if (annotation.name == 'Id') {
         if (id != null) {
           throw Exception('Duplicate @id annotation ($getter)');
         }
-        if (annotation.arguments == null) {
+        if (arguments == null) {
           throw Exception('@Id must be passed an argument ($desc)');
         }
-        if (annotation.arguments.length != 1) {
+        if (arguments.length != 1) {
           throw Exception('@Id must be passed exactly one argument ($desc)');
         }
 
-        var idExpression = annotation.arguments[0];
+        var idExpression = arguments[0];
         if (idExpression is IntegerLiteral) {
           id = idExpression.value;
         } else {
@@ -922,7 +939,7 @@
           );
         }
       } else if (annotation.name == 'deprecated') {
-        if (annotation.arguments != null) {
+        if (arguments != null) {
           throw Exception('@deprecated does not take args ($desc)');
         }
         isDeprecated = true;
@@ -936,16 +953,16 @@
           throw Exception('Duplicate @VariantId annotation ($getter)');
         }
 
-        if (annotation.arguments == null) {
+        if (arguments == null) {
           throw Exception('@VariantId must be given arguments ($desc)');
         }
-        if (annotation.arguments.length != 2) {
+        if (arguments.length != 2) {
           throw Exception(
             '@VariantId must be given exactly two arguments ($desc)',
           );
         }
 
-        var idExpression = annotation.arguments[0];
+        var idExpression = arguments[0];
         if (idExpression is IntegerLiteral) {
           id = idExpression.value;
         } else {
@@ -954,7 +971,7 @@
           );
         }
 
-        var variantExpression = annotation.arguments[1];
+        var variantExpression = arguments[1];
         if (variantExpression is NamedExpression) {
           if (variantExpression.name == 'variant') {
             variants = [variantExpression.expression.toCode()];
@@ -982,21 +999,22 @@
     var fieldType = idl_model.FieldType(type.name, isList);
 
     String name = getter.name;
-    Map<String, idl_model.LogicalProperty> logicalProperties;
+    Map<String, idl_model.LogicalProperty>? logicalProperties;
     if (variants != null) {
       var fieldsWithSameId =
           cls.allFields.where((field) => field.id == id).toList();
       if (fieldsWithSameId.isNotEmpty) {
         var existingField = fieldsWithSameId.single;
-        if (existingField.logicalProperties == null) {
+        var logicalProperties = existingField.logicalProperties;
+        if (logicalProperties == null) {
           throw Exception('$desc: id $id is already used as a non-variant '
               'field: ${existingField.name}');
         }
 
-        var map = existingField.logicalProperties;
         for (var variant in variants) {
-          for (var logicalName in map.keys) {
-            if (map[logicalName].variants.contains(variant)) {
+          for (var entry in logicalProperties.entries) {
+            if (entry.value.variants.contains(variant)) {
+              var logicalName = entry.key;
               throw Exception('$desc: id $id is already used for $logicalName');
             }
           }
@@ -1008,13 +1026,13 @@
           );
         }
 
-        if (map[getter.name] != null) {
+        if (logicalProperties[getter.name] != null) {
           throw Exception(
             '$desc: logical property ${getter.name} is already used',
           );
         }
 
-        map[getter.name] = idl_model.LogicalProperty(
+        logicalProperties[getter.name] = idl_model.LogicalProperty(
           isDeprecated: isDeprecated,
           isInformative: isInformative,
           variants: variants,
@@ -1047,8 +1065,8 @@
 
   /// Return the documentation text of the given [node], or `null` if the [node]
   /// does not have a comment.  Each line is `\n` separated.
-  String _getNodeDoc(AnnotatedNode node) {
-    Comment comment = node.documentationComment;
+  String? _getNodeDoc(AnnotatedNode node) {
+    var comment = node.documentationComment;
     if (comment != null && comment.isDocumentation) {
       if (comment.tokens.length == 1 &&
           comment.tokens.first.lexeme.startsWith('/*')) {
@@ -1146,11 +1164,12 @@
     // Standard flatbuffers only support one root type.  We support multiple
     // root types.  For now work around this by forcing PackageBundle to be the
     // root type.  TODO(paulberry): come up with a better solution.
-    idl_model.ClassDeclaration rootType = _idl.classes['PackageBundle'];
+    idl_model.ClassDeclaration rootType = _idl.classes['PackageBundle']!;
     out('root_type ${rootType.name};');
-    if (rootType.fileIdentifier != null) {
+    var rootFileIdentifier = rootType.fileIdentifier;
+    if (rootFileIdentifier != null) {
       out();
-      out('file_identifier ${quoted(rootType.fileIdentifier)};');
+      out('file_identifier ${quoted(rootFileIdentifier)};');
     }
   }
 
@@ -1221,7 +1240,7 @@
         String typeName = type.typeName;
         // Prepare "readCode" + "def"
         String readCode;
-        String def = defaultValue(type, false);
+        String? def = defaultValue(type, false);
         if (type.isList) {
           if (typeName == 'bool') {
             readCode = 'const fb.BoolListReader()';
@@ -1235,10 +1254,11 @@
           } else if (_idl.classes.containsKey(typeName)) {
             String itemCode = '_${typeName}Reader()';
             readCode = 'const fb.ListReader<${idlPrefix(typeName)}>($itemCode)';
-          } else {
-            assert(_idl.enums.containsKey(typeName));
+          } else if (_idl.enums.containsKey(typeName)) {
             String itemCode = '_${typeName}Reader()';
             readCode = 'const fb.ListReader<${idlPrefix(typeName)}>($itemCode)';
+          } else {
+            throw Exception('$name.$fieldName: illegal type ($type)');
           }
         } else if (typeName == 'bool') {
           readCode = 'const fb.BoolReader()';
@@ -1248,12 +1268,13 @@
           readCode = 'const fb.Uint32Reader()';
         } else if (typeName == 'String') {
           readCode = 'const fb.StringReader()';
-        } else if (_idl.enums.containsKey(typeName)) {
-          readCode = 'const _${typeName}Reader()';
         } else if (_idl.classes.containsKey(typeName)) {
           readCode = 'const _${typeName}Reader()';
+        } else if (_idl.enums.containsKey(typeName)) {
+          readCode = 'const _${typeName}Reader()';
+        } else {
+          throw Exception('$name.$fieldName: illegal type ($type)');
         }
-        assert(readCode != null);
         // Write the getter implementation.
         out();
         String returnType = _dartType(type);
@@ -1261,9 +1282,11 @@
           out('@override');
           out('Null get $fieldName => ${_BaseGenerator._throwDeprecated};');
         } else {
-          if (field.logicalProperties != null) {
-            for (var logicalName in field.logicalProperties.keys) {
-              var logicalProperty = field.logicalProperties[logicalName];
+          var logicalProperties = field.logicalProperties;
+          if (logicalProperties != null) {
+            for (var logicalEntry in logicalProperties.entries) {
+              var logicalName = logicalEntry.key;
+              var logicalProperty = logicalEntry.value;
               out('@override');
               out('$returnType get $logicalName {');
               indent(() {
@@ -1332,7 +1355,7 @@
 
       String jsonStore(
           idl_model.FieldType type, String name, String localName) {
-        _StringToString convertItem;
+        _StringToString? convertItem;
         if (_idl.classes.containsKey(type.typeName)) {
           convertItem = (String name) => '$name.toJson()';
         } else if (_idl.enums.containsKey(type.typeName)) {
@@ -1384,8 +1407,9 @@
                 for (idl_model.FieldDeclaration field in cls.fields) {
                   var logicalProperties = field.logicalProperties;
                   if (logicalProperties != null) {
-                    for (var logicalName in logicalProperties.keys) {
-                      var logicalProperty = logicalProperties[logicalName];
+                    for (var logicalEntry in logicalProperties.entries) {
+                      var logicalName = logicalEntry.key;
+                      var logicalProperty = logicalEntry.value;
                       if (logicalProperty.variants.contains(variant)) {
                         var localName = 'local_${field.name}';
                         out('var $localName = ${field.name};');
@@ -1427,9 +1451,11 @@
           indent(() {
             out('return {');
             for (idl_model.FieldDeclaration field in cls.fields) {
-              if (field.logicalProperties != null) {
-                for (var logicalName in field.logicalProperties.keys) {
-                  var logicalProperty = field.logicalProperties[logicalName];
+              var logicalProperties = field.logicalProperties;
+              if (logicalProperties != null) {
+                for (var logicalEntry in logicalProperties.entries) {
+                  var logicalName = logicalEntry.key;
+                  var logicalProperty = logicalEntry.value;
                   if (logicalProperty.variants.contains(variant)) {
                     out('${quoted(logicalName)}: $logicalName,');
                   }
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index a81c33c..8523476 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -40,7 +40,7 @@
 class ClassDeclaration extends CompilationUnitMember {
   final String name;
 
-  final TypeName superclass;
+  final TypeName? superclass;
 
   final List<ClassMember> members;
 
@@ -106,7 +106,7 @@
   final String name;
 
   EnumConstantDeclaration(
-      Comment? documentationComment, List<Annotation> metadata, this.name)
+      Comment? documentationComment, List<Annotation>? metadata, this.name)
       : super(documentationComment, metadata);
 }
 
@@ -155,7 +155,7 @@
 
   final String name;
 
-  final TypeName returnType;
+  final TypeName? returnType;
 
   MethodDeclaration(Comment? documentationComment, List<Annotation>? metadata,
       this.isGetter, this.name, this.returnType)
@@ -223,7 +223,7 @@
   void endClassDeclaration(Token beginToken, Token endToken) {
     debugEvent("ClassDeclaration");
     var members = popTypedList<ClassMember>() ?? [];
-    var superclass = pop() as TypeName;
+    var superclass = pop() as TypeName?;
     pop(); // Type variables
     var name = pop() as String;
     var metadata = popTypedList<Annotation>();
@@ -253,7 +253,7 @@
     pop(); // Formal parameters
     pop(); // Type variables
     var name = pop() as String;
-    var returnType = pop() as TypeName;
+    var returnType = pop() as TypeName?;
     var metadata = popTypedList<Annotation>();
     var comment = pop() as Comment?;
     push(MethodDeclaration(
@@ -359,7 +359,7 @@
     debugEvent("Metadata");
     inMetadata = false;
     var arguments = pop() as List?;
-    var constructorName = popIfNotNull(periodBeforeName) as String;
+    var constructorName = popIfNotNull(periodBeforeName) as String?;
     pop(); // Type arguments
     var name = pop() as String;
     push(Annotation(name, constructorName,
@@ -434,7 +434,7 @@
   @override
   void handleIdentifier(Token token, IdentifierContext context) {
     if (context == IdentifierContext.enumValueDeclaration) {
-      var metadata = popTypedList() as List<Annotation>;
+      var metadata = popTypedList() as List<Annotation>?;
       var comment = pop() as Comment?;
       push(EnumConstantDeclaration(comment, metadata, token.lexeme));
     } else {
diff --git a/pkg/compiler/lib/src/common_elements.dart b/pkg/compiler/lib/src/common_elements.dart
index 38e856c..0010e02 100644
--- a/pkg/compiler/lib/src/common_elements.dart
+++ b/pkg/compiler/lib/src/common_elements.dart
@@ -285,7 +285,7 @@
 
   ClassEntity get jsIntClass;
 
-  ClassEntity get jsDoubleClass;
+  ClassEntity get jsNumNotIntClass;
 
   ClassEntity get jsNullClass;
 
@@ -1293,10 +1293,10 @@
   @override
   ClassEntity get jsIntClass => _jsIntClass ??= _findInterceptorsClass('JSInt');
 
-  ClassEntity _jsDoubleClass;
+  ClassEntity _jsNumNotIntClass;
   @override
-  ClassEntity get jsDoubleClass =>
-      _jsDoubleClass ??= _findInterceptorsClass('JSDouble');
+  ClassEntity get jsNumNotIntClass =>
+      _jsNumNotIntClass ??= _findInterceptorsClass('JSNumNotInt');
 
   ClassEntity _jsNullClass;
   @override
diff --git a/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart b/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
index 024f6a2..93a30d0 100644
--- a/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
+++ b/pkg/compiler/lib/src/inferrer/abstract_value_domain.dart
@@ -125,7 +125,7 @@
 
   /// The [AbstractValue] that represents a non-null subtype of `double` at
   /// runtime.
-  AbstractValue get doubleType;
+  AbstractValue get numNotIntType;
 
   /// The [AbstractValue] that represents a non-null subtype of `num` at
   /// runtime.
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
index 15738f2..22a900b 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
@@ -611,9 +611,9 @@
   int get numType =>
       _numType ??= createNonNullSubclass(commonElements.jsNumberClass);
 
-  int _doubleType;
-  int get doubleType =>
-      _doubleType ??= createNonNullExact(commonElements.jsDoubleClass);
+  int _numNotIntType;
+  int get numNotIntType =>
+      _numNotIntType ??= createNonNullExact(commonElements.jsNumNotIntClass);
 
   int _intType;
   int get intType =>
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
index 0931fee..fedb435 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
@@ -767,8 +767,8 @@
       PowersetValue(_abstractValueDomain.numType, _powersetBitsDomain.numType);
 
   @override
-  AbstractValue get doubleType => PowersetValue(
-      _abstractValueDomain.doubleType, _powersetBitsDomain.doubleType);
+  AbstractValue get numNotIntType => PowersetValue(
+      _abstractValueDomain.numNotIntType, _powersetBitsDomain.numNotIntType);
 
   @override
   AbstractValue get intType =>
diff --git a/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart b/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
index 46a60ad..d60a060 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/wrapped.dart
@@ -566,8 +566,8 @@
       WrappedAbstractValue(_abstractValueDomain.numType);
 
   @override
-  AbstractValue get doubleType =>
-      WrappedAbstractValue(_abstractValueDomain.doubleType);
+  AbstractValue get numNotIntType =>
+      WrappedAbstractValue(_abstractValueDomain.numNotIntType);
 
   @override
   AbstractValue get intType =>
diff --git a/pkg/compiler/lib/src/inferrer/trivial.dart b/pkg/compiler/lib/src/inferrer/trivial.dart
index 8e176be..27e4f12b 100644
--- a/pkg/compiler/lib/src/inferrer/trivial.dart
+++ b/pkg/compiler/lib/src/inferrer/trivial.dart
@@ -420,7 +420,7 @@
   AbstractValue get numType => const TrivialAbstractValue();
 
   @override
-  AbstractValue get doubleType => const TrivialAbstractValue();
+  AbstractValue get numNotIntType => const TrivialAbstractValue();
 
   @override
   AbstractValue get intType => const TrivialAbstractValue();
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/constants.dart b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
index 7495c23..b562b3c 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
@@ -41,12 +41,11 @@
     if (constant_system.isInt(constant)) {
       if (constant.isMinusZero) {
         return _abstractValueDomain.uint31Type;
-      } else {
-        assert(constant.isPositiveInfinity || constant.isNegativeInfinity);
-        return _abstractValueDomain.intType;
       }
+      assert(constant.isPositiveInfinity || constant.isNegativeInfinity);
+      return _abstractValueDomain.intType;
     }
-    return _abstractValueDomain.doubleType;
+    return _abstractValueDomain.numNotIntType;
   }
 
   @override
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
index 649bc88..451af33 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
@@ -235,7 +235,7 @@
   bool containsOnlyNum(JClosedWorld closedWorld) {
     return containsOnlyInt(closedWorld) ||
         base == closedWorld.commonElements.doubleClass ||
-        base == closedWorld.commonElements.jsDoubleClass ||
+        base == closedWorld.commonElements.jsNumNotIntClass ||
         base == closedWorld.commonElements.numClass ||
         base == closedWorld.commonElements.jsNumberClass;
   }
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
index 50fa04f..2ac07ca 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
@@ -52,7 +52,7 @@
   TypeMask _uint32Type;
   TypeMask _uint31Type;
   TypeMask _positiveIntType;
-  TypeMask _doubleType;
+  TypeMask _numNotIntType;
   TypeMask _numType;
   TypeMask _boolType;
   TypeMask _functionType;
@@ -114,8 +114,8 @@
           commonElements.jsPositiveIntClass, _closedWorld);
 
   @override
-  TypeMask get doubleType => _doubleType ??=
-      new TypeMask.nonNullExact(commonElements.jsDoubleClass, _closedWorld);
+  TypeMask get numNotIntType => _numNotIntType ??=
+      new TypeMask.nonNullExact(commonElements.jsNumNotIntClass, _closedWorld);
 
   @override
   TypeMask get numType => _numType ??=
@@ -500,14 +500,14 @@
       AbstractBool.maybeOrFalse(_canBePrimitiveNumber(value));
 
   bool _canBePrimitiveNumber(TypeMask value) {
-    // TODO(sra): It should be possible to test only jsDoubleClass and
+    // TODO(sra): It should be possible to test only jsNumNotIntClass and
     // jsUInt31Class, since all others are superclasses of these two.
     return _containsType(value, commonElements.jsNumberClass) ||
         _containsType(value, commonElements.jsIntClass) ||
         _containsType(value, commonElements.jsPositiveIntClass) ||
         _containsType(value, commonElements.jsUInt32Class) ||
         _containsType(value, commonElements.jsUInt31Class) ||
-        _containsType(value, commonElements.jsDoubleClass);
+        _containsType(value, commonElements.jsNumNotIntClass);
   }
 
   @override
diff --git a/pkg/compiler/lib/src/js_backend/backend_impact.dart b/pkg/compiler/lib/src/js_backend/backend_impact.dart
index 39c5e4f..327156c 100644
--- a/pkg/compiler/lib/src/js_backend/backend_impact.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_impact.dart
@@ -212,7 +212,7 @@
       _commonElements.jsUInt32Class,
       _commonElements.jsUInt31Class,
       _commonElements.jsNumberClass,
-      _commonElements.jsDoubleClass
+      _commonElements.jsNumNotIntClass,
     ]);
   }
 
diff --git a/pkg/compiler/lib/src/js_backend/codegen_listener.dart b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
index c85c14c..bbac3ae 100644
--- a/pkg/compiler/lib/src/js_backend/codegen_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
@@ -271,8 +271,8 @@
       registerInstantiation(_commonElements.jsUInt32Class);
       registerInstantiation(_commonElements.jsUInt31Class);
       registerInstantiation(_commonElements.jsNumberClass);
-    } else if (cls == _commonElements.jsDoubleClass) {
-      registerInstantiation(_commonElements.jsDoubleClass);
+    } else if (cls == _commonElements.jsNumNotIntClass) {
+      registerInstantiation(_commonElements.jsNumNotIntClass);
       registerInstantiation(_commonElements.jsNumberClass);
     } else if (cls == _commonElements.boolClass ||
         cls == _commonElements.jsBoolClass) {
@@ -287,7 +287,7 @@
       registerInstantiation(_commonElements.jsPositiveIntClass);
       registerInstantiation(_commonElements.jsUInt32Class);
       registerInstantiation(_commonElements.jsUInt31Class);
-      registerInstantiation(_commonElements.jsDoubleClass);
+      registerInstantiation(_commonElements.jsNumNotIntClass);
       registerInstantiation(_commonElements.jsNumberClass);
     } else if (cls == _commonElements.jsJavaScriptObjectClass) {
       registerInstantiation(_commonElements.jsJavaScriptObjectClass);
diff --git a/pkg/compiler/lib/src/js_backend/namer.dart b/pkg/compiler/lib/src/js_backend/namer.dart
index 132100f..559c51e 100644
--- a/pkg/compiler/lib/src/js_backend/namer.dart
+++ b/pkg/compiler/lib/src/js_backend/namer.dart
@@ -1647,7 +1647,7 @@
     if (cls == commonElements.objectClass) return "o";
     if (cls == commonElements.jsStringClass) return "s";
     if (cls == commonElements.jsArrayClass) return "a";
-    if (cls == commonElements.jsDoubleClass) return "d";
+    if (cls == commonElements.jsNumNotIntClass) return "d";
     if (cls == commonElements.jsIntClass) return "i";
     if (cls == commonElements.jsNumberClass) return "n";
     if (cls == commonElements.jsNullClass) return "u";
diff --git a/pkg/compiler/lib/src/js_backend/resolution_listener.dart b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
index a889fc8..faff4b7 100644
--- a/pkg/compiler/lib/src/js_backend/resolution_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
@@ -373,8 +373,8 @@
       _addInterceptors(_commonElements.jsUInt32Class, impactBuilder);
       _addInterceptors(_commonElements.jsUInt31Class, impactBuilder);
       _addInterceptors(_commonElements.jsNumberClass, impactBuilder);
-    } else if (cls == _commonElements.jsDoubleClass) {
-      _addInterceptors(_commonElements.jsDoubleClass, impactBuilder);
+    } else if (cls == _commonElements.jsNumNotIntClass) {
+      _addInterceptors(_commonElements.jsNumNotIntClass, impactBuilder);
       _addInterceptors(_commonElements.jsNumberClass, impactBuilder);
     } else if (cls == _commonElements.boolClass ||
         cls == _commonElements.jsBoolClass) {
@@ -389,7 +389,7 @@
       _addInterceptors(_commonElements.jsPositiveIntClass, impactBuilder);
       _addInterceptors(_commonElements.jsUInt32Class, impactBuilder);
       _addInterceptors(_commonElements.jsUInt31Class, impactBuilder);
-      _addInterceptors(_commonElements.jsDoubleClass, impactBuilder);
+      _addInterceptors(_commonElements.jsNumNotIntClass, impactBuilder);
       _addInterceptors(_commonElements.jsNumberClass, impactBuilder);
     } else if (cls == _commonElements.jsJavaScriptObjectClass) {
       _addInterceptors(_commonElements.jsJavaScriptObjectClass, impactBuilder);
diff --git a/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
index c0d9037..b325c92 100644
--- a/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
@@ -62,7 +62,7 @@
       if (cls == _commonElements.jsBoolClass) {
         condition = js('(typeof receiver) == "boolean"');
       } else if (cls == _commonElements.jsIntClass ||
-          cls == _commonElements.jsDoubleClass ||
+          cls == _commonElements.jsNumNotIntClass ||
           cls == _commonElements.jsNumberClass) {
         throw 'internal error';
       } else if (cls == _commonElements.jsArrayClass ||
@@ -82,7 +82,7 @@
 
     bool hasArray = false;
     bool hasBool = false;
-    bool hasDouble = false;
+    bool hasNumNotInt = false;
     bool hasInt = false;
     bool hasNull = false;
     bool hasNumber = false;
@@ -98,8 +98,8 @@
         hasArray = true;
       else if (cls == _commonElements.jsBoolClass)
         hasBool = true;
-      else if (cls == _commonElements.jsDoubleClass)
-        hasDouble = true;
+      else if (cls == _commonElements.jsNumNotIntClass)
+        hasNumNotInt = true;
       else if (cls == _commonElements.jsIntClass)
         hasInt = true;
       else if (cls == _commonElements.jsNullClass)
@@ -123,7 +123,7 @@
         }
       }
     }
-    if (hasDouble) {
+    if (hasNumNotInt) {
       hasNumber = true;
     }
     if (hasInt) hasNumber = true;
@@ -138,21 +138,22 @@
     if (hasNumber) {
       jsAst.Statement whenNumber;
 
-      /// Note: there are two number classes in play: Dart's [num],
-      /// and JavaScript's Number (typeof receiver == 'number').  This
-      /// is the fallback used when we have determined that receiver
-      /// is a JavaScript Number.
-      jsAst.Expression interceptorForNumber = interceptorFor(hasDouble
-          ? _commonElements.jsDoubleClass
-          : _commonElements.jsNumberClass);
-
       if (hasInt) {
         whenNumber = js.statement('''{
             if (Math.floor(receiver) == receiver) return #;
             return #;
-        }''',
-            [interceptorFor(_commonElements.jsIntClass), interceptorForNumber]);
+        }''', [
+          interceptorFor(_commonElements.jsIntClass),
+          interceptorFor(_commonElements.jsNumNotIntClass)
+        ]);
       } else {
+        // If we don't have methods defined on the JSInt interceptor, use the
+        // JSNumber interceptor, unless we have a method defined only for
+        // non-integral values.
+        jsAst.Expression interceptorForNumber = interceptorFor(hasNumNotInt
+            ? _commonElements.jsNumNotIntClass
+            : _commonElements.jsNumberClass);
+
         whenNumber = js.statement('return #', interceptorForNumber);
       }
       statements
@@ -242,7 +243,7 @@
       }
       if (!classes.contains(_commonElements.jsIntClass) &&
           !classes.contains(_commonElements.jsNumberClass) &&
-          !classes.contains(_commonElements.jsDoubleClass)) {
+          !classes.contains(_commonElements.jsNumNotIntClass)) {
         return null;
       }
       if (selector.argumentCount == 1) {
diff --git a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
index d54784a..c7ffca6 100644
--- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
+++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
@@ -141,7 +141,7 @@
       return _commonElements.jsArrayClass;
     } else if (_abstractValueDomain.isNumberOrNull(type).isDefinitelyTrue &&
         !interceptedClasses.contains(_commonElements.jsIntClass) &&
-        !interceptedClasses.contains(_commonElements.jsDoubleClass)) {
+        !interceptedClasses.contains(_commonElements.jsNumNotIntClass)) {
       // If the method being intercepted is not defined in [int] or [double] we
       // can safely use the number interceptor.  This is because none of the
       // [int] or [double] methods are called from a method defined on [num].
@@ -259,7 +259,7 @@
       // If we found that we need number, we must still go through all
       // uses to check if they require int, or double.
       if (interceptedClasses.contains(_commonElements.jsNumberClass) &&
-          !(interceptedClasses.contains(_commonElements.jsDoubleClass) ||
+          !(interceptedClasses.contains(_commonElements.jsNumNotIntClass) ||
               interceptedClasses.contains(_commonElements.jsIntClass))) {
         Set<ClassEntity> required;
         for (HInstruction user in node.usedBy) {
@@ -270,9 +270,9 @@
               required ??= {};
               required.add(_commonElements.jsIntClass);
             }
-            if (intercepted.contains(_commonElements.jsDoubleClass)) {
+            if (intercepted.contains(_commonElements.jsNumNotIntClass)) {
               required ??= {};
-              required.add(_commonElements.jsDoubleClass);
+              required.add(_commonElements.jsNumNotIntClass);
             }
           }
         }
diff --git a/pkg/compiler/test/impact/data/classes.dart b/pkg/compiler/test/impact/data/classes.dart
index 729755b..bbd8d76 100644
--- a/pkg/compiler/test/impact/data/classes.dart
+++ b/pkg/compiler/test/impact/data/classes.dart
@@ -268,8 +268,8 @@
   Enum.index=IntConstant(0)],
  type=[
   const:Enum,
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSString,
diff --git a/pkg/compiler/test/impact/data/constants/main.dart b/pkg/compiler/test/impact/data/constants/main.dart
index 0b1bf8d..a29bd63 100644
--- a/pkg/compiler/test/impact/data/constants/main.dart
+++ b/pkg/compiler/test/impact/data/constants/main.dart
@@ -70,13 +70,25 @@
   return local;
 }
 
-/*member: intLiteral:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: intLiteral:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 intLiteral() {
   const dynamic local = 42;
   return local;
 }
 
-/*member: doubleLiteral:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: doubleLiteral:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 doubleLiteral() {
   const dynamic local = 0.5;
   return local;
@@ -149,10 +161,22 @@
 /*member: boolLiteralRef:type=[inst:JSBool]*/
 boolLiteralRef() => boolLiteralField;
 
-/*member: intLiteralRef:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: intLiteralRef:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 intLiteralRef() => intLiteralField;
 
-/*member: doubleLiteralRef:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: doubleLiteralRef:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 doubleLiteralRef() => doubleLiteralField;
 
 /*member: stringLiteralRef:type=[inst:JSString]*/
@@ -207,10 +231,22 @@
 /*member: boolLiteralDeferred:type=[inst:JSBool]*/
 boolLiteralDeferred() => defer.boolLiteralField;
 
-/*member: intLiteralDeferred:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: intLiteralDeferred:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 intLiteralDeferred() => defer.intLiteralField;
 
-/*member: doubleLiteralDeferred:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: doubleLiteralDeferred:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 doubleLiteralDeferred() => defer.doubleLiteralField;
 
 /*member: stringLiteralDeferred:type=[inst:JSString]*/
diff --git a/pkg/compiler/test/impact/data/effectively_final.dart b/pkg/compiler/test/impact/data/effectively_final.dart
index 5fb31a4..cc54f75 100644
--- a/pkg/compiler/test/impact/data/effectively_final.dart
+++ b/pkg/compiler/test/impact/data/effectively_final.dart
@@ -25,9 +25,9 @@
   List.length=,
   int.+],
  type=[
-  inst:JSDouble,
   inst:JSInt,
   inst:JSNull,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -49,9 +49,9 @@
   length,
   length=],
  type=[
-  inst:JSDouble,
   inst:JSInt,
   inst:JSNull,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -113,8 +113,8 @@
  type=[
   inst:Closure,
   inst:JSBool,
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -176,8 +176,8 @@
  type=[
   inst:Closure,
   inst:JSBool,
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSString,
diff --git a/pkg/compiler/test/impact/data/expressions.dart b/pkg/compiler/test/impact/data/expressions.dart
index 5161a7a..6b4b041 100644
--- a/pkg/compiler/test/impact/data/expressions.dart
+++ b/pkg/compiler/test/impact/data/expressions.dart
@@ -74,8 +74,8 @@
 testNot() => !false;
 
 /*member: testUnaryMinus:type=[
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -88,25 +88,49 @@
 
 /*member: testPostInc:
  dynamic=[+],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]
 */
 testPostInc(o) => o++;
 
 /*member: testPostDec:
  dynamic=[-],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]
 */
 testPostDec(o) => o--;
 
 /*member: testPreInc:
  dynamic=[+],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]
 */
 testPreInc(o) => ++o;
 
 /*member: testPreDec:
  dynamic=[-],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]
 */
 testPreDec(o) => --o;
 
diff --git a/pkg/compiler/test/impact/data/future_or.dart b/pkg/compiler/test/impact/data/future_or.dart
index 1a13b89..4738bf6 100644
--- a/pkg/compiler/test/impact/data/future_or.dart
+++ b/pkg/compiler/test/impact/data/future_or.dart
@@ -14,8 +14,8 @@
   checkTypeBound(4),
   print(1)],
  type=[
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
diff --git a/pkg/compiler/test/impact/data/initializers.dart b/pkg/compiler/test/impact/data/initializers.dart
index 5c6b4b5..bb2066f 100644
--- a/pkg/compiler/test/impact/data/initializers.dart
+++ b/pkg/compiler/test/impact/data/initializers.dart
@@ -128,7 +128,13 @@
 
 /*member: testFieldInitializer1:
  static=[ClassFieldInitializer1.(1)],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]
 */
 testFieldInitializer1() => new ClassFieldInitializer1(42);
 
@@ -142,7 +148,13 @@
 
 /*member: testFieldInitializer2:
  static=[ClassFieldInitializer2.(1)],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]
 */
 testFieldInitializer2() => new ClassFieldInitializer2(42);
 
@@ -158,8 +170,16 @@
 }
 
 /*member: testFieldInitializer3:
- static=[ClassFieldInitializer3.a(0),ClassFieldInitializer3.b(1)],
- type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
+ static=[
+  ClassFieldInitializer3.a(0),
+  ClassFieldInitializer3.b(1)],
+ type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]
 */
 testFieldInitializer3() {
   new ClassFieldInitializer3.a();
@@ -344,8 +364,8 @@
   ClassGeneric.(1),
   checkTypeBound(4)],
  type=[
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
diff --git a/pkg/compiler/test/impact/data/invokes.dart b/pkg/compiler/test/impact/data/invokes.dart
index cb1acfc..6702f0c 100644
--- a/pkg/compiler/test/impact/data/invokes.dart
+++ b/pkg/compiler/test/impact/data/invokes.dart
@@ -98,8 +98,8 @@
   topLevelFunction3(1,b,c),
   topLevelFunction3(1,c)],
  type=[
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -276,9 +276,9 @@
   topLevelFunction3Typed(1,c)],
  type=[
   inst:JSBool,
-  inst:JSDouble,
   inst:JSInt,
   inst:JSNull,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSString,
@@ -845,8 +845,8 @@
   f8(1,b,c),
   f9(1,b,c)],
  type=[
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -870,8 +870,8 @@
 /*member: testDynamicSet:
  dynamic=[foo=],
  type=[
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -886,29 +886,25 @@
   var l;
 }
 
-/*member: testLocalWithInitializer:
- type=[
-  inst:JSDouble,
+/*member: testLocalWithInitializer:type=[
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
-  inst:JSUInt32]
-*/
+  inst:JSUInt32]*/
 testLocalWithInitializer() {
   // ignore: UNUSED_LOCAL_VARIABLE
   var l = 42;
 }
 
-/*member: testLocalWithInitializerTyped:
- type=[
-  inst:JSDouble,
+/*member: testLocalWithInitializerTyped:type=[
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
-  inst:JSUInt32]
-*/
+  inst:JSUInt32]*/
 testLocalWithInitializerTyped() {
   // ignore: UNUSED_LOCAL_VARIABLE
   int l = 42;
@@ -1058,8 +1054,9 @@
 
 /*member: testInvokeIndex:
  dynamic=[[]],
- type=[inst:JSDouble,
+ type=[
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
@@ -1069,9 +1066,10 @@
 
 /*member: testInvokeIndexSet:
  dynamic=[[]=],
- type=[inst:JSDouble,
+ type=[
   inst:JSInt,
   inst:JSNull,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
diff --git a/pkg/compiler/test/impact/data/literals.dart b/pkg/compiler/test/impact/data/literals.dart
index 4956865..05b7c0c 100644
--- a/pkg/compiler/test/impact/data/literals.dart
+++ b/pkg/compiler/test/impact/data/literals.dart
@@ -73,10 +73,22 @@
 /*member: testFalse:type=[inst:JSBool]*/
 testFalse() => false;
 
-/*member: testInt:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: testInt:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 testInt() => 42;
 
-/*member: testDouble:type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]*/
+/*member: testDouble:type=[
+  inst:JSInt,
+  inst:JSNumNotInt,
+  inst:JSNumber,
+  inst:JSPositiveInt,
+  inst:JSUInt31,
+  inst:JSUInt32]*/
 testDouble() => 37.5;
 
 /*member: testString:type=[inst:JSString]*/
diff --git a/pkg/compiler/test/impact/data/statements.dart b/pkg/compiler/test/impact/data/statements.dart
index d3505dc..0685c84 100644
--- a/pkg/compiler/test/impact/data/statements.dart
+++ b/pkg/compiler/test/impact/data/statements.dart
@@ -33,32 +33,28 @@
   testAssertWithMessage();
 }
 
-/*member: testIfThen:
- type=[
+/*member: testIfThen:type=[
   inst:JSBool,
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
-  inst:JSUInt32]
-*/
+  inst:JSUInt32]*/
 testIfThen() {
   // ignore: DEAD_CODE
   if (false) return 42;
   return 1;
 }
 
-/*member: testIfThenElse:
- type=[
+/*member: testIfThenElse:type=[
   inst:JSBool,
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSUInt31,
-  inst:JSUInt32]
-*/
+  inst:JSUInt32]*/
 testIfThenElse() {
   if (true)
     return 42;
@@ -260,8 +256,8 @@
   throwExpression(1),
   wrapException(1)],
  type=[
-  inst:JSDouble,
   inst:JSInt,
+  inst:JSNumNotInt,
   inst:JSNumber,
   inst:JSPositiveInt,
   inst:JSString,
diff --git a/pkg/compiler/test/inference/data/call_site.dart b/pkg/compiler/test/inference/data/call_site.dart
index ac2b579..90356a6 100644
--- a/pkg/compiler/test/inference/data/call_site.dart
+++ b/pkg/compiler/test/inference/data/call_site.dart
@@ -77,9 +77,9 @@
 
 /*member: A5.:[exact=A5]*/
 class A5 {
-  /*member: A5.x5:Union([exact=JSDouble], [exact=JSUInt31])*/
+  /*member: A5.x5:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
   x5(
-          /*Union([exact=JSDouble], [exact=JSUInt31])*/ p) =>
+          /*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ p) =>
       p;
 }
 
@@ -91,9 +91,9 @@
 
 /*member: A6.:[exact=A6]*/
 class A6 {
-  /*member: A6.x6:Union([exact=JSDouble], [exact=JSUInt31])*/
+  /*member: A6.x6:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
   x6(
-          /*Union([exact=JSDouble], [exact=JSUInt31])*/ p) =>
+          /*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ p) =>
       p;
 }
 
@@ -206,7 +206,7 @@
 class A14 {
   /*member: A14.x14:[exact=JSUInt31]*/
   x14(
-          /*Union([exact=JSDouble], [exact=JSUInt31])*/ p) =>
+          /*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ p) =>
       1;
 }
 
@@ -280,7 +280,7 @@
 class A18 {
   /*member: A18.x18:[exact=JSUInt31]*/
   x18(/*[exact=JSUInt31]*/ p1,
-          [/*[exact=JSBool]*/ p2 = 1, /*[exact=JSDouble]*/ p3 = "s"]) =>
+          [/*[exact=JSBool]*/ p2 = 1, /*[exact=JSNumNotInt]*/ p3 = "s"]) =>
       1;
 }
 
diff --git a/pkg/compiler/test/inference/data/closure2.dart b/pkg/compiler/test/inference/data/closure2.dart
index 0e6335d..793c24c 100644
--- a/pkg/compiler/test/inference/data/closure2.dart
+++ b/pkg/compiler/test/inference/data/closure2.dart
@@ -82,7 +82,7 @@
   return g();
 }
 
-/*member: returnNum1:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: returnNum1:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 returnNum1() {
   dynamic a = 42.5;
   try {
diff --git a/pkg/compiler/test/inference/data/closure_tracer.dart b/pkg/compiler/test/inference/data/closure_tracer.dart
index edccdb3..e689520 100644
--- a/pkg/compiler/test/inference/data/closure_tracer.dart
+++ b/pkg/compiler/test/inference/data/closure_tracer.dart
@@ -154,13 +154,13 @@
   return topLevel1;
 }
 
-/*member: topLevel2:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: topLevel2:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
 var topLevel2;
 
-/*member: bar:Union([exact=JSDouble], [exact=JSUInt31])*/
-bar(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) => topLevel2 = a;
+/*member: bar:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
+bar(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) => topLevel2 = a;
 
-/*member: testStaticClosure2:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: testStaticClosure2:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
 testStaticClosure2() {
   var a = bar;
   a(42);
@@ -178,14 +178,14 @@
   return topLevel3;
 }
 
-/*member: topLevel4:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: topLevel4:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
 var topLevel4;
 
-/*member: testStaticClosure4Helper:Union([exact=JSDouble], [exact=JSUInt31])*/
-testStaticClosure4Helper(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) =>
+/*member: testStaticClosure4Helper:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
+testStaticClosure4Helper(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) =>
     topLevel4 = a;
 
-/*member: testStaticClosure4:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: testStaticClosure4:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
 testStaticClosure4() {
   var a = testStaticClosure4Helper;
   // Test calling the static after tearing it off.
diff --git a/pkg/compiler/test/inference/data/const_closure2.dart b/pkg/compiler/test/inference/data/const_closure2.dart
index d647115..79d65d81 100644
--- a/pkg/compiler/test/inference/data/const_closure2.dart
+++ b/pkg/compiler/test/inference/data/const_closure2.dart
@@ -4,16 +4,16 @@
 
 // @dart = 2.7
 
-/*member: method:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: method:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 // Called via [foo] with integer then double.
-method(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) {
+method(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) {
   return a;
 }
 
 const foo = method;
 
 /*member: returnNum:[null|subclass=Object]*/
-returnNum(/*Union([exact=JSDouble], [exact=JSUInt31])*/ x) {
+returnNum(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ x) {
   return foo(x);
 }
 
diff --git a/pkg/compiler/test/inference/data/const_closure4.dart b/pkg/compiler/test/inference/data/const_closure4.dart
index d647115..79d65d81 100644
--- a/pkg/compiler/test/inference/data/const_closure4.dart
+++ b/pkg/compiler/test/inference/data/const_closure4.dart
@@ -4,16 +4,16 @@
 
 // @dart = 2.7
 
-/*member: method:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: method:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 // Called via [foo] with integer then double.
-method(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) {
+method(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) {
   return a;
 }
 
 const foo = method;
 
 /*member: returnNum:[null|subclass=Object]*/
-returnNum(/*Union([exact=JSDouble], [exact=JSUInt31])*/ x) {
+returnNum(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ x) {
   return foo(x);
 }
 
diff --git a/pkg/compiler/test/inference/data/const_closure5.dart b/pkg/compiler/test/inference/data/const_closure5.dart
index 76887e5..eb45e87 100644
--- a/pkg/compiler/test/inference/data/const_closure5.dart
+++ b/pkg/compiler/test/inference/data/const_closure5.dart
@@ -4,9 +4,9 @@
 
 // @dart = 2.7
 
-/*member: method:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: method:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 // Called only via [foo2] with a small integer.
-method(/*Union([exact=JSDouble], [exact=JSUInt31])*/ a) {
+method(/*Union([exact=JSNumNotInt], [exact=JSUInt31])*/ a) {
   return a;
 }
 
diff --git a/pkg/compiler/test/inference/data/dictionary_types.dart b/pkg/compiler/test/inference/data/dictionary_types.dart
index b2c5aa1..d87eb2c 100644
--- a/pkg/compiler/test/inference/data/dictionary_types.dart
+++ b/pkg/compiler/test/inference/data/dictionary_types.dart
@@ -21,7 +21,7 @@
   'list': []
 };
 
-/*member: dictionaryB1:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+/*member: dictionaryB1:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
 dynamic dictionaryB1 = {
   'string': "aString",
   'int': 42,
@@ -50,10 +50,10 @@
       . /*invoke: Map([subclass=JsLinkedHashMap], key: [null|subclass=Object], value: [null|subclass=Object])*/
       addAll(otherDict1);
   dictionaryB1
-      . /*invoke: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+      . /*invoke: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
       addAll({'stringTwo': "anotherString", 'intTwo': 84});
   int1 = dictionaryB1
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
       ['int'];
   anotherInt1 = otherDict1
       /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSString], [exact=JSUInt31]), map: {stringTwo: Value([exact=JSString], value: "anotherString"), intTwo: [exact=JSUInt31]})*/
@@ -62,11 +62,11 @@
       /*Map([subclass=JsLinkedHashMap], key: [null|subclass=Object], value: [null|subclass=Object])*/ [
       'int'];
   nullOrInt1 = dictionaryB1
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null), stringTwo: Value([null|exact=JSString], value: "anotherString"), intTwo: [null|exact=JSUInt31]})*/
       ['intTwo'];
 }
 
-/*member: dictionaryA2:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+/*member: dictionaryA2:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
 dynamic dictionaryA2 = {
   'string': "aString",
   'int': 42,
@@ -83,28 +83,28 @@
 /*member: aString2:[exact=JSString]*/
 dynamic aString2 = "";
 
-/*member: doubleOrNull2:[null|exact=JSDouble]*/
+/*member: doubleOrNull2:[null|exact=JSNumNotInt]*/
 dynamic doubleOrNull2 = 22.2;
 
 /*member: test2:[null]*/
 test2() {
   var union = dictionaryA2
-          /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+          /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
           ['foo']
       ? dictionaryA2
       : dictionaryB2;
   nullOrInt2 = union
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSDouble], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSNumNotInt], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
       ['intTwo'];
   aString2 = union
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSDouble], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSNumNotInt], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
       ['string'];
   doubleOrNull2 = union
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSDouble], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {int: [null|exact=JSUInt31], double: [null|exact=JSNumNotInt], string: Value([exact=JSString], value: "aString"), intTwo: [null|exact=JSUInt31], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
       ['double'];
 }
 
-/*member: dictionary3:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+/*member: dictionary3:Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
 dynamic dictionary3 = {
   'string': "aString",
   'int': 42,
@@ -120,23 +120,23 @@
 /*member: keyN3:Value([exact=JSString], value: "notFoundInMap")*/
 dynamic keyN3 = 'notFoundInMap';
 
-/*member: knownDouble3:[exact=JSDouble]*/
+/*member: knownDouble3:[exact=JSNumNotInt]*/
 dynamic knownDouble3 = 42.2;
 
 /*member: intOrNull3:[null|exact=JSUInt31]*/
 dynamic intOrNull3 = dictionary3
-    /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+    /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
     [keyI3];
 
 /*member: justNull3:[null]*/
 dynamic justNull3 = dictionary3
-    /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+    /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
     [keyN3];
 
 /*member: test3:[null]*/
 test3() {
   knownDouble3 = dictionary3
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSDouble], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt], [exact=JSString], [exact=JSUInt31]), map: {string: Value([exact=JSString], value: "aString"), int: [exact=JSUInt31], double: [exact=JSNumNotInt], list: Container([exact=JSExtendableArray], element: [empty], length: 0)})*/
       [keyD3];
   // ignore: unused_local_variable
   var x = [intOrNull3, justNull3];
diff --git a/pkg/compiler/test/inference/data/field_type.dart b/pkg/compiler/test/inference/data/field_type.dart
index e74c6e5..82f4994 100644
--- a/pkg/compiler/test/inference/data/field_type.dart
+++ b/pkg/compiler/test/inference/data/field_type.dart
@@ -640,7 +640,7 @@
   /*member: A24.f24d:[exact=JSUInt31]*/
   final f24d;
 
-  /*member: A24.f24e:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+  /*member: A24.f24e:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
   var f24e;
 
 /*member: A24.f24f:Value([null|exact=JSString], value: "foo")*/
@@ -667,7 +667,7 @@
   /*member: A24.+:Value([exact=JSString], value: "foo")*/
   operator +(/*[empty]*/ other) => 'foo';
 
-  /*member: A24.bar24:[exact=JSDouble]*/
+  /*member: A24.bar24:[exact=JSNumNotInt]*/
   bar24() => 42.5;
 }
 
diff --git a/pkg/compiler/test/inference/data/general.dart b/pkg/compiler/test/inference/data/general.dart
index 275cd19..67d2c33 100644
--- a/pkg/compiler/test/inference/data/general.dart
+++ b/pkg/compiler/test/inference/data/general.dart
@@ -4,7 +4,7 @@
 
 // @dart = 2.7
 
-/*member: returnNum1:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: returnNum1:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 returnNum1(/*Value([exact=JSBool], value: true)*/ a) {
   if (a)
     return 1;
@@ -12,7 +12,7 @@
     return 2.5;
 }
 
-/*member: returnNum2:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: returnNum2:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 returnNum2(/*Value([exact=JSBool], value: true)*/ a) {
   if (a)
     return 1.4;
@@ -28,7 +28,7 @@
     return 2;
 }
 
-/*member: returnDouble:[exact=JSDouble]*/
+/*member: returnDouble:[exact=JSNumNotInt]*/
 returnDouble(/*Value([exact=JSBool], value: true)*/ a) {
   if (a)
     return 1.5;
@@ -396,7 +396,7 @@
   return c;
 }
 
-/*member: testSwitch1:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
+/*member: testSwitch1:Union(null, [exact=JSNumNotInt], [exact=JSUInt31])*/
 testSwitch1() {
   var a = null;
   switch (topLevelGetter) {
@@ -572,7 +572,7 @@
   return a;
 }
 
-/*member: testDoWhile4:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: testDoWhile4:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 testDoWhile4() {
   dynamic a = 'foo';
   do {
diff --git a/pkg/compiler/test/inference/data/map_tracer_const.dart b/pkg/compiler/test/inference/data/map_tracer_const.dart
index 45f09c1..ee73c68 100644
--- a/pkg/compiler/test/inference/data/map_tracer_const.dart
+++ b/pkg/compiler/test/inference/data/map_tracer_const.dart
@@ -7,7 +7,7 @@
 /*member: closure:[exact=JSUInt31]*/
 int closure(
     int
-        /*spec.Union([exact=JSDouble], [exact=JSUInt31])*/
+        /*spec.Union([exact=JSNumNotInt], [exact=JSUInt31])*/
         /*prod.[exact=JSUInt31]*/
         x) {
   return x;
diff --git a/pkg/compiler/test/inference/data/map_tracer_keys.dart b/pkg/compiler/test/inference/data/map_tracer_keys.dart
index 3f183a6..beedfbf 100644
--- a/pkg/compiler/test/inference/data/map_tracer_keys.dart
+++ b/pkg/compiler/test/inference/data/map_tracer_keys.dart
@@ -14,7 +14,7 @@
   test6();
 }
 
-/*member: aDouble1:[null|exact=JSDouble]*/
+/*member: aDouble1:[null|exact=JSNumNotInt]*/
 dynamic aDouble1 = 42.5;
 
 /*member: aList1:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
@@ -29,23 +29,23 @@
 test1() {
   var theMap = {'a': 2.2, 'b': 3.3, 'c': 4.4};
   theMap
-      /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [null|exact=JSDouble]})*/
+      /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [null|exact=JSNumNotInt]})*/
       ['d'] = 5.5;
   /*iterator: [exact=LinkedHashMapKeyIterable]*/
   /*current: [exact=LinkedHashMapKeyIterator]*/
   /*moveNext: [exact=LinkedHashMapKeyIterator]*/
   for (var key in theMap.
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [null|exact=JSDouble]})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [null|exact=JSNumNotInt]})*/
       keys) {
     aDouble1 = theMap
-        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [null|exact=JSDouble]})*/
+        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [null|exact=JSNumNotInt]})*/
         [key];
   }
   // We have to reference it somewhere, so that it always gets resolved.
   consume1(aList1);
 }
 
-/*member: aDouble2:[null|exact=JSDouble]*/
+/*member: aDouble2:[null|exact=JSNumNotInt]*/
 dynamic aDouble2 = 42.5;
 
 /*member: aList2:Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)*/
@@ -60,23 +60,23 @@
 test2() {
   dynamic theMap = {'a': 2.2, 'b': 3.3, 'c': 4.4};
   theMap
-      /*update: Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble])*/
+      /*update: Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt])*/
       [aList2] = 5.5;
   /*iterator: [exact=LinkedHashMapKeyIterable]*/
   /*current: [exact=LinkedHashMapKeyIterator]*/
   /*moveNext: [exact=LinkedHashMapKeyIterator]*/
   for (var key in theMap.
-      /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble])*/
+      /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt])*/
       keys) {
     aDouble2 = theMap
-        /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble])*/
+        /*Map([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt])*/
         [key];
   }
   // We have to reference it somewhere, so that it always gets resolved.
   consume2(aList2);
 }
 
-/*member: aDouble3:Union(null, [exact=JSDouble], [exact=JSExtendableArray])*/
+/*member: aDouble3:Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt])*/
 dynamic aDouble3 = 42.5;
 
 /*member: aList3:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
@@ -91,23 +91,23 @@
 test3() {
   dynamic theMap = <dynamic, dynamic>{'a': 2.2, 'b': 3.3, 'c': 4.4};
   theMap
-      /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+      /*update: Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
       ['d'] = aList3;
   /*iterator: [exact=LinkedHashMapKeyIterable]*/
   /*current: [exact=LinkedHashMapKeyIterator]*/
   /*moveNext: [exact=LinkedHashMapKeyIterator]*/
   for (var key in theMap.
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
       keys) {
     aDouble3 = theMap
-        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([null|exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
         [key];
   }
   // We have to reference it somewhere, so that it always gets resolved.
   consume3(aList3);
 }
 
-/*member: aDouble4:[null|exact=JSDouble]*/
+/*member: aDouble4:[null|exact=JSNumNotInt]*/
 dynamic aDouble4 = 42.5;
 
 /*member: aList4:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
@@ -125,17 +125,17 @@
   /*current: [exact=LinkedHashMapKeyIterator]*/
   /*moveNext: [exact=LinkedHashMapKeyIterator]*/
   for (var key in theMap.
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [exact=JSDouble]})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [exact=JSNumNotInt]})*/
       keys) {
     aDouble4 = theMap
-        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSDouble], map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: [exact=JSDouble]})*/
+        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: [null|exact=JSNumNotInt], map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: [exact=JSNumNotInt]})*/
         [key];
   }
   // We have to reference it somewhere, so that it always gets resolved.
   consume4(aList4);
 }
 
-/*member: aDouble5:[null|exact=JSDouble]*/
+/*member: aDouble5:[null|exact=JSNumNotInt]*/
 dynamic aDouble5 = 42.5;
 
 /*member: aList5:Container([exact=JSExtendableArray], element: [null|subclass=Object], length: null)*/
@@ -153,17 +153,17 @@
   /*current: [exact=LinkedHashMapKeyIterator]*/
   /*moveNext: [exact=LinkedHashMapKeyIterator]*/
   for (var key in theMap.
-      /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSDouble])*/
+      /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSNumNotInt])*/
       keys) {
     aDouble5 = theMap
-        /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSDouble])*/
+        /*Map([subclass=JsLinkedHashMap], key: Union([exact=JSExtendableArray], [exact=JSString]), value: [null|exact=JSNumNotInt])*/
         [key];
   }
   // We have to reference it somewhere, so that it always gets resolved.
   consume5(aList5);
 }
 
-/*member: aDouble6:Union(null, [exact=JSDouble], [exact=JSExtendableArray])*/
+/*member: aDouble6:Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt])*/
 dynamic aDouble6 = 42.5;
 /*member: aList6:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)*/
 dynamic aList6 = [42];
@@ -180,10 +180,10 @@
   /*current: [exact=LinkedHashMapKeyIterator]*/
   /*moveNext: [exact=LinkedHashMapKeyIterator]*/
   for (var key in theMap.
-      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+      /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
       keys) {
     aDouble6 = theMap
-        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSDouble], [exact=JSExtendableArray]), map: {a: [exact=JSDouble], b: [exact=JSDouble], c: [exact=JSDouble], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
+        /*Dictionary([subclass=JsLinkedHashMap], key: [exact=JSString], value: Union(null, [exact=JSExtendableArray], [exact=JSNumNotInt]), map: {a: [exact=JSNumNotInt], b: [exact=JSNumNotInt], c: [exact=JSNumNotInt], d: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: 1)})*/
         [key];
   }
   // We have to reference it somewhere, so that it always gets resolved.
diff --git a/pkg/compiler/test/inference/data/no_such_method2.dart b/pkg/compiler/test/inference/data/no_such_method2.dart
index e9fe527..e322ede 100644
--- a/pkg/compiler/test/inference/data/no_such_method2.dart
+++ b/pkg/compiler/test/inference/data/no_such_method2.dart
@@ -31,7 +31,7 @@
   /*member: D.foo:Dictionary([subclass=JsLinkedHashMap], key: [empty], value: [null], map: {})*/
   foo() => {};
 
-  /*member: D.noSuchMethod:[exact=JSDouble]*/
+  /*member: D.noSuchMethod:[exact=JSNumNotInt]*/
   noSuchMethod(
           /*prod.[null|exact=JSInvocationMirror]*/
           /*spec.[null|subclass=Object]*/
@@ -63,7 +63,7 @@
 }
 
 // Can hit A.noSuchMethod, D.noSuchMethod and Object.noSuchMethod.
-/*member: test6:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: test6:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 test6() => a. /*invoke: Union(null, [exact=D], [subclass=B])*/ bar();
 
 // Can hit A.noSuchMethod.
@@ -86,14 +86,14 @@
 }
 
 // Can hit A.noSuchMethod and D.noSuchMethod.
-/*member: test10:Union([exact=JSDouble], [exact=JSUInt31])*/
+/*member: test10:Union([exact=JSNumNotInt], [exact=JSUInt31])*/
 test10() {
   dynamic e = (a ? new B() : new D());
   return e. /*invoke: Union([exact=B], [exact=D])*/ bar();
 }
 
 // Can hit D.noSuchMethod.
-/*member: test11:[exact=JSDouble]*/
+/*member: test11:[exact=JSNumNotInt]*/
 test11() {
   dynamic e = new D();
   return e. /*invoke: [exact=D]*/ bar();
diff --git a/pkg/compiler/test/inference/data/simple.dart b/pkg/compiler/test/inference/data/simple.dart
index 7709e28..47f688c 100644
--- a/pkg/compiler/test/inference/data/simple.dart
+++ b/pkg/compiler/test/inference/data/simple.dart
@@ -44,7 +44,7 @@
 /// Return a double literal.
 ////////////////////////////////////////////////////////////////////////////////
 
-/*member: half:[exact=JSDouble]*/
+/*member: half:[exact=JSNumNotInt]*/
 half() => 0.5;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -86,7 +86,7 @@
 /// Return a negative double literal.
 ////////////////////////////////////////////////////////////////////////////////
 
-/*member: minusHalf:[exact=JSDouble]*/
+/*member: minusHalf:[exact=JSNumNotInt]*/
 minusHalf() => -0.5;
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/pkg/compiler/test/inference/data/static.dart b/pkg/compiler/test/inference/data/static.dart
index d34d4fc..c9e4c24 100644
--- a/pkg/compiler/test/inference/data/static.dart
+++ b/pkg/compiler/test/inference/data/static.dart
@@ -56,18 +56,18 @@
 staticCallWithPositionalArguments1() => _returnFirst(0, 0.5);
 
 /*member: _returnFirst:[exact=JSUInt31]*/
-_returnFirst(/*[exact=JSUInt31]*/ a, /*[exact=JSDouble]*/ b) => a;
+_returnFirst(/*[exact=JSUInt31]*/ a, /*[exact=JSNumNotInt]*/ b) => a;
 
 ////////////////////////////////////////////////////////////////////////////////
 /// Call a static method that has two positional parameters, the second argument
 /// is returned.
 ////////////////////////////////////////////////////////////////////////////////
 
-/*member: staticCallWithPositionalArguments2:[exact=JSDouble]*/
+/*member: staticCallWithPositionalArguments2:[exact=JSNumNotInt]*/
 staticCallWithPositionalArguments2() => _returnSecond(0, 0.5);
 
-/*member: _returnSecond:[exact=JSDouble]*/
-_returnSecond(/*[exact=JSUInt31]*/ a, /*[exact=JSDouble]*/ b) => b;
+/*member: _returnSecond:[exact=JSNumNotInt]*/
+_returnSecond(/*[exact=JSUInt31]*/ a, /*[exact=JSNumNotInt]*/ b) => b;
 
 ////////////////////////////////////////////////////////////////////////////////
 /// A static method that has an optional parameter with no explicit default
@@ -132,11 +132,11 @@
 /// Only one call site with an argument of a different type.
 ////////////////////////////////////////////////////////////////////////////////
 
-/*member: staticCallWithOptionalArguments6:[exact=JSDouble]*/
+/*member: staticCallWithOptionalArguments6:[exact=JSNumNotInt]*/
 staticCallWithOptionalArguments6() => _returnDefaultZeroCalled(0.5);
 
-/*member: _returnDefaultZeroCalled:[exact=JSDouble]*/
-_returnDefaultZeroCalled([/*[exact=JSDouble]*/ a = 0]) => a;
+/*member: _returnDefaultZeroCalled:[exact=JSNumNotInt]*/
+_returnDefaultZeroCalled([/*[exact=JSNumNotInt]*/ a = 0]) => a;
 
 ////////////////////////////////////////////////////////////////////////////////
 /// A static method that has a named parameter with a default value of `0`.
@@ -154,25 +154,25 @@
 /// Only one call site with an argument of a different type.
 ////////////////////////////////////////////////////////////////////////////////
 
-/*member: staticCallWithNamedArguments2:[exact=JSDouble]*/
+/*member: staticCallWithNamedArguments2:[exact=JSNumNotInt]*/
 staticCallWithNamedArguments2() => _returnNamedDefaultZeroCalled(a: 0.5);
 
-/*member: _returnNamedDefaultZeroCalled:[exact=JSDouble]*/
-_returnNamedDefaultZeroCalled({/*[exact=JSDouble]*/ a: 0}) => a;
+/*member: _returnNamedDefaultZeroCalled:[exact=JSNumNotInt]*/
+_returnNamedDefaultZeroCalled({/*[exact=JSNumNotInt]*/ a: 0}) => a;
 
 ////////////////////////////////////////////////////////////////////////////////
 /// A static method that has a named parameter. Two call sites, one with an
 /// explicit argument and one with no arguments.
 ////////////////////////////////////////////////////////////////////////////////
 
-/*member: staticCallWithNamedArguments3a:[null|exact=JSDouble]*/
+/*member: staticCallWithNamedArguments3a:[null|exact=JSNumNotInt]*/
 staticCallWithNamedArguments3a() => _returnNamedNullCalledTwice();
 
-/*member: staticCallWithNamedArguments3b:[null|exact=JSDouble]*/
+/*member: staticCallWithNamedArguments3b:[null|exact=JSNumNotInt]*/
 staticCallWithNamedArguments3b() => _returnNamedNullCalledTwice(a: 0.5);
 
-/*member: _returnNamedNullCalledTwice:[null|exact=JSDouble]*/
-_returnNamedNullCalledTwice({/*[null|exact=JSDouble]*/ a}) => a;
+/*member: _returnNamedNullCalledTwice:[null|exact=JSNumNotInt]*/
+_returnNamedNullCalledTwice({/*[null|exact=JSNumNotInt]*/ a}) => a;
 
 ////////////////////////////////////////////////////////////////////////////////
 /// Call an uninitialized top level field.
diff --git a/pkg/compiler/test/inference/type_combination_test.dart b/pkg/compiler/test/inference/type_combination_test.dart
index b949eba..517ac76 100644
--- a/pkg/compiler/test/inference/type_combination_test.dart
+++ b/pkg/compiler/test/inference/type_combination_test.dart
@@ -20,11 +20,11 @@
 TypeMask jsBoolean;
 TypeMask jsNumber;
 TypeMask jsInteger;
-TypeMask jsDouble;
+TypeMask jsNumNotInt;
 TypeMask jsBooleanOrNull;
 TypeMask jsNumberOrNull;
 TypeMask jsIntegerOrNull;
-TypeMask jsDoubleOrNull;
+TypeMask jsNumNotIntOrNull;
 TypeMask emptyType;
 TypeMask dynamicType;
 
@@ -121,7 +121,7 @@
   rule(emptyType, jsBoolean, jsBoolean);
   rule(emptyType, jsNumber, jsNumber);
   rule(emptyType, jsInteger, jsInteger);
-  rule(emptyType, jsDouble, jsDouble);
+  rule(emptyType, jsNumNotInt, jsNumNotInt);
   rule(emptyType, jsIndexable, jsIndexable);
   rule(emptyType, jsString, jsString);
   rule(emptyType, jsReadableArray, jsReadableArray);
@@ -135,7 +135,7 @@
   rule(emptyType, jsBooleanOrNull, jsBooleanOrNull);
   rule(emptyType, jsNumberOrNull, jsNumberOrNull);
   rule(emptyType, jsIntegerOrNull, jsIntegerOrNull);
-  rule(emptyType, jsDoubleOrNull, jsDoubleOrNull);
+  rule(emptyType, jsNumNotIntOrNull, jsNumNotIntOrNull);
   rule(emptyType, jsStringOrNull, jsStringOrNull);
   rule(emptyType, nullType, nullType);
   rule(emptyType, jsFixedArray, jsFixedArray);
@@ -144,7 +144,7 @@
   rule(dynamicType, jsBoolean, dynamicType);
   rule(dynamicType, jsNumber, dynamicType);
   rule(dynamicType, jsInteger, dynamicType);
-  rule(dynamicType, jsDouble, dynamicType);
+  rule(dynamicType, jsNumNotInt, dynamicType);
   rule(dynamicType, jsIndexable, dynamicType);
   rule(dynamicType, jsString, dynamicType);
   rule(dynamicType, jsReadableArray, dynamicType);
@@ -158,7 +158,7 @@
   rule(dynamicType, jsBooleanOrNull, dynamicType);
   rule(dynamicType, jsNumberOrNull, dynamicType);
   rule(dynamicType, jsIntegerOrNull, dynamicType);
-  rule(dynamicType, jsDoubleOrNull, dynamicType);
+  rule(dynamicType, jsNumNotIntOrNull, dynamicType);
   rule(dynamicType, jsStringOrNull, dynamicType);
   rule(dynamicType, nullType, dynamicType);
   rule(dynamicType, jsFixedArray, dynamicType);
@@ -166,7 +166,7 @@
   rule(jsBoolean, jsBoolean, jsBoolean);
   rule(jsBoolean, jsNumber, jsInterceptor);
   rule(jsBoolean, jsInteger, jsInterceptor);
-  rule(jsBoolean, jsDouble, jsInterceptor);
+  rule(jsBoolean, jsNumNotInt, jsInterceptor);
   rule(jsBoolean, jsIndexable, objectType);
   rule(jsBoolean, jsString, jsInterceptor);
   rule(jsBoolean, jsReadableArray, jsInterceptor);
@@ -180,14 +180,14 @@
   rule(jsBoolean, jsBooleanOrNull, jsBooleanOrNull);
   rule(jsBoolean, jsNumberOrNull, jsInterceptorOrNull);
   rule(jsBoolean, jsIntegerOrNull, jsInterceptorOrNull);
-  rule(jsBoolean, jsDoubleOrNull, jsInterceptorOrNull);
+  rule(jsBoolean, jsNumNotIntOrNull, jsInterceptorOrNull);
   rule(jsBoolean, jsStringOrNull, jsInterceptorOrNull);
   rule(jsBoolean, nullType, jsBooleanOrNull);
   rule(jsBoolean, jsFixedArray, jsInterceptor);
 
   rule(jsNumber, jsNumber, jsNumber);
   rule(jsNumber, jsInteger, jsNumber);
-  rule(jsNumber, jsDouble, jsNumber);
+  rule(jsNumber, jsNumNotInt, jsNumber);
   rule(jsNumber, jsIndexable, objectType);
   rule(jsNumber, jsString, jsInterceptorOrComparable);
   rule(jsNumber, jsReadableArray, jsInterceptor);
@@ -201,13 +201,13 @@
   rule(jsNumber, jsBooleanOrNull, jsInterceptorOrNull);
   rule(jsNumber, jsNumberOrNull, jsNumberOrNull);
   rule(jsNumber, jsIntegerOrNull, jsNumberOrNull);
-  rule(jsNumber, jsDoubleOrNull, jsNumberOrNull);
+  rule(jsNumber, jsNumNotIntOrNull, jsNumberOrNull);
   rule(jsNumber, jsStringOrNull, jsInterceptorOrComparableOrNull);
   rule(jsNumber, nullType, jsNumberOrNull);
   rule(jsNumber, jsFixedArray, jsInterceptor);
 
   rule(jsInteger, jsInteger, jsInteger);
-  rule(jsInteger, jsDouble, jsNumber);
+  rule(jsInteger, jsNumNotInt, jsNumber);
   rule(jsInteger, jsIndexable, objectType);
   rule(jsInteger, jsString, jsInterceptorOrComparable);
   rule(jsInteger, jsReadableArray, jsInterceptor);
@@ -221,29 +221,29 @@
   rule(jsInteger, jsBooleanOrNull, jsInterceptorOrNull);
   rule(jsInteger, jsNumberOrNull, jsNumberOrNull);
   rule(jsInteger, jsIntegerOrNull, jsIntegerOrNull);
-  rule(jsInteger, jsDoubleOrNull, jsNumberOrNull);
+  rule(jsInteger, jsNumNotIntOrNull, jsNumberOrNull);
   rule(jsInteger, jsStringOrNull, jsInterceptorOrComparableOrNull);
   rule(jsInteger, nullType, jsIntegerOrNull);
   rule(jsInteger, jsFixedArray, jsInterceptor);
 
-  rule(jsDouble, jsDouble, jsDouble);
-  rule(jsDouble, jsIndexable, objectType);
-  rule(jsDouble, jsString, jsInterceptorOrComparable);
-  rule(jsDouble, jsReadableArray, jsInterceptor);
-  rule(jsDouble, jsMutableArray, jsInterceptor);
-  rule(jsDouble, jsExtendableArray, jsInterceptor);
-  rule(jsDouble, jsUnmodifiableArray, jsInterceptor);
-  rule(jsDouble, nonPrimitive1, objectType);
-  rule(jsDouble, nonPrimitive2, objectType);
-  rule(jsDouble, potentialArray, dynamicType);
-  rule(jsDouble, potentialString, dynamicType);
-  rule(jsDouble, jsBooleanOrNull, jsInterceptorOrNull);
-  rule(jsDouble, jsNumberOrNull, jsNumberOrNull);
-  rule(jsDouble, jsIntegerOrNull, jsNumberOrNull);
-  rule(jsDouble, jsDoubleOrNull, jsDoubleOrNull);
-  rule(jsDouble, jsStringOrNull, jsInterceptorOrComparableOrNull);
-  rule(jsDouble, nullType, jsDoubleOrNull);
-  rule(jsDouble, jsFixedArray, jsInterceptor);
+  rule(jsNumNotInt, jsNumNotInt, jsNumNotInt);
+  rule(jsNumNotInt, jsIndexable, objectType);
+  rule(jsNumNotInt, jsString, jsInterceptorOrComparable);
+  rule(jsNumNotInt, jsReadableArray, jsInterceptor);
+  rule(jsNumNotInt, jsMutableArray, jsInterceptor);
+  rule(jsNumNotInt, jsExtendableArray, jsInterceptor);
+  rule(jsNumNotInt, jsUnmodifiableArray, jsInterceptor);
+  rule(jsNumNotInt, nonPrimitive1, objectType);
+  rule(jsNumNotInt, nonPrimitive2, objectType);
+  rule(jsNumNotInt, potentialArray, dynamicType);
+  rule(jsNumNotInt, potentialString, dynamicType);
+  rule(jsNumNotInt, jsBooleanOrNull, jsInterceptorOrNull);
+  rule(jsNumNotInt, jsNumberOrNull, jsNumberOrNull);
+  rule(jsNumNotInt, jsIntegerOrNull, jsNumberOrNull);
+  rule(jsNumNotInt, jsNumNotIntOrNull, jsNumNotIntOrNull);
+  rule(jsNumNotInt, jsStringOrNull, jsInterceptorOrComparableOrNull);
+  rule(jsNumNotInt, nullType, jsNumNotIntOrNull);
+  rule(jsNumNotInt, jsFixedArray, jsInterceptor);
 
   rule(jsIndexable, jsIndexable, jsIndexable);
   rule(jsIndexable, jsString, jsIndexable);
@@ -258,7 +258,7 @@
   rule(jsIndexable, jsBooleanOrNull, dynamicType);
   rule(jsIndexable, jsNumberOrNull, dynamicType);
   rule(jsIndexable, jsIntegerOrNull, dynamicType);
-  rule(jsIndexable, jsDoubleOrNull, dynamicType);
+  rule(jsIndexable, jsNumNotIntOrNull, dynamicType);
   rule(jsIndexable, jsStringOrNull, jsIndexableOrNull);
   rule(jsIndexable, nullType, jsIndexableOrNull);
   rule(jsIndexable, jsFixedArray, jsIndexable);
@@ -275,7 +275,7 @@
   rule(jsString, jsBooleanOrNull, jsInterceptorOrNull);
   rule(jsString, jsNumberOrNull, jsInterceptorOrComparableOrNull);
   rule(jsString, jsIntegerOrNull, jsInterceptorOrComparableOrNull);
-  rule(jsString, jsDoubleOrNull, jsInterceptorOrComparableOrNull);
+  rule(jsString, jsNumNotIntOrNull, jsInterceptorOrComparableOrNull);
   rule(jsString, jsStringOrNull, jsStringOrNull);
   rule(jsString, nullType, jsStringOrNull);
   rule(jsString, jsFixedArray, jsIndexable);
@@ -291,7 +291,7 @@
   rule(jsReadableArray, jsBooleanOrNull, jsInterceptorOrNull);
   rule(jsReadableArray, jsNumberOrNull, jsInterceptorOrNull);
   rule(jsReadableArray, jsIntegerOrNull, jsInterceptorOrNull);
-  rule(jsReadableArray, jsDoubleOrNull, jsInterceptorOrNull);
+  rule(jsReadableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
   rule(jsReadableArray, jsStringOrNull, jsIndexableOrNull);
   rule(jsReadableArray, nullType, jsArrayOrNull);
   rule(jsReadableArray, jsFixedArray, jsReadableArray);
@@ -306,7 +306,7 @@
   rule(jsMutableArray, jsBooleanOrNull, jsInterceptorOrNull);
   rule(jsMutableArray, jsNumberOrNull, jsInterceptorOrNull);
   rule(jsMutableArray, jsIntegerOrNull, jsInterceptorOrNull);
-  rule(jsMutableArray, jsDoubleOrNull, jsInterceptorOrNull);
+  rule(jsMutableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
   rule(jsMutableArray, jsStringOrNull, jsIndexableOrNull);
   rule(jsMutableArray, nullType, jsMutableArrayOrNull);
   rule(jsMutableArray, jsFixedArray, jsMutableArray);
@@ -320,7 +320,7 @@
   rule(jsExtendableArray, jsBooleanOrNull, jsInterceptorOrNull);
   rule(jsExtendableArray, jsNumberOrNull, jsInterceptorOrNull);
   rule(jsExtendableArray, jsIntegerOrNull, jsInterceptorOrNull);
-  rule(jsExtendableArray, jsDoubleOrNull, jsInterceptorOrNull);
+  rule(jsExtendableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
   rule(jsExtendableArray, jsStringOrNull, jsIndexableOrNull);
   rule(jsExtendableArray, nullType, jsExtendableArrayOrNull);
   rule(jsExtendableArray, jsFixedArray, jsMutableArray);
@@ -333,7 +333,7 @@
   rule(jsUnmodifiableArray, jsBooleanOrNull, jsInterceptorOrNull);
   rule(jsUnmodifiableArray, jsNumberOrNull, jsInterceptorOrNull);
   rule(jsUnmodifiableArray, jsIntegerOrNull, jsInterceptorOrNull);
-  rule(jsUnmodifiableArray, jsDoubleOrNull, jsInterceptorOrNull);
+  rule(jsUnmodifiableArray, jsNumNotIntOrNull, jsInterceptorOrNull);
   rule(jsUnmodifiableArray, jsStringOrNull, jsIndexableOrNull);
   rule(jsUnmodifiableArray, nullType, jsUnmodifiableArrayOrNull);
   rule(jsUnmodifiableArray, jsFixedArray, jsReadableArray);
@@ -345,7 +345,7 @@
   rule(nonPrimitive1, jsBooleanOrNull, dynamicType);
   rule(nonPrimitive1, jsNumberOrNull, dynamicType);
   rule(nonPrimitive1, jsIntegerOrNull, dynamicType);
-  rule(nonPrimitive1, jsDoubleOrNull, dynamicType);
+  rule(nonPrimitive1, jsNumNotIntOrNull, dynamicType);
   rule(nonPrimitive1, jsStringOrNull, dynamicType);
   rule(nonPrimitive1, jsFixedArray, objectType);
 
@@ -355,7 +355,7 @@
   rule(nonPrimitive2, jsBooleanOrNull, dynamicType);
   rule(nonPrimitive2, jsNumberOrNull, dynamicType);
   rule(nonPrimitive2, jsIntegerOrNull, dynamicType);
-  rule(nonPrimitive2, jsDoubleOrNull, dynamicType);
+  rule(nonPrimitive2, jsNumNotIntOrNull, dynamicType);
   rule(nonPrimitive2, jsStringOrNull, dynamicType);
   rule(nonPrimitive2, jsFixedArray, objectType);
 
@@ -364,7 +364,7 @@
   rule(potentialArray, jsBooleanOrNull, dynamicType);
   rule(potentialArray, jsNumberOrNull, dynamicType);
   rule(potentialArray, jsIntegerOrNull, dynamicType);
-  rule(potentialArray, jsDoubleOrNull, dynamicType);
+  rule(potentialArray, jsNumNotIntOrNull, dynamicType);
   rule(potentialArray, jsStringOrNull, dynamicType);
   rule(potentialArray, nullType, potentialArray);
   rule(potentialArray, jsFixedArray, potentialArray);
@@ -373,7 +373,7 @@
   rule(potentialString, jsBooleanOrNull, dynamicType);
   rule(potentialString, jsNumberOrNull, dynamicType);
   rule(potentialString, jsIntegerOrNull, dynamicType);
-  rule(potentialString, jsDoubleOrNull, dynamicType);
+  rule(potentialString, jsNumNotIntOrNull, dynamicType);
   rule(potentialString, jsStringOrNull, potentialString);
   rule(potentialString, nullType, potentialString);
   rule(potentialString, jsFixedArray, dynamicType);
@@ -381,28 +381,28 @@
   rule(jsBooleanOrNull, jsBooleanOrNull, jsBooleanOrNull);
   rule(jsBooleanOrNull, jsNumberOrNull, jsInterceptorOrNull);
   rule(jsBooleanOrNull, jsIntegerOrNull, jsInterceptorOrNull);
-  rule(jsBooleanOrNull, jsDoubleOrNull, jsInterceptorOrNull);
+  rule(jsBooleanOrNull, jsNumNotIntOrNull, jsInterceptorOrNull);
   rule(jsBooleanOrNull, jsStringOrNull, jsInterceptorOrNull);
   rule(jsBooleanOrNull, nullType, jsBooleanOrNull);
   rule(jsBooleanOrNull, jsFixedArray, jsInterceptorOrNull);
 
   rule(jsNumberOrNull, jsNumberOrNull, jsNumberOrNull);
   rule(jsNumberOrNull, jsIntegerOrNull, jsNumberOrNull);
-  rule(jsNumberOrNull, jsDoubleOrNull, jsNumberOrNull);
+  rule(jsNumberOrNull, jsNumNotIntOrNull, jsNumberOrNull);
   rule(jsNumberOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
   rule(jsNumberOrNull, nullType, jsNumberOrNull);
   rule(jsNumberOrNull, jsFixedArray, jsInterceptorOrNull);
 
   rule(jsIntegerOrNull, jsIntegerOrNull, jsIntegerOrNull);
-  rule(jsIntegerOrNull, jsDoubleOrNull, jsNumberOrNull);
+  rule(jsIntegerOrNull, jsNumNotIntOrNull, jsNumberOrNull);
   rule(jsIntegerOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
   rule(jsIntegerOrNull, nullType, jsIntegerOrNull);
   rule(jsIntegerOrNull, jsFixedArray, jsInterceptorOrNull);
 
-  rule(jsDoubleOrNull, jsDoubleOrNull, jsDoubleOrNull);
-  rule(jsDoubleOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
-  rule(jsDoubleOrNull, nullType, jsDoubleOrNull);
-  rule(jsDoubleOrNull, jsFixedArray, jsInterceptorOrNull);
+  rule(jsNumNotIntOrNull, jsNumNotIntOrNull, jsNumNotIntOrNull);
+  rule(jsNumNotIntOrNull, jsStringOrNull, jsInterceptorOrComparableOrNull);
+  rule(jsNumNotIntOrNull, nullType, jsNumNotIntOrNull);
+  rule(jsNumNotIntOrNull, jsFixedArray, jsInterceptorOrNull);
 
   rule(jsStringOrNull, jsStringOrNull, jsStringOrNull);
   rule(jsStringOrNull, nullType, jsStringOrNull);
@@ -431,7 +431,7 @@
   rule(emptyType, jsBoolean, emptyType);
   rule(emptyType, jsNumber, emptyType);
   rule(emptyType, jsInteger, emptyType);
-  rule(emptyType, jsDouble, emptyType);
+  rule(emptyType, jsNumNotInt, emptyType);
   rule(emptyType, jsIndexable, emptyType);
   rule(emptyType, jsString, emptyType);
   rule(emptyType, jsReadableArray, emptyType);
@@ -445,7 +445,7 @@
   rule(emptyType, jsBooleanOrNull, emptyType);
   rule(emptyType, jsNumberOrNull, emptyType);
   rule(emptyType, jsIntegerOrNull, emptyType);
-  rule(emptyType, jsDoubleOrNull, emptyType);
+  rule(emptyType, jsNumNotIntOrNull, emptyType);
   rule(emptyType, jsStringOrNull, emptyType);
   rule(emptyType, nullType, emptyType);
   rule(emptyType, jsFixedArray, emptyType);
@@ -454,7 +454,7 @@
   rule(dynamicType, jsBoolean, jsBoolean);
   rule(dynamicType, jsNumber, jsNumber);
   rule(dynamicType, jsInteger, jsInteger);
-  rule(dynamicType, jsDouble, jsDouble);
+  rule(dynamicType, jsNumNotInt, jsNumNotInt);
   rule(dynamicType, jsIndexable, jsIndexable);
   rule(dynamicType, jsString, jsString);
   rule(dynamicType, jsReadableArray, jsReadableArray);
@@ -468,7 +468,7 @@
   rule(dynamicType, jsBooleanOrNull, jsBooleanOrNull);
   rule(dynamicType, jsNumberOrNull, jsNumberOrNull);
   rule(dynamicType, jsIntegerOrNull, jsIntegerOrNull);
-  rule(dynamicType, jsDoubleOrNull, jsDoubleOrNull);
+  rule(dynamicType, jsNumNotIntOrNull, jsNumNotIntOrNull);
   rule(dynamicType, jsStringOrNull, jsStringOrNull);
   rule(dynamicType, nullType, nullType);
   rule(dynamicType, jsFixedArray, jsFixedArray);
@@ -476,7 +476,7 @@
   rule(jsBoolean, jsBoolean, jsBoolean);
   rule(jsBoolean, jsNumber, emptyType);
   rule(jsBoolean, jsInteger, emptyType);
-  rule(jsBoolean, jsDouble, emptyType);
+  rule(jsBoolean, jsNumNotInt, emptyType);
   rule(jsBoolean, jsIndexable, emptyType);
   rule(jsBoolean, jsString, emptyType);
   rule(jsBoolean, jsReadableArray, emptyType);
@@ -490,14 +490,14 @@
   rule(jsBoolean, jsBooleanOrNull, jsBoolean);
   rule(jsBoolean, jsNumberOrNull, emptyType);
   rule(jsBoolean, jsIntegerOrNull, emptyType);
-  rule(jsBoolean, jsDoubleOrNull, emptyType);
+  rule(jsBoolean, jsNumNotIntOrNull, emptyType);
   rule(jsBoolean, jsStringOrNull, emptyType);
   rule(jsBoolean, nullType, emptyType);
   rule(jsBoolean, jsFixedArray, emptyType);
 
   rule(jsNumber, jsNumber, jsNumber);
   rule(jsNumber, jsInteger, jsInteger);
-  rule(jsNumber, jsDouble, jsDouble);
+  rule(jsNumber, jsNumNotInt, jsNumNotInt);
   rule(jsNumber, jsIndexable, emptyType);
   rule(jsNumber, jsString, emptyType);
   rule(jsNumber, jsReadableArray, emptyType);
@@ -511,13 +511,13 @@
   rule(jsNumber, jsBooleanOrNull, emptyType);
   rule(jsNumber, jsNumberOrNull, jsNumber);
   rule(jsNumber, jsIntegerOrNull, jsInteger);
-  rule(jsNumber, jsDoubleOrNull, jsDouble);
+  rule(jsNumber, jsNumNotIntOrNull, jsNumNotInt);
   rule(jsNumber, jsStringOrNull, emptyType);
   rule(jsNumber, nullType, emptyType);
   rule(jsNumber, jsFixedArray, emptyType);
 
   rule(jsInteger, jsInteger, jsInteger);
-  rule(jsInteger, jsDouble, emptyType);
+  rule(jsInteger, jsNumNotInt, emptyType);
   rule(jsInteger, jsIndexable, emptyType);
   rule(jsInteger, jsString, emptyType);
   rule(jsInteger, jsReadableArray, emptyType);
@@ -531,29 +531,29 @@
   rule(jsInteger, jsBooleanOrNull, emptyType);
   rule(jsInteger, jsNumberOrNull, jsInteger);
   rule(jsInteger, jsIntegerOrNull, jsInteger);
-  rule(jsInteger, jsDoubleOrNull, emptyType);
+  rule(jsInteger, jsNumNotIntOrNull, emptyType);
   rule(jsInteger, jsStringOrNull, emptyType);
   rule(jsInteger, nullType, emptyType);
   rule(jsInteger, jsFixedArray, emptyType);
 
-  rule(jsDouble, jsDouble, jsDouble);
-  rule(jsDouble, jsIndexable, emptyType);
-  rule(jsDouble, jsString, emptyType);
-  rule(jsDouble, jsReadableArray, emptyType);
-  rule(jsDouble, jsMutableArray, emptyType);
-  rule(jsDouble, jsExtendableArray, emptyType);
-  rule(jsDouble, jsUnmodifiableArray, emptyType);
-  rule(jsDouble, nonPrimitive1, emptyType);
-  rule(jsDouble, nonPrimitive2, emptyType);
-  rule(jsDouble, potentialArray, emptyType);
-  rule(jsDouble, potentialString, emptyType);
-  rule(jsDouble, jsBooleanOrNull, emptyType);
-  rule(jsDouble, jsNumberOrNull, jsDouble);
-  rule(jsDouble, jsIntegerOrNull, emptyType);
-  rule(jsDouble, jsDoubleOrNull, jsDouble);
-  rule(jsDouble, jsStringOrNull, emptyType);
-  rule(jsDouble, nullType, emptyType);
-  rule(jsDouble, jsFixedArray, emptyType);
+  rule(jsNumNotInt, jsNumNotInt, jsNumNotInt);
+  rule(jsNumNotInt, jsIndexable, emptyType);
+  rule(jsNumNotInt, jsString, emptyType);
+  rule(jsNumNotInt, jsReadableArray, emptyType);
+  rule(jsNumNotInt, jsMutableArray, emptyType);
+  rule(jsNumNotInt, jsExtendableArray, emptyType);
+  rule(jsNumNotInt, jsUnmodifiableArray, emptyType);
+  rule(jsNumNotInt, nonPrimitive1, emptyType);
+  rule(jsNumNotInt, nonPrimitive2, emptyType);
+  rule(jsNumNotInt, potentialArray, emptyType);
+  rule(jsNumNotInt, potentialString, emptyType);
+  rule(jsNumNotInt, jsBooleanOrNull, emptyType);
+  rule(jsNumNotInt, jsNumberOrNull, jsNumNotInt);
+  rule(jsNumNotInt, jsIntegerOrNull, emptyType);
+  rule(jsNumNotInt, jsNumNotIntOrNull, jsNumNotInt);
+  rule(jsNumNotInt, jsStringOrNull, emptyType);
+  rule(jsNumNotInt, nullType, emptyType);
+  rule(jsNumNotInt, jsFixedArray, emptyType);
 
   rule(jsIndexable, jsIndexable, jsIndexable);
   rule(jsIndexable, jsString, jsString);
@@ -576,7 +576,7 @@
   rule(jsIndexable, jsBooleanOrNull, emptyType);
   rule(jsIndexable, jsNumberOrNull, emptyType);
   rule(jsIndexable, jsIntegerOrNull, emptyType);
-  rule(jsIndexable, jsDoubleOrNull, emptyType);
+  rule(jsIndexable, jsNumNotIntOrNull, emptyType);
   rule(jsIndexable, jsStringOrNull, jsString);
   rule(jsIndexable, nullType, emptyType);
   rule(jsIndexable, jsFixedArray, jsFixedArray);
@@ -593,7 +593,7 @@
   rule(jsString, jsBooleanOrNull, emptyType);
   rule(jsString, jsNumberOrNull, emptyType);
   rule(jsString, jsIntegerOrNull, emptyType);
-  rule(jsString, jsDoubleOrNull, emptyType);
+  rule(jsString, jsNumNotIntOrNull, emptyType);
   rule(jsString, jsStringOrNull, jsString);
   rule(jsString, nullType, emptyType);
   rule(jsString, jsFixedArray, emptyType);
@@ -609,7 +609,7 @@
   rule(jsReadableArray, jsBooleanOrNull, emptyType);
   rule(jsReadableArray, jsNumberOrNull, emptyType);
   rule(jsReadableArray, jsIntegerOrNull, emptyType);
-  rule(jsReadableArray, jsDoubleOrNull, emptyType);
+  rule(jsReadableArray, jsNumNotIntOrNull, emptyType);
   rule(jsReadableArray, jsStringOrNull, emptyType);
   rule(jsReadableArray, nullType, emptyType);
   rule(jsReadableArray, jsFixedArray, jsFixedArray);
@@ -624,7 +624,7 @@
   rule(jsMutableArray, jsBooleanOrNull, emptyType);
   rule(jsMutableArray, jsNumberOrNull, emptyType);
   rule(jsMutableArray, jsIntegerOrNull, emptyType);
-  rule(jsMutableArray, jsDoubleOrNull, emptyType);
+  rule(jsMutableArray, jsNumNotIntOrNull, emptyType);
   rule(jsMutableArray, jsStringOrNull, emptyType);
   rule(jsMutableArray, nullType, emptyType);
   rule(jsMutableArray, jsFixedArray, jsFixedArray);
@@ -638,7 +638,7 @@
   rule(jsExtendableArray, jsBooleanOrNull, emptyType);
   rule(jsExtendableArray, jsNumberOrNull, emptyType);
   rule(jsExtendableArray, jsIntegerOrNull, emptyType);
-  rule(jsExtendableArray, jsDoubleOrNull, emptyType);
+  rule(jsExtendableArray, jsNumNotIntOrNull, emptyType);
   rule(jsExtendableArray, jsStringOrNull, emptyType);
   rule(jsExtendableArray, nullType, emptyType);
   rule(jsExtendableArray, jsFixedArray, emptyType);
@@ -651,7 +651,7 @@
   rule(jsUnmodifiableArray, jsBooleanOrNull, emptyType);
   rule(jsUnmodifiableArray, jsNumberOrNull, emptyType);
   rule(jsUnmodifiableArray, jsIntegerOrNull, emptyType);
-  rule(jsUnmodifiableArray, jsDoubleOrNull, emptyType);
+  rule(jsUnmodifiableArray, jsNumNotIntOrNull, emptyType);
   rule(jsUnmodifiableArray, jsStringOrNull, emptyType);
   rule(jsUnmodifiableArray, nullType, emptyType);
   rule(jsUnmodifiableArray, jsFixedArray, emptyType);
@@ -663,7 +663,7 @@
   rule(nonPrimitive1, jsBooleanOrNull, emptyType);
   rule(nonPrimitive1, jsNumberOrNull, emptyType);
   rule(nonPrimitive1, jsIntegerOrNull, emptyType);
-  rule(nonPrimitive1, jsDoubleOrNull, emptyType);
+  rule(nonPrimitive1, jsNumNotIntOrNull, emptyType);
   rule(nonPrimitive1, jsStringOrNull, emptyType);
   rule(nonPrimitive1, nullType, emptyType);
   rule(nonPrimitive1, jsFixedArray, emptyType);
@@ -674,7 +674,7 @@
   rule(nonPrimitive2, jsBooleanOrNull, emptyType);
   rule(nonPrimitive2, jsNumberOrNull, emptyType);
   rule(nonPrimitive2, jsIntegerOrNull, emptyType);
-  rule(nonPrimitive2, jsDoubleOrNull, emptyType);
+  rule(nonPrimitive2, jsNumNotIntOrNull, emptyType);
   rule(nonPrimitive2, jsStringOrNull, emptyType);
   rule(nonPrimitive2, nullType, emptyType);
   rule(nonPrimitive2, jsFixedArray, emptyType);
@@ -684,7 +684,7 @@
   rule(potentialArray, jsBooleanOrNull, nullType);
   rule(potentialArray, jsNumberOrNull, nullType);
   rule(potentialArray, jsIntegerOrNull, nullType);
-  rule(potentialArray, jsDoubleOrNull, nullType);
+  rule(potentialArray, jsNumNotIntOrNull, nullType);
   rule(potentialArray, jsStringOrNull, nullType);
   rule(potentialArray, nullType, nullType);
   rule(potentialArray, jsFixedArray, jsFixedArray);
@@ -693,7 +693,7 @@
   rule(potentialString, jsBooleanOrNull, nullType);
   rule(potentialString, jsNumberOrNull, nullType);
   rule(potentialString, jsIntegerOrNull, nullType);
-  rule(potentialString, jsDoubleOrNull, nullType);
+  rule(potentialString, jsNumNotIntOrNull, nullType);
   rule(potentialString, jsStringOrNull, jsStringOrNull);
   rule(potentialString, nullType, nullType);
   rule(potentialString, jsFixedArray, emptyType);
@@ -701,28 +701,28 @@
   rule(jsBooleanOrNull, jsBooleanOrNull, jsBooleanOrNull);
   rule(jsBooleanOrNull, jsNumberOrNull, nullType);
   rule(jsBooleanOrNull, jsIntegerOrNull, nullType);
-  rule(jsBooleanOrNull, jsDoubleOrNull, nullType);
+  rule(jsBooleanOrNull, jsNumNotIntOrNull, nullType);
   rule(jsBooleanOrNull, jsStringOrNull, nullType);
   rule(jsBooleanOrNull, nullType, nullType);
   rule(jsBooleanOrNull, jsFixedArray, emptyType);
 
   rule(jsNumberOrNull, jsNumberOrNull, jsNumberOrNull);
   rule(jsNumberOrNull, jsIntegerOrNull, jsIntegerOrNull);
-  rule(jsNumberOrNull, jsDoubleOrNull, jsDoubleOrNull);
+  rule(jsNumberOrNull, jsNumNotIntOrNull, jsNumNotIntOrNull);
   rule(jsNumberOrNull, jsStringOrNull, nullType);
   rule(jsNumberOrNull, nullType, nullType);
   rule(jsNumberOrNull, jsFixedArray, emptyType);
 
   rule(jsIntegerOrNull, jsIntegerOrNull, jsIntegerOrNull);
-  rule(jsIntegerOrNull, jsDoubleOrNull, nullType);
+  rule(jsIntegerOrNull, jsNumNotIntOrNull, nullType);
   rule(jsIntegerOrNull, jsStringOrNull, nullType);
   rule(jsIntegerOrNull, nullType, nullType);
   rule(jsIntegerOrNull, jsFixedArray, emptyType);
 
-  rule(jsDoubleOrNull, jsDoubleOrNull, jsDoubleOrNull);
-  rule(jsDoubleOrNull, jsStringOrNull, nullType);
-  rule(jsDoubleOrNull, nullType, nullType);
-  rule(jsDoubleOrNull, jsFixedArray, emptyType);
+  rule(jsNumNotIntOrNull, jsNumNotIntOrNull, jsNumNotIntOrNull);
+  rule(jsNumNotIntOrNull, jsStringOrNull, nullType);
+  rule(jsNumNotIntOrNull, nullType, nullType);
+  rule(jsNumNotIntOrNull, jsFixedArray, emptyType);
 
   rule(jsStringOrNull, jsStringOrNull, jsStringOrNull);
   rule(jsStringOrNull, nullType, nullType);
@@ -821,16 +821,16 @@
       closedWorld.commonElements.jsNumberClass, closedWorld);
   jsInteger = new TypeMask.nonNullExact(
       closedWorld.commonElements.jsIntClass, closedWorld);
-  jsDouble = new TypeMask.nonNullExact(
-      closedWorld.commonElements.jsDoubleClass, closedWorld);
+  jsNumNotInt = new TypeMask.nonNullExact(
+      closedWorld.commonElements.jsNumNotIntClass, closedWorld);
   jsBooleanOrNull =
       new TypeMask.exact(closedWorld.commonElements.jsBoolClass, closedWorld);
   jsNumberOrNull = new TypeMask.subclass(
       closedWorld.commonElements.jsNumberClass, closedWorld);
   jsIntegerOrNull =
       new TypeMask.exact(closedWorld.commonElements.jsIntClass, closedWorld);
-  jsDoubleOrNull =
-      new TypeMask.exact(closedWorld.commonElements.jsDoubleClass, closedWorld);
+  jsNumNotIntOrNull = new TypeMask.exact(
+      closedWorld.commonElements.jsNumNotIntClass, closedWorld);
   nullType = const TypeMask.empty();
   objectType = new TypeMask.nonNullSubclass(
       closedWorld.commonElements.objectClass, closedWorld);
diff --git a/pkg/compiler/test/rti/data/map_literal.dart b/pkg/compiler/test/rti/data/map_literal.dart
index 033f6f5..5776790 100644
--- a/pkg/compiler/test/rti/data/map_literal.dart
+++ b/pkg/compiler/test/rti/data/map_literal.dart
@@ -16,7 +16,7 @@
 /*prod.class: global#double:*/
 /*spec.class: global#double:implicit=[double]*/
 
-/*class: global#JSDouble:*/
+/*class: global#JSNumNotInt:*/
 
 main() {
   <int, double>{}[0] = 0.5;
diff --git a/pkg/compiler/test/rti/data/map_to_set.dart b/pkg/compiler/test/rti/data/map_to_set.dart
index 0476721..90e9586 100644
--- a/pkg/compiler/test/rti/data/map_to_set.dart
+++ b/pkg/compiler/test/rti/data/map_to_set.dart
@@ -16,7 +16,7 @@
 /*prod.class: global#double:*/
 /*spec.class: global#double:implicit=[double]*/
 
-/*class: global#JSDouble:*/
+/*class: global#JSNumNotInt:*/
 
 main() {
   var c = new Class<double, int>();
diff --git a/pkg/compiler/test/rti/emission/map_literal.dart b/pkg/compiler/test/rti/emission/map_literal.dart
index c2b86d0..884ba8a 100644
--- a/pkg/compiler/test/rti/emission/map_literal.dart
+++ b/pkg/compiler/test/rti/emission/map_literal.dart
@@ -11,7 +11,7 @@
 
 /*spec.class: global#double:checkedInstance,instance,typeArgument*/
 
-/*class: global#JSDouble:checks=[],instance*/
+/*class: global#JSNumNotInt:checks=[],instance*/
 
 main() {
   <int, double>{}[0] = 0.5;
diff --git a/pkg/dev_compiler/analysis_options.yaml b/pkg/dev_compiler/analysis_options.yaml
index 649b03d..6a33ce2 100644
--- a/pkg/dev_compiler/analysis_options.yaml
+++ b/pkg/dev_compiler/analysis_options.yaml
@@ -1,4 +1,4 @@
-include: package:pedantic/analysis_options.1.8.0.yaml
+include: package:pedantic/analysis_options.1.9.0.yaml
 
 analyzer:
   strong-mode:
@@ -15,23 +15,6 @@
 
 linter:
   rules:
-    # Enforced by pedantic v1.9.0.
-    - always_declare_return_types
-    - always_require_non_null_named_parameters
-    - annotate_overrides
-    - avoid_null_checks_in_equality_operators
-    - camel_case_extensions
-    - omit_local_variable_types
-    - prefer_adjacent_string_concatenation
-    - prefer_collection_literals
-    - prefer_conditional_assignment
-    - prefer_final_fields
-    - prefer_for_elements_to_map_fromIterable
-    - prefer_generic_function_type_aliases
-    - prefer_if_null_operators
-    - prefer_single_quotes
-    - prefer_spread_collections
-    - use_function_type_syntax_for_parameters
     # Not enforced by pedantic at any version.
     - directives_ordering
     - prefer_null_aware_operators
diff --git a/pkg/dev_compiler/lib/src/compiler/module_containers.dart b/pkg/dev_compiler/lib/src/compiler/module_containers.dart
index 8bda34d..2e03a63 100644
--- a/pkg/dev_compiler/lib/src/compiler/module_containers.dart
+++ b/pkg/dev_compiler/lib/src/compiler/module_containers.dart
@@ -66,7 +66,7 @@
   /// containerId is safe to use during eval.
   ModuleItemContainer._(
       this.name, this.containerId, js_ast.Identifier aggregatedId)
-      : this.aggregatedContainerId = aggregatedId ?? containerId;
+      : aggregatedContainerId = aggregatedId ?? containerId;
 
   /// Creates an automatically sharding container backed by JS Objects.
   factory ModuleItemContainer.asObject(String name,
@@ -147,7 +147,7 @@
 
   @override
   void operator []=(K key, js_ast.Expression value) {
-    if (this.contains(key)) {
+    if (contains(key)) {
       moduleItems[key].jsValue = value;
       return;
     }
diff --git a/pkg/dev_compiler/lib/src/js_ast/nodes.dart b/pkg/dev_compiler/lib/src/js_ast/nodes.dart
index bdfb6c9..d721e6e 100644
--- a/pkg/dev_compiler/lib/src/js_ast/nodes.dart
+++ b/pkg/dev_compiler/lib/src/js_ast/nodes.dart
@@ -7,7 +7,7 @@
 // ignore_for_file: slash_for_doc_comments, prefer_single_quotes
 // ignore_for_file: always_declare_return_types, prefer_final_fields
 // ignore_for_file: always_require_non_null_named_parameters
-// ignore_for_file: omit_local_variable_types
+// ignore_for_file: omit_local_variable_types, unnecessary_this
 
 part of js_ast;
 
diff --git a/pkg/dev_compiler/lib/src/js_ast/template.dart b/pkg/dev_compiler/lib/src/js_ast/template.dart
index 4cdad6d..d421d6a 100644
--- a/pkg/dev_compiler/lib/src/js_ast/template.dart
+++ b/pkg/dev_compiler/lib/src/js_ast/template.dart
@@ -7,6 +7,7 @@
 // ignore_for_file: slash_for_doc_comments, omit_local_variable_types
 // ignore_for_file: always_declare_return_types, prefer_collection_literals
 // ignore_for_file: prefer_single_quotes, prefer_generic_function_type_aliases
+// ignore_for_file: unnecessary_this
 
 part of js_ast;
 
diff --git a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart
index cf27263..e1cd050 100644
--- a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart
+++ b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields.dart
@@ -22,14 +22,14 @@
   int x, y, z;
 
   Foo(int a, int b)
-      : this.x = a,
-        this.y = b {
+      : x = a,
+        y = b {
     z = a + b;
   }
 
   Foo.named()
-      : this.x = 42,
-        this.y = 88 {
+      : x = 42,
+        y = 88 {
     z = 28;
   }
 }
diff --git a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart
index 1508da9..ab8d8a3 100644
--- a/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart
+++ b/pkg/dev_compiler/test/sourcemap/testfiles/printing_class_fields_step_into.dart
@@ -17,8 +17,8 @@
   int x, y, z;
 
   Foo(int a, int b)
-      : this. /*sl:2*/ x = a, // `s:2` fails, DDK is missing hover info
-        this. /*sl:3*/ y = b {
+      : /*sl:2*/ x = a, // `s:2` fails, DDK is missing hover info
+        /*sl:3*/ y = b {
     // `s:3` fails, DDK is missing hover info
     z = a /*sl:4*/ + b;
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
index b0bc5db..84205dc 100644
--- a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
@@ -36,6 +36,11 @@
   /// If [setter] is `true` the sought member is a setter or assignable field.
   /// If [required] is `true` and no member is found an internal problem is
   /// reported.
+  ///
+  /// If the extension member is a duplicate, `null` is returned.
+  // TODO(johnniwinther): Support [AmbiguousBuilder] here and in instance
+  // member lookup to avoid reporting that the member doesn't exist when it is
+  // duplicate.
   Builder lookupLocalMemberByName(Name name,
       {bool setter: false, bool required: false});
 
@@ -122,8 +127,18 @@
       {bool setter: false, bool required: false}) {
     Builder builder =
         lookupLocalMember(name.text, setter: setter, required: required);
-    if (builder != null && name.isPrivate && library.library != name.library) {
-      builder = null;
+    if (builder != null) {
+      if (name.isPrivate && library.library != name.library) {
+        builder = null;
+      } else if (builder.isDuplicate) {
+        // Duplicates are not visible in the instance scope.
+        builder = null;
+      } else if (builder is MemberBuilder && builder.isConflictingSetter) {
+        // Conflicting setters are not visible in the instance scope.
+        // TODO(johnniwinther): Should we return an [AmbiguousBuilder] here and
+        // above?
+        builder = null;
+      }
     }
     return builder;
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/member_builder.dart b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
index b41a5a4..f496386 100644
--- a/pkg/front_end/lib/src/fasta/builder/member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
@@ -70,6 +70,10 @@
 
   bool get isAbstract;
 
+  /// Returns `true` if this member is a setter that conflicts with the implicit
+  /// setter of a field.
+  bool get isConflictingSetter;
+
   void buildOutlineExpressions(LibraryBuilder library, CoreTypes coreTypes);
 
   /// Returns the [ClassMember]s for the non-setter members created for this
@@ -137,6 +141,19 @@
   @override
   bool get isAbstract => (modifiers & abstractMask) != 0;
 
+  bool _isConflictingSetter;
+
+  @override
+  bool get isConflictingSetter {
+    return _isConflictingSetter ??= false;
+  }
+
+  void set isConflictingSetter(bool value) {
+    assert(_isConflictingSetter == null,
+        '$this.isConflictingSetter has already been fixed.');
+    _isConflictingSetter = value;
+  }
+
   @override
   LibraryBuilder get library {
     if (parent is LibraryBuilder) {
diff --git a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
index 388ba1d..cecc308 100644
--- a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
@@ -592,9 +592,10 @@
       : <ClassMember>[new SourceProcedureMember(this)];
 
   @override
-  List<ClassMember> get localSetters => _localSetters ??= isSetter
-      ? <ClassMember>[new SourceProcedureMember(this)]
-      : const <ClassMember>[];
+  List<ClassMember> get localSetters =>
+      _localSetters ??= isSetter && !isConflictingSetter
+          ? <ClassMember>[new SourceProcedureMember(this)]
+          : const <ClassMember>[];
 }
 
 class SourceProcedureMember extends BuilderClassMember {
diff --git a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
index 369ec37..b97967d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
@@ -116,100 +116,182 @@
 
 class Tuple {
   final Name name;
-  ClassMember declaredMember;
-  ClassMember declaredSetter;
-  ClassMember mixedInMember;
-  ClassMember mixedInSetter;
-  ClassMember extendedMember;
-  ClassMember extendedSetter;
-  List<ClassMember> implementedMembers;
-  List<ClassMember> implementedSetters;
+  ClassMember _declaredMember;
+  ClassMember _declaredSetter;
+  ClassMember _mixedInMember;
+  ClassMember _mixedInSetter;
+  ClassMember _extendedMember;
+  ClassMember _extendedSetter;
+  List<ClassMember> _implementedMembers;
+  List<ClassMember> _implementedSetters;
 
-  Tuple.declareMember(this.declaredMember)
-      : assert(!declaredMember.forSetter),
-        this.name = declaredMember.name;
+  Tuple.declareMember(this._declaredMember)
+      : assert(!_declaredMember.forSetter),
+        this.name = _declaredMember.name;
 
-  Tuple.mixInMember(this.mixedInMember)
-      : assert(!mixedInMember.forSetter),
-        this.name = mixedInMember.name;
+  Tuple.mixInMember(this._mixedInMember)
+      : assert(!_mixedInMember.forSetter),
+        this.name = _mixedInMember.name;
 
-  Tuple.extendMember(this.extendedMember)
-      : assert(!extendedMember.forSetter),
-        this.name = extendedMember.name;
+  Tuple.extendMember(this._extendedMember)
+      : assert(!_extendedMember.forSetter),
+        this.name = _extendedMember.name;
 
   Tuple.implementMember(ClassMember implementedMember)
       : assert(!implementedMember.forSetter),
         this.name = implementedMember.name,
-        implementedMembers = <ClassMember>[implementedMember];
+        _implementedMembers = <ClassMember>[implementedMember];
 
-  Tuple.declareSetter(this.declaredSetter)
-      : assert(declaredSetter.forSetter),
-        this.name = declaredSetter.name;
+  Tuple.declareSetter(this._declaredSetter)
+      : assert(_declaredSetter.forSetter),
+        this.name = _declaredSetter.name;
 
-  Tuple.mixInSetter(this.mixedInSetter)
-      : assert(mixedInSetter.forSetter),
-        this.name = mixedInSetter.name;
+  Tuple.mixInSetter(this._mixedInSetter)
+      : assert(_mixedInSetter.forSetter),
+        this.name = _mixedInSetter.name;
 
-  Tuple.extendSetter(this.extendedSetter)
-      : assert(extendedSetter.forSetter),
-        this.name = extendedSetter.name;
+  Tuple.extendSetter(this._extendedSetter)
+      : assert(_extendedSetter.forSetter),
+        this.name = _extendedSetter.name;
 
   Tuple.implementSetter(ClassMember implementedSetter)
       : assert(implementedSetter.forSetter),
         this.name = implementedSetter.name,
-        implementedSetters = <ClassMember>[implementedSetter];
+        _implementedSetters = <ClassMember>[implementedSetter];
+
+  ClassMember get declaredMember => _declaredMember;
+
+  void set declaredMember(ClassMember value) {
+    assert(!value.forSetter);
+    assert(
+        _declaredMember == null,
+        "Declared member already set to $_declaredMember, "
+        "trying to set it to $value.");
+    _declaredMember = value;
+  }
+
+  ClassMember get declaredSetter => _declaredSetter;
+
+  void set declaredSetter(ClassMember value) {
+    assert(value.forSetter);
+    assert(
+        _declaredSetter == null,
+        "Declared setter already set to $_declaredSetter, "
+        "trying to set it to $value.");
+    _declaredSetter = value;
+  }
+
+  ClassMember get extendedMember => _extendedMember;
+
+  void set extendedMember(ClassMember value) {
+    assert(!value.forSetter);
+    assert(
+        _extendedMember == null,
+        "Extended member already set to $_extendedMember, "
+        "trying to set it to $value.");
+    _extendedMember = value;
+  }
+
+  ClassMember get extendedSetter => _extendedSetter;
+
+  void set extendedSetter(ClassMember value) {
+    assert(value.forSetter);
+    assert(
+        _extendedSetter == null,
+        "Extended setter already set to $_extendedSetter, "
+        "trying to set it to $value.");
+    _extendedSetter = value;
+  }
+
+  ClassMember get mixedInMember => _mixedInMember;
+
+  void set mixedInMember(ClassMember value) {
+    assert(!value.forSetter);
+    assert(
+        _mixedInMember == null,
+        "Mixed in member already set to $_mixedInMember, "
+        "trying to set it to $value.");
+    _mixedInMember = value;
+  }
+
+  ClassMember get mixedInSetter => _mixedInSetter;
+
+  void set mixedInSetter(ClassMember value) {
+    assert(value.forSetter);
+    assert(
+        _mixedInSetter == null,
+        "Mixed in setter already set to $_mixedInSetter, "
+        "trying to set it to $value.");
+    _mixedInSetter = value;
+  }
+
+  List<ClassMember> get implementedMembers => _implementedMembers;
+
+  void addImplementedMember(ClassMember value) {
+    assert(!value.forSetter);
+    _implementedMembers ??= <ClassMember>[];
+    _implementedMembers.add(value);
+  }
+
+  List<ClassMember> get implementedSetters => _implementedSetters;
+
+  void addImplementedSetter(ClassMember value) {
+    assert(value.forSetter);
+    _implementedSetters ??= <ClassMember>[];
+    _implementedSetters.add(value);
+  }
 
   @override
   String toString() {
     StringBuffer sb = new StringBuffer();
     String comma = '';
     sb.write('Tuple(');
-    if (declaredMember != null) {
+    if (_declaredMember != null) {
       sb.write(comma);
       sb.write('declaredMember=');
-      sb.write(declaredMember);
+      sb.write(_declaredMember);
       comma = ',';
     }
-    if (declaredSetter != null) {
+    if (_declaredSetter != null) {
       sb.write(comma);
       sb.write('declaredSetter=');
-      sb.write(declaredSetter);
+      sb.write(_declaredSetter);
       comma = ',';
     }
-    if (mixedInMember != null) {
+    if (_mixedInMember != null) {
       sb.write(comma);
       sb.write('mixedInMember=');
-      sb.write(mixedInMember);
+      sb.write(_mixedInMember);
       comma = ',';
     }
-    if (mixedInSetter != null) {
+    if (_mixedInSetter != null) {
       sb.write(comma);
       sb.write('mixedInSetter=');
-      sb.write(mixedInSetter);
+      sb.write(_mixedInSetter);
       comma = ',';
     }
-    if (extendedMember != null) {
+    if (_extendedMember != null) {
       sb.write(comma);
       sb.write('extendedMember=');
-      sb.write(extendedMember);
+      sb.write(_extendedMember);
       comma = ',';
     }
-    if (extendedSetter != null) {
+    if (_extendedSetter != null) {
       sb.write(comma);
       sb.write('extendedSetter=');
-      sb.write(extendedSetter);
+      sb.write(_extendedSetter);
       comma = ',';
     }
-    if (implementedMembers != null) {
+    if (_implementedMembers != null) {
       sb.write(comma);
       sb.write('implementedMembers=');
-      sb.write(implementedMembers);
+      sb.write(_implementedMembers);
       comma = ',';
     }
-    if (implementedSetters != null) {
+    if (_implementedSetters != null) {
       sb.write(comma);
       sb.write('implementedSetters=');
-      sb.write(implementedSetters);
+      sb.write(_implementedSetters);
       comma = ',';
     }
     sb.write(')');
@@ -1383,11 +1465,9 @@
         Tuple tuple = memberMap[name];
         if (tuple != null) {
           if (superInterfaceMember.forSetter) {
-            (tuple.implementedSetters ??= <ClassMember>[])
-                .add(superInterfaceMember);
+            tuple.addImplementedSetter(superInterfaceMember);
           } else {
-            (tuple.implementedMembers ??= <ClassMember>[])
-                .add(superInterfaceMember);
+            tuple.addImplementedMember(superInterfaceMember);
           }
         } else {
           if (superInterfaceMember.forSetter) {
diff --git a/pkg/front_end/lib/src/fasta/scope.dart b/pkg/front_end/lib/src/fasta/scope.dart
index 5fa0edf..4f8e52b 100644
--- a/pkg/front_end/lib/src/fasta/scope.dart
+++ b/pkg/front_end/lib/src/fasta/scope.dart
@@ -355,6 +355,9 @@
           builder, charOffset, fileUri);
     } else if (!isInstanceScope && builder.isDeclarationInstanceMember) {
       return null;
+    } else if (builder is MemberBuilder && builder.isConflictingSetter) {
+      // TODO(johnniwinther): Use a variant of [AmbiguousBuilder] for this case.
+      return null;
     } else {
       return builder;
     }
@@ -779,6 +782,9 @@
   bool get isAbstract => false;
 
   @override
+  bool get isConflictingSetter => false;
+
+  @override
   void set parent(Builder value) {
     throw new UnsupportedError('AmbiguousMemberBuilder.parent=');
   }
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index f944fe9..6d6dca8 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -133,6 +133,12 @@
   SourceLibraryBuilder get library => super.library;
 
   Class build(SourceLibraryBuilder library, LibraryBuilder coreLibrary) {
+    SourceLibraryBuilder.checkMemberConflicts(library, scope,
+        // These checks are performed as part of the class hierarchy
+        // computation.
+        checkForInstanceVsStaticConflict: false,
+        checkForMethodVsSetterConflict: false);
+
     void buildBuilders(String name, Builder declaration) {
       do {
         if (declaration.parent != this) {
@@ -148,7 +154,9 @@
           memberBuilder.buildMembers(library,
               (Member member, BuiltMemberKind memberKind) {
             member.parent = cls;
-            if (!memberBuilder.isPatch && !memberBuilder.isDuplicate) {
+            if (!memberBuilder.isPatch &&
+                !memberBuilder.isDuplicate &&
+                !memberBuilder.isConflictingSetter) {
               if (member is Procedure) {
                 cls.addProcedure(member);
               } else if (member is Field) {
@@ -270,20 +278,6 @@
     });
 
     scope.forEachLocalSetter((String name, Builder setter) {
-      Builder member = scopeBuilder[name];
-      if (member == null ||
-          !(member.isField && !member.isFinal && !member.isConst ||
-              member.isRegularMethod && member.isStatic && setter.isStatic)) {
-        return;
-      }
-      addProblem(templateConflictsWithMember.withArguments(name),
-          setter.charOffset, noLength);
-      // TODO(ahe): Context argument to previous message?
-      addProblem(templateConflictsWithSetter.withArguments(name),
-          member.charOffset, noLength);
-    });
-
-    scope.forEachLocalSetter((String name, Builder setter) {
       Builder constructor = constructorScopeBuilder[name];
       if (constructor == null || !setter.isStatic) return;
       addProblem(templateConflictsWithConstructor.withArguments(name),
diff --git a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
index 744ce07..1538023 100644
--- a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
@@ -27,8 +27,6 @@
         messagePatchDeclarationMismatch,
         messagePatchDeclarationOrigin,
         noLength,
-        templateConflictsWithMember,
-        templateConflictsWithSetter,
         templateExtensionMemberConflictsWithObjectMember;
 
 import '../problems.dart';
@@ -86,6 +84,10 @@
   Extension build(
       SourceLibraryBuilder libraryBuilder, LibraryBuilder coreLibrary,
       {bool addMembersToLibrary}) {
+    SourceLibraryBuilder.checkMemberConflicts(library, scope,
+        checkForInstanceVsStaticConflict: true,
+        checkForMethodVsSetterConflict: true);
+
     ClassBuilder objectClassBuilder =
         coreLibrary.lookupLocalMember('Object', required: true);
     void buildBuilders(String name, Builder declaration) {
@@ -114,8 +116,10 @@
               (Member member, BuiltMemberKind memberKind) {
             if (addMembersToLibrary &&
                 !memberBuilder.isPatch &&
-                !memberBuilder.isDuplicate) {
+                !memberBuilder.isDuplicate &&
+                !memberBuilder.isConflictingSetter) {
               ExtensionMemberKind kind;
+              String name = memberBuilder.name;
               switch (memberKind) {
                 case BuiltMemberKind.Constructor:
                 case BuiltMemberKind.RedirectingFactory:
@@ -162,7 +166,7 @@
                     member.fileOffset, member.fileUri);
               }
               extension.members.add(new ExtensionMemberDescriptor(
-                  name: new Name(memberBuilder.name, libraryBuilder.library),
+                  name: new Name(name, libraryBuilder.library),
                   member: memberReference,
                   isStatic: declaration.isStatic,
                   kind: kind));
@@ -178,32 +182,6 @@
 
     scope.forEach(buildBuilders);
 
-    scope.forEachLocalSetter((String name, MemberBuilder setter) {
-      Builder member = scopeBuilder[name];
-      if (member == null) {
-        // Setter without getter.
-        return;
-      }
-      bool conflict = member.isDeclarationInstanceMember !=
-          setter.isDeclarationInstanceMember;
-      if (member.isField) {
-        if (!member.isConst && !member.isFinal) {
-          // Setter with writable field.
-          conflict = true;
-        }
-      } else if (member.isRegularMethod) {
-        // Setter with method.
-        conflict = true;
-      }
-      if (conflict) {
-        addProblem(templateConflictsWithMember.withArguments(name),
-            setter.charOffset, noLength);
-        // TODO(ahe): Context argument to previous message?
-        addProblem(templateConflictsWithSetter.withArguments(name),
-            member.charOffset, noLength);
-      }
-    });
-
     _extension.onType = onType?.build(libraryBuilder);
 
     return _extension;
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 59b38d9..2597332 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -161,9 +161,6 @@
 
   Uri get packageUriForTesting => _packageUri;
 
-  final List<ImplementationInfo> implementationBuilders =
-      <ImplementationInfo>[];
-
   final List<Object> accessors = <Object>[];
 
   String name;
@@ -180,8 +177,6 @@
   /// for example, [addClass] is called.
   TypeParameterScopeBuilder currentTypeParameterScopeBuilder;
 
-  bool canAddImplementationBuilders = false;
-
   /// Non-null if this library causes an error upon access, that is, there was
   /// an error reading its source.
   Message accessProblem;
@@ -881,37 +876,84 @@
     return true;
   }
 
+  /// Checks [scope] for conflicts between setters and non-setters and reports
+  /// them in [sourceLibraryBuilder].
+  ///
+  /// If [checkForInstanceVsStaticConflict] is `true`, conflicts between
+  /// instance and static members of the same name are reported.
+  ///
+  /// If [checkForMethodVsSetterConflict] is `true`, conflicts between
+  /// methods and setters of the same name are reported.
+  static void checkMemberConflicts(
+      SourceLibraryBuilder sourceLibraryBuilder, Scope scope,
+      {bool checkForInstanceVsStaticConflict,
+      bool checkForMethodVsSetterConflict}) {
+    assert(checkForInstanceVsStaticConflict != null);
+    assert(checkForMethodVsSetterConflict != null);
+
+    scope.forEachLocalSetter((String name, MemberBuilder setter) {
+      Builder member = scope.lookupLocalMember(name, setter: false);
+      if (member == null) {
+        // Setter without getter.
+        return;
+      }
+      MemberBuilderImpl setterBuilder = setter;
+      do {
+        bool conflict = checkForInstanceVsStaticConflict &&
+            member.isDeclarationInstanceMember !=
+                setterBuilder.isDeclarationInstanceMember;
+        if (member is FieldBuilder) {
+          if (member.isAssignable) {
+            // Setter with writable field.
+            setterBuilder.isConflictingSetter = true;
+            conflict = true;
+          }
+        } else if (checkForMethodVsSetterConflict && !member.isGetter) {
+          // Setter with method.
+          conflict = true;
+        }
+        if (conflict) {
+          if (setterBuilder.isConflictingSetter) {
+            sourceLibraryBuilder.addProblem(
+                templateConflictsWithImplicitSetter.withArguments(name),
+                setterBuilder.charOffset,
+                noLength,
+                setterBuilder.fileUri);
+            // TODO(ahe): Context argument to previous message?
+            sourceLibraryBuilder.addProblem(
+                templateConflictsWithSetter.withArguments(name),
+                member.charOffset,
+                noLength,
+                member.fileUri);
+          } else {
+            sourceLibraryBuilder.addProblem(
+                templateConflictsWithMember.withArguments(name),
+                setterBuilder.charOffset,
+                noLength,
+                setterBuilder.fileUri);
+            // TODO(ahe): Context argument to previous message?
+            sourceLibraryBuilder.addProblem(
+                templateConflictsWithSetter.withArguments(name),
+                member.charOffset,
+                noLength,
+                member.fileUri);
+          }
+        }
+        setterBuilder = setterBuilder.next;
+      } while (setterBuilder != null);
+    });
+  }
+
   /// Builds the core AST structure of this library as needed for the outline.
   Library build(LibraryBuilder coreLibrary, {bool modifyTarget}) {
-    assert(implementationBuilders.isEmpty);
-    canAddImplementationBuilders = true;
+    checkMemberConflicts(this, scope,
+        checkForInstanceVsStaticConflict: false,
+        checkForMethodVsSetterConflict: true);
+
     Iterator<Builder> iterator = this.iterator;
     while (iterator.moveNext()) {
       buildBuilder(iterator.current, coreLibrary);
     }
-    for (ImplementationInfo info in implementationBuilders) {
-      String name = info.name;
-      Builder declaration = info.declaration;
-      int charOffset = info.charOffset;
-      addBuilder(name, declaration, charOffset);
-      buildBuilder(declaration, coreLibrary);
-    }
-    canAddImplementationBuilders = false;
-
-    scope.forEachLocalSetter((String name, Builder setter) {
-      Builder member = scopeBuilder[name];
-      if (member == null ||
-          !member.isField ||
-          member.isFinal ||
-          member.isConst) {
-        return;
-      }
-      addProblem(templateConflictsWithMember.withArguments(name),
-          setter.charOffset, noLength, fileUri);
-      // TODO(ahe): Context to previous message?
-      addProblem(templateConflictsWithSetter.withArguments(name),
-          member.charOffset, noLength, fileUri);
-    });
 
     if (modifyTarget == false) return library;
 
@@ -935,17 +977,6 @@
     return library;
   }
 
-  /// Used to add implementation builder during the call to [build] above.
-  /// Currently, only anonymous mixins are using implementation builders (see
-  /// [MixinApplicationBuilder]
-  /// (../kernel/kernel_mixin_application_builder.dart)).
-  void addImplementationBuilder(
-      String name, Builder declaration, int charOffset) {
-    assert(canAddImplementationBuilders, "$importUri");
-    implementationBuilders
-        .add(new ImplementationInfo(name, declaration, charOffset));
-  }
-
   void validatePart(SourceLibraryBuilder library, Set<Uri> usedParts) {
     if (library != null && parts.isNotEmpty) {
       // If [library] is null, we have already reported a problem that this
@@ -2548,7 +2579,9 @@
           }
         } else if (member is Procedure) {
           member.isStatic = true;
-          if (!declaration.isPatch && !declaration.isDuplicate) {
+          if (!declaration.isPatch &&
+              !declaration.isDuplicate &&
+              !declaration.isConflictingSetter) {
             library.addProcedure(member);
           }
         } else {
@@ -3961,14 +3994,6 @@
       this.beforeLast, this.charEndOffset);
 }
 
-class ImplementationInfo {
-  final String name;
-  final Builder declaration;
-  final int charOffset;
-
-  const ImplementationInfo(this.name, this.declaration, this.charOffset);
-}
-
 Uri computeLibraryUri(Builder declaration) {
   Builder current = declaration;
   do {
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index 2eeae7a..e07a53f 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -76,10 +76,10 @@
 ConflictsWithConstructor/example: Fail
 ConflictsWithFactory/analyzerCode: Fail
 ConflictsWithFactory/example: Fail
+ConflictsWithImplicitSetter/example: Fail
 ConflictsWithMember/example: Fail
 ConflictsWithMemberWarning/example: Fail
 ConflictsWithSetter/example: Fail
-ConflictsWithSetterWarning/example: Fail
 ConflictsWithTypeVariable/example: Fail
 ConstAndFinal/declaration3: Fail
 ConstAndFinal/declaration4: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 6556e70..44544f2 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -2116,6 +2116,10 @@
   template: "Conflicts with member '#name'."
   analyzerCode: CONFLICTS_WITH_MEMBER
 
+ConflictsWithImplicitSetter:
+  template: "Conflicts with the implicit setter of the field '#name'."
+  analyzerCode: CONFLICTS_WITH_MEMBER
+
 ConflictsWithSetter:
   template: "Conflicts with setter '#name'."
   analyzerCode: CONFLICTS_WITH_MEMBER
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect b/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect
index ca41f17..6cfc008 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.outline.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with member 'property2'.
+// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with the implicit setter of the field 'property2'.
 //   static void set property2(int x) {}
 //                   ^
 //
@@ -24,12 +24,9 @@
 extension C on core::int* {
   static field property2 = self::C|property2;
   get property3 = self::C|get#property3;
-  static set property2 = set self::C|property2;
   static set property3 = set self::C|property3;
 }
 static field core::int* C|property2;
-static set C|property2(core::int* x) → void
-  ;
 static set C|property3(core::int* x) → void
   ;
 static method C|get#property3(lowered final core::int* #this) → core::int*
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect b/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect
index 9108ed9..8dbe072 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.strong.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with member 'property2'.
+// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with the implicit setter of the field 'property2'.
 //   static void set property2(int x) {}
 //                   ^
 //
@@ -24,11 +24,9 @@
 extension C on core::int* {
   static field property2 = self::C|property2;
   get property3 = self::C|get#property3;
-  static set property2 = set self::C|property2;
   static set property3 = set self::C|property3;
 }
 static field core::int* C|property2;
-static set C|property2(core::int* x) → void {}
 static set C|property3(core::int* x) → void {}
 static method C|get#property3(lowered final core::int* #this) → core::int*
   return 1;
diff --git a/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect
index 9108ed9..8dbe072 100644
--- a/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/extensions/issue38713.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with member 'property2'.
+// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with the implicit setter of the field 'property2'.
 //   static void set property2(int x) {}
 //                   ^
 //
@@ -24,11 +24,9 @@
 extension C on core::int* {
   static field property2 = self::C|property2;
   get property3 = self::C|get#property3;
-  static set property2 = set self::C|property2;
   static set property3 = set self::C|property3;
 }
 static field core::int* C|property2;
-static set C|property2(core::int* x) → void {}
 static set C|property3(core::int* x) → void {}
 static method C|get#property3(lowered final core::int* #this) → core::int*
   return 1;
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart b/pkg/front_end/testcases/extensions/issue44003.dart
new file mode 100644
index 0000000..a7a25ed
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart
@@ -0,0 +1,19 @@
+// 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.
+
+void test(List<String> args) {
+  args.foo('1', 2);
+}
+
+extension on List<String> {
+  void foo(String bar) {
+    print(1);
+  }
+
+  void foo(String baz, int a) {
+    print(2);
+  }
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.outline.expect b/pkg/front_end/testcases/extensions/issue44003.dart.outline.expect
new file mode 100644
index 0000000..59eaf76
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.outline.expect
@@ -0,0 +1,26 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:14:8: Error: 'foo' is already declared in this scope.
+//   void foo(String baz, int a) {
+//        ^^^
+// pkg/front_end/testcases/extensions/issue44003.dart:10:8: Context: Previous declaration of 'foo'.
+//   void foo(String bar) {
+//        ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::List<core::String*>* {
+  method foo = self::_extension#0|foo;
+  tearoff foo = self::_extension#0|get#foo;
+}
+static method test(core::List<core::String*>* args) → void
+  ;
+static method _extension#0|foo(lowered final core::List<core::String*>* #this, core::String* bar) → void
+  ;
+static method _extension#0|get#foo(lowered final core::List<core::String*>* #this) → (core::String*) →* void
+  return (core::String* bar) → void => self::_extension#0|foo(#this, bar);
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.strong.expect b/pkg/front_end/testcases/extensions/issue44003.dart.strong.expect
new file mode 100644
index 0000000..00f8324
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.strong.expect
@@ -0,0 +1,37 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:14:8: Error: 'foo' is already declared in this scope.
+//   void foo(String baz, int a) {
+//        ^^^
+// pkg/front_end/testcases/extensions/issue44003.dart:10:8: Context: Previous declaration of 'foo'.
+//   void foo(String bar) {
+//        ^^^
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:6:8: Error: The method 'foo' isn't defined for the class 'List<String>'.
+//  - 'List' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+//   args.foo('1', 2);
+//        ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::List<core::String*>* {
+  method foo = self::_extension#0|foo;
+  tearoff foo = self::_extension#0|get#foo;
+}
+static method test(core::List<core::String*>* args) → void {
+  invalid-expression "pkg/front_end/testcases/extensions/issue44003.dart:6:8: Error: The method 'foo' isn't defined for the class 'List<String>'.
+ - 'List' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+  args.foo('1', 2);
+       ^^^";
+}
+static method _extension#0|foo(lowered final core::List<core::String*>* #this, core::String* bar) → void {
+  core::print(1);
+}
+static method _extension#0|get#foo(lowered final core::List<core::String*>* #this) → (core::String*) →* void
+  return (core::String* bar) → void => self::_extension#0|foo(#this, bar);
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue44003.dart.strong.transformed.expect
new file mode 100644
index 0000000..00f8324
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.strong.transformed.expect
@@ -0,0 +1,37 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:14:8: Error: 'foo' is already declared in this scope.
+//   void foo(String baz, int a) {
+//        ^^^
+// pkg/front_end/testcases/extensions/issue44003.dart:10:8: Context: Previous declaration of 'foo'.
+//   void foo(String bar) {
+//        ^^^
+//
+// pkg/front_end/testcases/extensions/issue44003.dart:6:8: Error: The method 'foo' isn't defined for the class 'List<String>'.
+//  - 'List' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+//   args.foo('1', 2);
+//        ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::List<core::String*>* {
+  method foo = self::_extension#0|foo;
+  tearoff foo = self::_extension#0|get#foo;
+}
+static method test(core::List<core::String*>* args) → void {
+  invalid-expression "pkg/front_end/testcases/extensions/issue44003.dart:6:8: Error: The method 'foo' isn't defined for the class 'List<String>'.
+ - 'List' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+  args.foo('1', 2);
+       ^^^";
+}
+static method _extension#0|foo(lowered final core::List<core::String*>* #this, core::String* bar) → void {
+  core::print(1);
+}
+static method _extension#0|get#foo(lowered final core::List<core::String*>* #this) → (core::String*) →* void
+  return (core::String* bar) → void => self::_extension#0|foo(#this, bar);
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect
new file mode 100644
index 0000000..c57b097
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline.expect
@@ -0,0 +1,8 @@
+void test(List<String> args) {}
+
+extension on List<String> {
+  void foo(String bar) {}
+  void foo(String baz, int a) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..47d69a0
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44003.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+extension on List<String> {
+  void foo(String bar) {}
+  void foo(String baz, int a) {}
+}
+
+main() {}
+void test(List<String> args) {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart b/pkg/front_end/testcases/extensions/issue44844.dart
new file mode 100644
index 0000000..14f590b
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart
@@ -0,0 +1,14 @@
+// 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.
+
+extension on int {
+  static int foo = 2;
+  void foo() {}
+}
+
+void test() {
+  3.foo();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.outline.expect b/pkg/front_end/testcases/extensions/issue44844.dart.outline.expect
new file mode 100644
index 0000000..33b1925
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.outline.expect
@@ -0,0 +1,22 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:7:8: Error: 'foo' is already declared in this scope.
+//   void foo() {}
+//        ^^^
+// pkg/front_end/testcases/extensions/issue44844.dart:6:14: Context: Previous declaration of 'foo'.
+//   static int foo = 2;
+//              ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::int* {
+  static field foo = self::_extension#0|foo;
+}
+static field core::int* _extension#0|foo;
+static method test() → void
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.strong.expect b/pkg/front_end/testcases/extensions/issue44844.dart.strong.expect
new file mode 100644
index 0000000..b967f55
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.strong.expect
@@ -0,0 +1,30 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:7:8: Error: 'foo' is already declared in this scope.
+//   void foo() {}
+//        ^^^
+// pkg/front_end/testcases/extensions/issue44844.dart:6:14: Context: Previous declaration of 'foo'.
+//   static int foo = 2;
+//              ^^^
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+//   3.foo();
+//     ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::int* {
+  static field foo = self::_extension#0|foo;
+}
+static field core::int* _extension#0|foo;
+static method test() → void {
+  invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+  3.foo();
+    ^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/issue44844.dart.strong.transformed.expect
new file mode 100644
index 0000000..b967f55
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.strong.transformed.expect
@@ -0,0 +1,30 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:7:8: Error: 'foo' is already declared in this scope.
+//   void foo() {}
+//        ^^^
+// pkg/front_end/testcases/extensions/issue44844.dart:6:14: Context: Previous declaration of 'foo'.
+//   static int foo = 2;
+//              ^^^
+//
+// pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
+// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+//   3.foo();
+//     ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+extension _extension#0 on core::int* {
+  static field foo = self::_extension#0|foo;
+}
+static field core::int* _extension#0|foo;
+static method test() → void {
+  invalid-expression "pkg/front_end/testcases/extensions/issue44844.dart:11:5: Error: The method 'foo' isn't defined for the class 'int'.
+Try correcting the name to the name of an existing method, or defining a method named 'foo'.
+  3.foo();
+    ^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect
new file mode 100644
index 0000000..53fe40b
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+extension on int {
+  static int foo = 2;
+  void foo() {}
+}
+
+void test() {}
+main() {}
diff --git a/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..401a830
--- /dev/null
+++ b/pkg/front_end/testcases/extensions/issue44844.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+extension on int {
+  static int foo = 2;
+  void foo() {}
+}
+
+main() {}
+void test() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
index 9e770ac..c1106cd 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.outline.expect
@@ -237,7 +237,7 @@
 //   int Foo;
 //       ^^^
 //
-// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with member 'Foo'.
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with the implicit setter of the field 'Foo'.
 //   set Foo {
 //       ^
 //
@@ -245,6 +245,10 @@
 //   int A, Foo, B;
 //          ^
 //
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:7: Error: Conflicts with the implicit setter of the field 'Foo'.
+//   set Foo => 0;
+//       ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -261,8 +265,6 @@
     ;
   get Foo() → dynamic
     ;
-  set Foo(dynamic #synthetic) → void
-    ;
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
index b1866d9..e9229ec 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.expect
@@ -237,7 +237,7 @@
 //   int Foo;
 //       ^^^
 //
-// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with member 'Foo'.
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with the implicit setter of the field 'Foo'.
 //   set Foo {
 //       ^
 //
@@ -245,6 +245,10 @@
 //   int A, Foo, B;
 //          ^
 //
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:7: Error: Conflicts with the implicit setter of the field 'Foo'.
+//   set Foo => 0;
+//       ^
+//
 // pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:5:13: Error: 'initializer' isn't an instance field of this class.
 //   foo.x() : initializer = true {
 //             ^^^^^^^^^^^
@@ -354,12 +358,6 @@
                           ^";
   get Foo() → dynamic
     return 0;
-  set Foo(dynamic #synthetic) → void {
-    invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:11: Error: A setter should have exactly one formal parameter.
-  set Foo => 0;
-          ^";
-    return 0;
-  }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
index b1866d9..e9229ec 100644
--- a/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart.strong.transformed.expect
@@ -237,7 +237,7 @@
 //   int Foo;
 //       ^^^
 //
-// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with member 'Foo'.
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:24:7: Error: Conflicts with the implicit setter of the field 'Foo'.
 //   set Foo {
 //       ^
 //
@@ -245,6 +245,10 @@
 //   int A, Foo, B;
 //          ^
 //
+// pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:7: Error: Conflicts with the implicit setter of the field 'Foo'.
+//   set Foo => 0;
+//       ^
+//
 // pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:5:13: Error: 'initializer' isn't an instance field of this class.
 //   foo.x() : initializer = true {
 //             ^^^^^^^^^^^
@@ -354,12 +358,6 @@
                           ^";
   get Foo() → dynamic
     return 0;
-  set Foo(dynamic #synthetic) → void {
-    invalid-expression "pkg/front_end/testcases/general/error_recovery/constructor_recovery_bad_name_general.crash_dart:23:11: Error: A setter should have exactly one formal parameter.
-  set Foo => 0;
-          ^";
-    return 0;
-  }
   abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
   abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
   abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart b/pkg/front_end/testcases/general/final_field_setter.dart
new file mode 100644
index 0000000..9dcaad1
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart
@@ -0,0 +1,17 @@
+// Copyright (c) 2020, 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.
+
+final int field = 42;
+void set field(int value) {}
+
+class Class {
+  final int field = 42;
+  void set field(int value) {}
+}
+
+main() {
+  field = field;
+  var c = new Class();
+  c.field = field;
+}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.outline.expect b/pkg/front_end/testcases/general/final_field_setter.dart.outline.expect
new file mode 100644
index 0000000..e26476e
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.outline.expect
@@ -0,0 +1,26 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  final field core::int* field;
+  synthetic constructor •() → self::Class*
+    ;
+  set field(core::int* value) → void
+    ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static final field core::int* field;
+static set field(core::int* value) → void
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.strong.expect b/pkg/front_end/testcases/general/final_field_setter.dart.strong.expect
new file mode 100644
index 0000000..b2023bc
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.strong.expect
@@ -0,0 +1,28 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  final field core::int* field = 42;
+  synthetic constructor •() → self::Class*
+    : super core::Object::•()
+    ;
+  set field(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static final field core::int* field = 42;
+static set field(core::int* value) → void {}
+static method main() → dynamic {
+  self::field = self::field;
+  self::Class* c = new self::Class::•();
+  c.{self::Class::field} = self::field;
+}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/general/final_field_setter.dart.strong.transformed.expect
new file mode 100644
index 0000000..b2023bc
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.strong.transformed.expect
@@ -0,0 +1,28 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Class extends core::Object {
+  final field core::int* field = 42;
+  synthetic constructor •() → self::Class*
+    : super core::Object::•()
+    ;
+  set field(core::int* value) → void {}
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static final field core::int* field = 42;
+static set field(core::int* value) → void {}
+static method main() → dynamic {
+  self::field = self::field;
+  self::Class* c = new self::Class::•();
+  c.{self::Class::field} = self::field;
+}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline.expect b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline.expect
new file mode 100644
index 0000000..08e9a6b
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline.expect
@@ -0,0 +1,9 @@
+final int field = 42;
+void set field(int value) {}
+
+class Class {
+  final int field = 42;
+  void set field(int value) {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..41e7dd1
--- /dev/null
+++ b/pkg/front_end/testcases/general/final_field_setter.dart.textual_outline_modelled.expect
@@ -0,0 +1,8 @@
+class Class {
+  final int field = 42;
+  void set field(int value) {}
+}
+
+final int field = 42;
+main() {}
+void set field(int value) {}
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart b/pkg/front_end/testcases/nnbd/duplicates_instance.dart
index 274496d..7a47ac6 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart
@@ -100,8 +100,8 @@
 main() {
   Class c = new Class();
   c.instanceFieldAndSetter1 = 0;
-  expect(2, result);
-  expect(1, c.instanceFieldAndSetter1);
+  expect(null, result);
+  expect(0, c.instanceFieldAndSetter1);
 
   result = null;
   c.instanceFieldAndSetter2 = 0;
@@ -110,8 +110,8 @@
 
   result = null;
   c.instanceLateFinalFieldAndSetter1 = 0;
-  expect(2, result);
-  throws(() => c.instanceLateFinalFieldAndSetter1);
+  expect(null, result);
+  expect(0, c.instanceLateFinalFieldAndSetter1);
 
   result = null;
   c.instanceLateFinalFieldAndSetter2 = 0;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
index 4894f32..87fab42 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.outline.expect
@@ -58,7 +58,7 @@
 //   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
 //   void set instanceFieldAndSetter1(int value) {
 //            ^
 //
@@ -66,7 +66,7 @@
 //   int instanceFieldAndSetter1 = 1;
 //       ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
 //   void set instanceFieldAndSetter2(int value) {
 //            ^
 //
@@ -74,6 +74,22 @@
 //   int instanceFieldAndSetter2 = 1;
 //       ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
 //   void set instanceMethodAndSetter1(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -108,14 +124,6 @@
     ;
   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
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.expect
@@ -58,7 +58,7 @@
 //   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
 //   void set instanceFieldAndSetter1(int value) {
 //            ^
 //
@@ -66,7 +66,7 @@
 //   int instanceFieldAndSetter1 = 1;
 //       ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
 //   void set instanceFieldAndSetter2(int value) {
 //            ^
 //
@@ -74,6 +74,22 @@
 //   int instanceFieldAndSetter2 = 1;
 //       ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
 //   void set instanceMethodAndSetter1(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
   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;
   }
@@ -301,16 +305,16 @@
 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::expect(null, self::result);
+  self::expect(0, 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::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::result);
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
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.strong.transformed.expect
@@ -58,7 +58,7 @@
 //   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
 //   void set instanceFieldAndSetter1(int value) {
 //            ^
 //
@@ -66,7 +66,7 @@
 //   int instanceFieldAndSetter1 = 1;
 //       ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
 //   void set instanceFieldAndSetter2(int value) {
 //            ^
 //
@@ -74,6 +74,22 @@
 //   int instanceFieldAndSetter2 = 1;
 //       ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
 //   void set instanceMethodAndSetter1(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
   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;
   }
@@ -301,16 +305,16 @@
 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::expect(null, self::result);
+  self::expect(0, 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::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::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
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.expect
@@ -58,7 +58,7 @@
 //   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
 //   void set instanceFieldAndSetter1(int value) {
 //            ^
 //
@@ -66,7 +66,7 @@
 //   int instanceFieldAndSetter1 = 1;
 //       ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
 //   void set instanceFieldAndSetter2(int value) {
 //            ^
 //
@@ -74,6 +74,22 @@
 //   int instanceFieldAndSetter2 = 1;
 //       ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
 //   void set instanceMethodAndSetter1(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
   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;
   }
@@ -301,16 +305,16 @@
 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::expect(null, self::result);
+  self::expect(0, 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::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::result);
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
index 7fd4517..383d3de 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance.dart.weak.transformed.expect
@@ -58,7 +58,7 @@
 //   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
 //   void set instanceFieldAndSetter1(int value) {
 //            ^
 //
@@ -66,7 +66,7 @@
 //   int instanceFieldAndSetter1 = 1;
 //       ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
 //   void set instanceFieldAndSetter2(int value) {
 //            ^
 //
@@ -74,6 +74,22 @@
 //   int instanceFieldAndSetter2 = 1;
 //       ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:37:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:36:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:41:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance.dart:45:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_instance.dart:73:12: Error: 'instanceMethodAndSetter1' is already declared in this scope.
 //   void set instanceMethodAndSetter1(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -210,18 +226,6 @@
   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;
   }
@@ -301,16 +305,16 @@
 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::expect(null, self::result);
+  self::expect(0, 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::expect(null, self::result);
+  self::expect(0, c.{self::Class::instanceLateFinalFieldAndSetter1});
   self::result = null;
   c.{self::Class::instanceLateFinalFieldAndSetter2} = 0;
   self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
index 41ba326..007705d 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart
@@ -80,52 +80,33 @@
 
 test() {
   int c = 0;
+  c.instanceMethod();
+  (c.instanceMethod)();
+  c.instanceGetter;
+  c.instanceSetter = 0;
   c.instanceField;
   c.instanceField = 0;
   c.instanceFieldAndSetter1;
+  c.instanceFieldAndSetter1 = 0;
   c.instanceFieldAndSetter2;
+  c.instanceFieldAndSetter2 = 0;
   c.instanceLateFinalFieldAndSetter1;
+  c.instanceLateFinalFieldAndSetter1 = 0;
   c.instanceLateFinalFieldAndSetter2;
+  c.instanceLateFinalFieldAndSetter2 = 0;
   c.instanceDuplicateFieldAndSetter;
   c.instanceFieldAndDuplicateSetter;
+  c.instanceFieldAndDuplicateSetter = 0;
   c.instanceDuplicateFieldAndDuplicateSetter;
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
 }
 
 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);
+  expect(3, result);
 
   result = null;
   expect(1, c.instanceMethodAndSetter1());
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
index bd4f3ab..1337a95 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.outline.expect
@@ -113,7 +113,7 @@
 //   void set instanceDuplicateFieldAndDuplicateSetter(int value) {
 //            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with member 'instanceFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:26:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter1'.
 //   void set instanceFieldAndSetter1(int value) {
 //            ^
 //
@@ -121,7 +121,7 @@
 //   int instanceFieldAndSetter1 = 1;
 //       ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with member 'instanceFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:30:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter2'.
 //   void set instanceFieldAndSetter2(int value) {
 //            ^
 //
@@ -129,6 +129,22 @@
 //   int instanceFieldAndSetter2 = 1;
 //       ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:71:12: Error: Conflicts with member 'instanceMethodAndSetter1'.
 //   void set instanceMethodAndSetter1(int value) {
 //            ^
@@ -165,10 +181,6 @@
   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;
@@ -192,14 +204,6 @@
   ;
 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
diff --git a/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.expect
@@ -0,0 +1,432 @@
+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 the implicit setter of the field '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 the implicit setter of the field '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:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
+// 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;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// 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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+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 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 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+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 = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+  return 1;
+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
+  return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+  self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+  return 1;
+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 {
+  self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+  return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+  return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+  core::int c = 0;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  core::int c = 0;
+  self::result = null;
+  self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+  self::expect(3, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+  self::Extension|set#instanceMethodAndSetter1(c, 0);
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+  self::Extension|set#instanceMethodAndSetter2(c, 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.strong.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.strong.transformed.expect
@@ -0,0 +1,432 @@
+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 the implicit setter of the field '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 the implicit setter of the field '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:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
+// 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;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// 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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+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 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 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+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 = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+  return 1;
+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
+  return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+  self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+  return 1;
+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 {
+  self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+  return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+  return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+  core::int c = 0;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  core::int c = 0;
+  self::result = null;
+  self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+  self::expect(3, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+  self::Extension|set#instanceMethodAndSetter1(c, 0);
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+  self::Extension|set#instanceMethodAndSetter2(c, 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.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.expect
@@ -0,0 +1,432 @@
+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 the implicit setter of the field '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 the implicit setter of the field '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:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
+// 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;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// 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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+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 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 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+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 = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+  return 1;
+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
+  return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+  self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+  return 1;
+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 {
+  self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+  return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+  return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+  core::int c = 0;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  core::int c = 0;
+  self::result = null;
+  self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+  self::expect(3, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+  self::Extension|set#instanceMethodAndSetter1(c, 0);
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+  self::Extension|set#instanceMethodAndSetter2(c, 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.weak.transformed.expect b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect
new file mode 100644
index 0000000..6e1d27e
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart.weak.transformed.expect
@@ -0,0 +1,432 @@
+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 the implicit setter of the field '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 the implicit setter of the field '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:36:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter1'.
+//   void set instanceLateFinalFieldAndSetter1(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:35:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter1'.
+//   late final int instanceLateFinalFieldAndSetter1;
+//                  ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:40:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter2'.
+//   void set instanceLateFinalFieldAndSetter2(int value) {
+//            ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:43:18: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter2'.
+//   late final int instanceLateFinalFieldAndSetter2;
+//                  ^
+//
+// 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;
+//       ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+// 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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+//   (c.instanceMethod)();
+//      ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+//   c.instanceGetter;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+//   c.instanceSetter = 0;
+//     ^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+//   c.instanceField;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+//   c.instanceField = 0;
+//     ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+//   c.instanceFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+//   c.instanceFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+//   c.instanceLateFinalFieldAndSetter1 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+//   c.instanceLateFinalFieldAndSetter2 = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+//   c.instanceDuplicateFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+//   c.instanceFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+//   c.instanceDuplicateFieldAndDuplicateSetter = 0;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+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 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 = 1;
+static field core::int Extension|instanceFieldAndSetter2 = 1;
+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 = 1;
+static final field core::int Extension|instanceDuplicateFieldAndDuplicateSetter;
+static method Extension|instanceMethod(lowered final core::int #this) → core::int
+  return 1;
+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
+  return 1;
+static method Extension|set#instanceSetter(lowered final core::int #this, dynamic value) → void {
+  self::result = 1;
+}
+static method Extension|set#instanceDuplicateFieldAndSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|set#instanceFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|set#instanceDuplicateFieldAndDuplicateSetter(lowered final core::int #this, core::int value) → void {
+  self::result = 3;
+}
+static method Extension|instanceMethodAndSetter1(lowered final core::int #this) → core::int
+  return 1;
+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 {
+  self::result = 2;
+}
+static method Extension|set#instanceMethodAndSetter2(lowered final core::int #this, core::int value) → void {
+  self::result = 2;
+}
+static method Extension|instanceMethodAndSetter2(lowered final core::int #this) → core::int
+  return 1;
+static method Extension|get#instanceMethodAndSetter2(lowered final core::int #this) → () → core::int
+  return () → core::int => self::Extension|instanceMethodAndSetter2(#this);
+static method test() → dynamic {
+  core::int c = 0;
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:83:5: Error: The method 'instanceMethod' isn't defined for the class 'int'.
+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_extension.dart:84:6: Error: The getter 'instanceMethod' 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 'instanceMethod'.
+  (c.instanceMethod)();
+     ^^^^^^^^^^^^^^".call();
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:85:5: Error: The getter 'instanceGetter' 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 'instanceGetter'.
+  c.instanceGetter;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:86:5: Error: The setter 'instanceSetter' 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 'instanceSetter'.
+  c.instanceSetter = 0;
+    ^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:87:5: Error: The getter 'instanceField' 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 'instanceField'.
+  c.instanceField;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:88:5: Error: The setter 'instanceField' 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 'instanceField'.
+  c.instanceField = 0;
+    ^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:89:5: Error: The getter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:90:5: Error: The setter 'instanceFieldAndSetter1' 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 'instanceFieldAndSetter1'.
+  c.instanceFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:91:5: Error: The getter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:92:5: Error: The setter 'instanceFieldAndSetter2' 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 'instanceFieldAndSetter2'.
+  c.instanceFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:93:5: Error: The getter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:94:5: Error: The setter 'instanceLateFinalFieldAndSetter1' 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 'instanceLateFinalFieldAndSetter1'.
+  c.instanceLateFinalFieldAndSetter1 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:95:5: Error: The getter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:96:5: Error: The setter 'instanceLateFinalFieldAndSetter2' 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 'instanceLateFinalFieldAndSetter2'.
+  c.instanceLateFinalFieldAndSetter2 = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:97:5: Error: The getter 'instanceDuplicateFieldAndSetter' 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 'instanceDuplicateFieldAndSetter'.
+  c.instanceDuplicateFieldAndSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:98:5: Error: The getter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:99:5: Error: The setter 'instanceFieldAndDuplicateSetter' 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 'instanceFieldAndDuplicateSetter'.
+  c.instanceFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:100:5: Error: The getter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/duplicates_instance_extension.dart:101:5: Error: The setter 'instanceDuplicateFieldAndDuplicateSetter' 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 'instanceDuplicateFieldAndDuplicateSetter'.
+  c.instanceDuplicateFieldAndDuplicateSetter = 0;
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+}
+static method main() → dynamic {
+  core::int c = 0;
+  self::result = null;
+  self::Extension|set#instanceDuplicateFieldAndSetter(c, 0);
+  self::expect(3, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter1(c));
+  self::Extension|set#instanceMethodAndSetter1(c, 0);
+  self::expect(2, self::result);
+  self::result = null;
+  self::expect(1, self::Extension|instanceMethodAndSetter2(c));
+  self::Extension|set#instanceMethodAndSetter2(c, 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_static.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
index 777b4c0..315aac2 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.outline.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,21 +74,21 @@
 //   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:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(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:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
 //
-// 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:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(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:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
 //
 // pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
 //   static void set staticMethodAndSetter1(int value) {
@@ -124,14 +124,6 @@
     ;
   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
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,21 +74,21 @@
 //   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:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(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:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
 //
-// 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:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(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:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
 //
 // pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
 //   static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
   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;
   }
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
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.strong.transformed.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,21 +74,21 @@
 //   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:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(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:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
 //
-// 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:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(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:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
 //
 // pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
 //   static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
   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;
   }
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,21 +74,21 @@
 //   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:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(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:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
 //
-// 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:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(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:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
 //
 // pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
 //   static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
   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;
   }
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
index a977d92..21e3973 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static.dart.weak.transformed.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,21 +74,21 @@
 //   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:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(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:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
 //
-// 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:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(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:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
 //
 // pkg/front_end/testcases/nnbd/duplicates_static.dart:73:19: Error: 'staticMethodAndSetter1' is already declared in this scope.
 //   static void set staticMethodAndSetter1(int value) {
@@ -194,18 +194,6 @@
   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;
   }
diff --git a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
index a0d4145..55ff74c 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart
@@ -116,8 +116,8 @@
 
   result = null;
   Extension.staticLateFinalFieldAndSetter2 = 0;
-  expect(2, result);
-  throws(() => Extension.staticLateFinalFieldAndSetter2);
+  expect(null, result);
+  expect(0, Extension.staticLateFinalFieldAndSetter2);
 
   expect(1, Extension.staticMethodAndSetter1());
 
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
index 21ee0cd..b61b5c9 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.outline.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,6 +74,22 @@
 //   static int staticFieldAndSetter2 = 1;
 //              ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
 //   static void set staticMethodAndSetter1(int value) {
 //                   ^
@@ -107,10 +123,6 @@
   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;
@@ -132,14 +144,6 @@
   ;
 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
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
index f3a7da5..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.strong.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,6 +74,22 @@
 //   static int staticFieldAndSetter2 = 1;
 //              ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
 //   static void set staticMethodAndSetter1(int value) {
 //                   ^
@@ -175,10 +191,6 @@
   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;
@@ -201,18 +213,6 @@
 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;
 }
@@ -289,8 +289,8 @@
   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(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
   self::expect(1, self::Extension|staticMethodAndSetter1());
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
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
index f3a7da5..2f9b306 100644
--- 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
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,6 +74,22 @@
 //   static int staticFieldAndSetter2 = 1;
 //              ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
 //   static void set staticMethodAndSetter1(int value) {
 //                   ^
@@ -175,10 +191,6 @@
   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;
@@ -201,18 +213,6 @@
 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;
 }
@@ -289,8 +289,8 @@
   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(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
   self::expect(1, self::Extension|staticMethodAndSetter1());
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
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
index f3a7da5..2f9b306 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_static_extension.dart.weak.expect
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,6 +74,22 @@
 //   static int staticFieldAndSetter2 = 1;
 //              ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
 //   static void set staticMethodAndSetter1(int value) {
 //                   ^
@@ -175,10 +191,6 @@
   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;
@@ -201,18 +213,6 @@
 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;
 }
@@ -289,8 +289,8 @@
   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(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
   self::expect(1, self::Extension|staticMethodAndSetter1());
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
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
index f3a7da5..2f9b306 100644
--- 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
@@ -58,7 +58,7 @@
 //   static void set staticDuplicateFieldAndDuplicateSetter(int value) {
 //                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with member 'staticFieldAndSetter1'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:26:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter1'.
 //   static void set staticFieldAndSetter1(int value) {
 //                   ^
 //
@@ -66,7 +66,7 @@
 //   static int staticFieldAndSetter1 = 1;
 //              ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with member 'staticFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:30:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter2'.
 //   static void set staticFieldAndSetter2(int value) {
 //                   ^
 //
@@ -74,6 +74,22 @@
 //   static int staticFieldAndSetter2 = 1;
 //              ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:37:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter1'.
+//   static void set staticLateFinalFieldAndSetter1(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:36:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter1'.
+//   static late final int staticLateFinalFieldAndSetter1;
+//                         ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:41:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter2'.
+//   static void set staticLateFinalFieldAndSetter2(int value) {
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:45:25: Error: Conflicts with setter 'staticLateFinalFieldAndSetter2'.
+//   static late final int staticLateFinalFieldAndSetter2;
+//                         ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_static_extension.dart:73:19: Error: Conflicts with member 'staticMethodAndSetter1'.
 //   static void set staticMethodAndSetter1(int value) {
 //                   ^
@@ -175,10 +191,6 @@
   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;
@@ -201,18 +213,6 @@
 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;
 }
@@ -289,8 +289,8 @@
   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(null, self::result);
+  self::expect(0, self::Extension|staticLateFinalFieldAndSetter2);
   self::expect(1, self::Extension|staticMethodAndSetter1());
   self::expect(1, self::Extension|staticMethodAndSetter2());
 }
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
index f66cc15..bcd891f 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart
@@ -109,8 +109,8 @@
 
   result = null;
   topLevelLateFinalFieldAndSetter1 = 0;
-  expect(2, result);
-  throws(() => topLevelLateFinalFieldAndSetter1);
+  expect(null, result);
+  expect(0, topLevelLateFinalFieldAndSetter1);
 
   result = null;
   topLevelLateFinalFieldAndSetter2 = 0;
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
index c394d09..bf1599b 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.outline.expect
@@ -64,7 +64,7 @@
 //
 // 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'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
 // void set topLevelFieldAndSetter1(int value) {
 //          ^
 //
@@ -72,7 +72,7 @@
 // int topLevelFieldAndSetter1 = 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
 // void set topLevelFieldAndSetter2(int value) {
 //          ^
 //
@@ -80,6 +80,38 @@
 // int topLevelFieldAndSetter2 = 1;
 //     ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+//     ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -99,14 +131,6 @@
   ;
 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
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.expect
@@ -64,7 +64,7 @@
 //
 // 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'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
 // void set topLevelFieldAndSetter1(int value) {
 //          ^
 //
@@ -72,7 +72,7 @@
 // int topLevelFieldAndSetter1 = 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
 // void set topLevelFieldAndSetter2(int value) {
 //          ^
 //
@@ -80,6 +80,38 @@
 // int topLevelFieldAndSetter2 = 1;
 //     ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+//     ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
@@ -152,18 +184,6 @@
 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;
 }
@@ -236,8 +256,8 @@
   self::expect(0, self::topLevelFieldAndSetter2);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter1 = 0;
-  self::expect(2, self::result);
-  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter1);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter2 = 0;
   self::expect(null, self::result);
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
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.strong.transformed.expect
@@ -64,7 +64,7 @@
 //
 // 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'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
 // void set topLevelFieldAndSetter1(int value) {
 //          ^
 //
@@ -72,7 +72,7 @@
 // int topLevelFieldAndSetter1 = 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
 // void set topLevelFieldAndSetter2(int value) {
 //          ^
 //
@@ -80,6 +80,38 @@
 // int topLevelFieldAndSetter2 = 1;
 //     ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+//     ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
@@ -152,18 +184,6 @@
 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;
 }
@@ -236,8 +256,8 @@
   self::expect(0, self::topLevelFieldAndSetter2);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter1 = 0;
-  self::expect(2, self::result);
-  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter1);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter2 = 0;
   self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.expect
@@ -64,7 +64,7 @@
 //
 // 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'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
 // void set topLevelFieldAndSetter1(int value) {
 //          ^
 //
@@ -72,7 +72,7 @@
 // int topLevelFieldAndSetter1 = 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
 // void set topLevelFieldAndSetter2(int value) {
 //          ^
 //
@@ -80,6 +80,38 @@
 // int topLevelFieldAndSetter2 = 1;
 //     ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+//     ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
@@ -152,18 +184,6 @@
 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;
 }
@@ -236,8 +256,8 @@
   self::expect(0, self::topLevelFieldAndSetter2);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter1 = 0;
-  self::expect(2, self::result);
-  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter1);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter2 = 0;
   self::expect(null, self::result);
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
index c79ae01..1ad3410 100644
--- a/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/duplicates_toplevel.dart.weak.transformed.expect
@@ -64,7 +64,7 @@
 //
 // 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'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:25:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter1'.
 // void set topLevelFieldAndSetter1(int value) {
 //          ^
 //
@@ -72,7 +72,7 @@
 // int topLevelFieldAndSetter1 = 1;
 //     ^
 //
-// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with member 'topLevelFieldAndSetter2'.
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:29:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter2'.
 // void set topLevelFieldAndSetter2(int value) {
 //          ^
 //
@@ -80,6 +80,38 @@
 // int topLevelFieldAndSetter2 = 1;
 //     ^
 //
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:36:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter1'.
+// void set topLevelLateFinalFieldAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:35:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter1'.
+// late final int topLevelLateFinalFieldAndSetter1;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter2'.
+// void set topLevelLateFinalFieldAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:44:16: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter2'.
+// late final int topLevelLateFinalFieldAndSetter2;
+//                ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:72:10: Error: Conflicts with member 'topLevelMethodAndSetter1'.
+// void set topLevelMethodAndSetter1(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:71:5: Error: Conflicts with setter 'topLevelMethodAndSetter1'.
+// int topLevelMethodAndSetter1() => 1;
+//     ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:76:10: Error: Conflicts with member 'topLevelMethodAndSetter2'.
+// void set topLevelMethodAndSetter2(int value) {
+//          ^
+//
+// pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:80:5: Error: Conflicts with setter 'topLevelMethodAndSetter2'.
+// int topLevelMethodAndSetter2() => 1;
+//     ^
+//
 // pkg/front_end/testcases/nnbd/duplicates_toplevel.dart:83:3: Error: Can't use 'topLevelMethod' because it is declared more than once.
 //   topLevelMethod();
 //   ^
@@ -152,18 +184,6 @@
 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;
 }
@@ -236,8 +256,8 @@
   self::expect(0, self::topLevelFieldAndSetter2);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter1 = 0;
-  self::expect(2, self::result);
-  self::throws(() → core::int => self::topLevelLateFinalFieldAndSetter1);
+  self::expect(null, self::result);
+  self::expect(0, self::topLevelLateFinalFieldAndSetter1);
   self::result = null;
   self::topLevelLateFinalFieldAndSetter2 = 0;
   self::expect(null, self::result);
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart
new file mode 100644
index 0000000..6d6890d
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart
@@ -0,0 +1,10 @@
+// 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.
+
+part 'field_setter_conflict_part.dart';
+
+void set topLevelFieldInPartSetterInMain(int? value) {}
+int? topLevelFieldInMainSetterInPart;
+
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.outline.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.outline.expect
new file mode 100644
index 0000000..43a81be
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.outline.expect
@@ -0,0 +1,28 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+//      ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+//      ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.transformed.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.strong.transformed.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+//      ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline.expect
new file mode 100644
index 0000000..c56d4f4
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+part 'field_setter_conflict_part.dart';
+
+void set topLevelFieldInPartSetterInMain(int? value) {}
+int? topLevelFieldInMainSetterInPart;
+main() {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..fdf5fdf
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.textual_outline_modelled.expect
@@ -0,0 +1,5 @@
+part 'field_setter_conflict_part.dart';
+
+int? topLevelFieldInMainSetterInPart;
+main() {}
+void set topLevelFieldInPartSetterInMain(int? value) {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+//      ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.transformed.expect
new file mode 100644
index 0000000..4dec1df
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict.dart.weak.transformed.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:7:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInPartSetterInMain'.
+// void set topLevelFieldInPartSetterInMain(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:39:6: Error: Conflicts with setter 'topLevelFieldInPartSetterInMain'.
+// int? topLevelFieldInPartSetterInMain;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart:40:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldInMainSetterInPart'.
+// void set topLevelFieldInMainSetterInPart(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_setter_conflict.dart:8:6: Error: Conflicts with setter 'topLevelFieldInMainSetterInPart'.
+// int? topLevelFieldInMainSetterInPart;
+//      ^
+//
+import self as self;
+import "dart:core" as core;
+
+part field_setter_conflict_part.dart;
+static field core::int? topLevelFieldInMainSetterInPart;
+static field core::int? topLevelFieldInPartSetterInMain /* from org-dartlang-testcase:///field_setter_conflict_part.dart */;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart b/pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart
new file mode 100644
index 0000000..a02614f
--- /dev/null
+++ b/pkg/front_end/testcases/nnbd/field_setter_conflict_part.dart
@@ -0,0 +1,40 @@
+// 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.
+
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+// Long comment to increase offset of part declarations.
+
+part of 'field_setter_conflict.dart';
+
+int? topLevelFieldInPartSetterInMain;
+void set topLevelFieldInMainSetterInPart(int? value) {}
diff --git a/pkg/front_end/testcases/nnbd/field_vs_setter.dart b/pkg/front_end/testcases/nnbd/field_vs_setter.dart
index c310b47..17d64ba 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart
@@ -5,80 +5,170 @@
 int? topLevelFieldAndSetter;
 void set topLevelFieldAndSetter(int? value) {}
 
+int? topLevelFieldAndDuplicateSetter;
+void set topLevelFieldAndDuplicateSetter(int? value) {}
+void set topLevelFieldAndDuplicateSetter(int? value) {}
+
 late final int? topLevelLateFinalFieldAndSetter;
 void set topLevelLateFinalFieldAndSetter(int? value) {}
 
+late final int? topLevelLateFinalFieldAndDuplicateSetter;
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+
 class Class {
   int? instanceFieldAndSetter;
   void set instanceFieldAndSetter(int? value) {}
 
+  int? instanceFieldAndDuplicateSetter;
+  void set instanceFieldAndDuplicateSetter(int? value) {}
+  void set instanceFieldAndDuplicateSetter(int? value) {}
+
   late final int? instanceLateFinalFieldAndSetter;
   void set instanceLateFinalFieldAndSetter(int? value) {}
 
+  late final int? instanceLateFinalFieldAndDuplicateSetter;
+  void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+  void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+
   static int? staticFieldAndSetter;
   static void set staticFieldAndSetter(int? value) {}
 
+  static int? staticFieldAndDuplicateSetter;
+  static void set staticFieldAndDuplicateSetter(int? value) {}
+  static void set staticFieldAndDuplicateSetter(int? value) {}
+
   static late final int? staticLateFinalFieldAndSetter;
   static void set staticLateFinalFieldAndSetter(int? value) {}
 
+  static late final int? staticLateFinalFieldAndDuplicateSetter;
+  static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+  static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+
   static int? staticFieldAndInstanceSetter;
   void set staticFieldAndInstanceSetter(int? value) {}
 
+  static int? staticFieldAndInstanceDuplicateSetter;
+  void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+  void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+
   int? instanceFieldAndStaticSetter;
   static void set instanceFieldAndStaticSetter(int? value) {}
+
+  int? instanceFieldAndStaticDuplicateSetter;
+  static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+  static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
 }
 
 extension Extension on int? {
   int? extensionInstanceFieldAndSetter;
   void set extensionInstanceFieldAndSetter(int? value) {}
 
+  int? extensionInstanceFieldAndDuplicateSetter;
+  void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+  void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+
   static int? extensionStaticFieldAndSetter;
   static void set extensionStaticFieldAndSetter(int? value) {}
 
+  static int? extensionStaticFieldAndDuplicateSetter;
+  static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+  static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+
   static late final int? extensionStaticLateFinalFieldAndSetter;
-  static void set extensionStaticFieldAndSetter(int? value) {}
+  static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+
+  static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+  static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+  static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
 
   static int? extensionStaticFieldAndInstanceSetter;
   void set extensionStaticFieldAndInstanceSetter(int? value) {}
 
+  static int? extensionStaticFieldAndInstanceDuplicateSetter;
+  void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+  void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+
   int? extensionInstanceFieldAndStaticSetter;
   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+
+  int? extensionInstanceFieldAndStaticDuplicateSetter;
+  static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+  static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
 }
 
 test() {
   topLevelFieldAndSetter = topLevelFieldAndSetter;
+  topLevelFieldAndDuplicateSetter = topLevelFieldAndDuplicateSetter;
   topLevelLateFinalFieldAndSetter = topLevelLateFinalFieldAndSetter;
+  topLevelLateFinalFieldAndDuplicateSetter =
+      topLevelLateFinalFieldAndDuplicateSetter;
 
   var c = new Class();
 
   c.instanceFieldAndSetter = c.instanceFieldAndSetter;
+  c.instanceFieldAndDuplicateSetter = c.instanceFieldAndDuplicateSetter;
   c.instanceLateFinalFieldAndSetter = c.instanceLateFinalFieldAndSetter;
+  c.instanceLateFinalFieldAndDuplicateSetter =
+      c.instanceLateFinalFieldAndDuplicateSetter;
 
   Class.staticFieldAndSetter = Class.staticFieldAndSetter;
+  Class.staticFieldAndDuplicateSetter = Class.staticFieldAndDuplicateSetter;
   Class.staticLateFinalFieldAndSetter = Class.staticLateFinalFieldAndSetter;
+  Class.staticLateFinalFieldAndDuplicateSetter =
+      Class.staticLateFinalFieldAndDuplicateSetter;
 
   c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
   Class.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
 
+  c.staticFieldAndInstanceDuplicateSetter =
+      Class.staticFieldAndInstanceDuplicateSetter;
+  Class.staticFieldAndInstanceDuplicateSetter =
+      Class.staticFieldAndInstanceDuplicateSetter;
+
   Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
   c.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
 
+  Class.instanceFieldAndStaticDuplicateSetter =
+      c.instanceFieldAndStaticDuplicateSetter;
+  c.instanceFieldAndStaticDuplicateSetter =
+      c.instanceFieldAndStaticDuplicateSetter;
+
   0.extensionInstanceFieldAndSetter = 0.extensionInstanceFieldAndSetter;
+  0.extensionInstanceFieldAndDuplicateSetter =
+      0.extensionInstanceFieldAndDuplicateSetter;
 
   Extension.extensionStaticFieldAndSetter =
       Extension.extensionStaticFieldAndSetter;
+
+  Extension.extensionStaticFieldAndDuplicateSetter =
+      Extension.extensionStaticFieldAndDuplicateSetter;
+
   Extension.extensionStaticLateFinalFieldAndSetter =
       Extension.extensionStaticLateFinalFieldAndSetter;
 
+  Extension.extensionStaticLateFinalFieldAndDuplicateSetter =
+      Extension.extensionStaticLateFinalFieldAndDuplicateSetter;
+
   0.extensionStaticFieldAndInstanceSetter =
       Extension.extensionStaticFieldAndInstanceSetter;
   Extension.extensionStaticFieldAndInstanceSetter =
       Extension.extensionStaticFieldAndInstanceSetter;
 
+  0.extensionStaticFieldAndInstanceDuplicateSetter =
+      Extension.extensionStaticFieldAndInstanceDuplicateSetter;
+  Extension.extensionStaticFieldAndInstanceDuplicateSetter =
+      Extension.extensionStaticFieldAndInstanceDuplicateSetter;
+
   Extension.extensionInstanceFieldAndStaticSetter =
       0.extensionInstanceFieldAndStaticSetter;
   0.extensionInstanceFieldAndStaticSetter =
       0.extensionInstanceFieldAndStaticSetter;
+
+  Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+      0.extensionInstanceFieldAndStaticDuplicateSetter;
+  0.extensionInstanceFieldAndStaticDuplicateSetter =
+      0.extensionInstanceFieldAndStaticDuplicateSetter;
 }
 
 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
index b5f626d..3731cb56 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.outline.expect
@@ -2,88 +2,122 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64: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:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndDuplicateSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92: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:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticDuplicateSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// 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:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// 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: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 //
-// 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: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 //
-// 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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
 // void set topLevelFieldAndSetter(int? value) {}
 //          ^
 //
@@ -91,75 +125,304 @@
 // 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:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:19: Error: This static member conflicts with an instance member.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+//   int? instanceFieldAndDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+//   void set instanceLateFinalFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+//   late final int? instanceLateFinalFieldAndSetter;
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+//   late final int? instanceLateFinalFieldAndDuplicateSetter;
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+//   static int? staticFieldAndDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+//   static void set staticLateFinalFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+//   static late final int? staticLateFinalFieldAndSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+//   static late final int? staticLateFinalFieldAndDuplicateSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
+//   void set staticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+//   static int? staticFieldAndInstanceDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
 //   static void set instanceFieldAndStaticSetter(int? value) {}
-//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:8: Context: This is the instance member.
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
 //   int? instanceFieldAndStaticSetter;
-//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+//   int? instanceFieldAndStaticDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+//   int? extensionInstanceFieldAndDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+//   static int? extensionStaticFieldAndDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+//   static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+//   static late final int? extensionStaticLateFinalFieldAndSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   static int? extensionStaticFieldAndInstanceDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   int? extensionInstanceFieldAndStaticDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
 //
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object {
   field core::int? instanceFieldAndSetter;
+  field core::int? instanceFieldAndDuplicateSetter;
   late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
   static field core::int? staticFieldAndSetter;
+  static field core::int? staticFieldAndDuplicateSetter;
   late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
   static field core::int? staticFieldAndInstanceSetter;
+  static field core::int? staticFieldAndInstanceDuplicateSetter;
   field core::int? instanceFieldAndStaticSetter;
+  field core::int? instanceFieldAndStaticDuplicateSetter;
   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;
+  field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
   static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
   static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
   static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
   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;
+  field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
 }
 static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
 late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
 static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
 static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
 late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
 static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
 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 field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}" /*isLegacy, from null */;
 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
index 3ac89ba..f523434 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.strong.expect
@@ -2,88 +2,122 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64: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:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndDuplicateSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92: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:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticDuplicateSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// 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:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// 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: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 //
-// 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: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 //
-// 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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
 // void set topLevelFieldAndSetter(int? value) {}
 //          ^
 //
@@ -91,121 +125,464 @@
 // 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.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+//   int? instanceFieldAndDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+//   void set instanceLateFinalFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+//   late final int? instanceLateFinalFieldAndSetter;
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+//   late final int? instanceLateFinalFieldAndDuplicateSetter;
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+//   static int? staticFieldAndDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+//   static void set staticLateFinalFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+//   static late final int? staticLateFinalFieldAndSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+//   static late final int? staticLateFinalFieldAndDuplicateSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
 //   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.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+//   static int? staticFieldAndInstanceDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
 //   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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+//   int? instanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+//   int? instanceFieldAndStaticDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+//   int? extensionInstanceFieldAndDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+//   static int? extensionStaticFieldAndDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+//   static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+//   static late final int? extensionStaticLateFinalFieldAndSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   static int? extensionStaticFieldAndInstanceDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   int? extensionInstanceFieldAndStaticDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+//   Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:9: Error: Can't use 'instanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+//   Class.instanceFieldAndStaticDuplicateSetter =
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+//   Class.instanceFieldAndStaticDuplicateSetter =
+//                                               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+//   Extension.extensionInstanceFieldAndStaticSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:13: Error: Can't use 'extensionInstanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+//   Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+//   Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+//                                                            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' 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;
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+//   c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
 //     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' 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 'staticFieldAndInstanceDuplicateSetter'.
+//   c.staticFieldAndInstanceDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137: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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137: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.extensionInstanceFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:139:9: Error: The getter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+//       0.extensionInstanceFieldAndDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+//   0.extensionInstanceFieldAndDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+//   0.extensionStaticFieldAndInstanceSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   0.extensionStaticFieldAndInstanceDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:166: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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:165: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 =
 //     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:171:9: Error: The getter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//       0.extensionInstanceFieldAndStaticDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   0.extensionInstanceFieldAndStaticDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object {
   field core::int? instanceFieldAndSetter = null;
+  field core::int? instanceFieldAndDuplicateSetter = null;
   late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
   static field core::int? staticFieldAndSetter = null;
+  static field core::int? staticFieldAndDuplicateSetter = null;
   late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
   static field core::int? staticFieldAndInstanceSetter = null;
+  static field core::int? staticFieldAndInstanceDuplicateSetter = null;
   field core::int? instanceFieldAndStaticSetter = null;
+  field core::int? instanceFieldAndStaticDuplicateSetter = 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;
+  field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
   static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
   static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
   static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
   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;
+  field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
 }
 static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
 late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
 static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
 static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
 late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
 static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
 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 field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
 static method test() → dynamic {
   self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+  self::topLevelFieldAndDuplicateSetter = self::topLevelFieldAndDuplicateSetter;
   self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+  self::topLevelLateFinalFieldAndDuplicateSetter = self::topLevelLateFinalFieldAndDuplicateSetter;
   self::Class c = new self::Class::•();
   c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
   c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
   self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+  self::Class::staticFieldAndDuplicateSetter = self::Class::staticFieldAndDuplicateSetter;
   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'.
+  self::Class::staticLateFinalFieldAndDuplicateSetter = self::Class::staticLateFinalFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' 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;
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+  c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  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'.
+  self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' 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 'staticFieldAndInstanceDuplicateSetter'.
+  c.staticFieldAndInstanceDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Class::staticFieldAndInstanceDuplicateSetter = self::Class::staticFieldAndInstanceDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+  Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+  Class.instanceFieldAndStaticDuplicateSetter =
+                                              ^";
+  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:137: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.extensionInstanceFieldAndSetter;
-                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" as{TypeError,ForDynamic,ForNonNullableByDefault} core::int?);
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+  0.extensionInstanceFieldAndDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  self::Extension|extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
   self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
-  self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+  self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+  0.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'.
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+  0.extensionStaticFieldAndInstanceDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+  Extension.extensionInstanceFieldAndStaticSetter =
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:165: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 =
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+  Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+                                                           ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+  0.extensionInstanceFieldAndStaticDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}"
+}
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
index 92d9d15..f523434 100644
--- 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
@@ -2,88 +2,122 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64: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:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndDuplicateSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92: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:95:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndStaticDuplicateSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// 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:97:19: Error: 'extensionInstanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Context: Previous declaration of 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// 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: Error: 'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 //
-// 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: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.
 //
-// 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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:6:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndSetter'.
 // void set topLevelFieldAndSetter(int? value) {}
 //          ^
 //
@@ -91,121 +125,464 @@
 // 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.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:8:6: Error: Conflicts with setter 'topLevelFieldAndDuplicateSetter'.
+// int? topLevelFieldAndDuplicateSetter;
+//      ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Error: Conflicts with the implicit setter of the field 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:13:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndSetter'.
+// void set topLevelLateFinalFieldAndSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:12:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndSetter'.
+// late final int? topLevelLateFinalFieldAndSetter;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:15:17: Error: Conflicts with setter 'topLevelLateFinalFieldAndDuplicateSetter'.
+// late final int? topLevelLateFinalFieldAndDuplicateSetter;
+//                 ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Error: Conflicts with the implicit setter of the field 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:21:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndSetter'.
+//   void set instanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:20:8: Error: Conflicts with setter 'instanceFieldAndSetter'.
+//   int? instanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:23:8: Error: Conflicts with setter 'instanceFieldAndDuplicateSetter'.
+//   int? instanceFieldAndDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Error: Conflicts with the implicit setter of the field 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:28:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndSetter'.
+//   void set instanceLateFinalFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:27:19: Error: Conflicts with setter 'instanceLateFinalFieldAndSetter'.
+//   late final int? instanceLateFinalFieldAndSetter;
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:30:19: Error: Conflicts with setter 'instanceLateFinalFieldAndDuplicateSetter'.
+//   late final int? instanceLateFinalFieldAndDuplicateSetter;
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Error: Conflicts with the implicit setter of the field 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:35:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndSetter'.
+//   static void set staticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:34:15: Error: Conflicts with setter 'staticFieldAndSetter'.
+//   static int? staticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:37:15: Error: Conflicts with setter 'staticFieldAndDuplicateSetter'.
+//   static int? staticFieldAndDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Error: Conflicts with the implicit setter of the field 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:42:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndSetter'.
+//   static void set staticLateFinalFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:41:26: Error: Conflicts with setter 'staticLateFinalFieldAndSetter'.
+//   static late final int? staticLateFinalFieldAndSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:26: Error: Conflicts with setter 'staticLateFinalFieldAndDuplicateSetter'.
+//   static late final int? staticLateFinalFieldAndDuplicateSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Error: Conflicts with the implicit setter of the field 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:49:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceSetter'.
 //   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.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:48:15: Error: Conflicts with setter 'staticFieldAndInstanceSetter'.
+//   static int? staticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:51:15: Error: Conflicts with setter 'staticFieldAndInstanceDuplicateSetter'.
+//   static int? staticFieldAndInstanceDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Error: Conflicts with the implicit setter of the field 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:56:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticSetter'.
 //   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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:55:8: Error: Conflicts with setter 'instanceFieldAndStaticSetter'.
+//   int? instanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:58:8: Error: Conflicts with setter 'instanceFieldAndStaticDuplicateSetter'.
+//   int? instanceFieldAndStaticDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Error: Conflicts with the implicit setter of the field 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:65:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndSetter'.
+//   void set extensionInstanceFieldAndSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64:8: Error: Conflicts with setter 'extensionInstanceFieldAndSetter'.
+//   int? extensionInstanceFieldAndSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:67:8: Error: Conflicts with setter 'extensionInstanceFieldAndDuplicateSetter'.
+//   int? extensionInstanceFieldAndDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:72:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndSetter'.
+//   static void set extensionStaticFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:71:15: Error: Conflicts with setter 'extensionStaticFieldAndSetter'.
+//   static int? extensionStaticFieldAndSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:74:15: Error: Conflicts with setter 'extensionStaticFieldAndDuplicateSetter'.
+//   static int? extensionStaticFieldAndDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:79:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndSetter'.
+//   static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:78:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndSetter'.
+//   static late final int? extensionStaticLateFinalFieldAndSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:81:26: Error: Conflicts with setter 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static late final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+//                          ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Error: Conflicts with the implicit setter of the field 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:86:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceSetter'.
+//   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:85:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceSetter'.
+//   static int? extensionStaticFieldAndInstanceSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:88:15: Error: Conflicts with setter 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   static int? extensionStaticFieldAndInstanceDuplicateSetter;
+//               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Error: Conflicts with the implicit setter of the field 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:93:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticSetter'.
+//   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticSetter'.
+//   int? extensionInstanceFieldAndStaticSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:97:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:95:8: Error: Conflicts with setter 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   int? extensionInstanceFieldAndStaticDuplicateSetter;
+//        ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:96:19: Error: Conflicts with the implicit setter of the field 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+//   Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:9: Error: Can't use 'instanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+//   Class.instanceFieldAndStaticDuplicateSetter =
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+//   Class.instanceFieldAndStaticDuplicateSetter =
+//                                               ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+//   Extension.extensionInstanceFieldAndStaticSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:13: Error: Can't use 'extensionInstanceFieldAndStaticDuplicateSetter' because it is declared more than once.
+//   Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+//   Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+//                                                            ^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' 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;
+// Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+//   c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
 //     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:66:41: Error: The getter 'extensionInstanceFieldAndSetter' isn't defined for the class 'int'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' 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 'staticFieldAndInstanceDuplicateSetter'.
+//   c.staticFieldAndInstanceDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137: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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:137: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.extensionInstanceFieldAndSetter;
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:139:9: Error: The getter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+//       0.extensionInstanceFieldAndDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+//   0.extensionInstanceFieldAndDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+//   0.extensionStaticFieldAndInstanceSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   0.extensionStaticFieldAndInstanceDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:166: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'.
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:165: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 =
 //     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:171:9: Error: The getter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//       0.extensionInstanceFieldAndStaticDuplicateSetter;
+//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+//   0.extensionInstanceFieldAndStaticDuplicateSetter =
+//     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object {
   field core::int? instanceFieldAndSetter = null;
+  field core::int? instanceFieldAndDuplicateSetter = null;
   late final [setter] field core::int? instanceLateFinalFieldAndSetter;
+  late final [setter] field core::int? instanceLateFinalFieldAndDuplicateSetter;
   static field core::int? staticFieldAndSetter = null;
+  static field core::int? staticFieldAndDuplicateSetter = null;
   late static final [setter] field core::int? staticLateFinalFieldAndSetter;
+  late static final [setter] field core::int? staticLateFinalFieldAndDuplicateSetter;
   static field core::int? staticFieldAndInstanceSetter = null;
+  static field core::int? staticFieldAndInstanceDuplicateSetter = null;
   field core::int? instanceFieldAndStaticSetter = null;
+  field core::int? instanceFieldAndStaticDuplicateSetter = 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;
+  field extensionInstanceFieldAndDuplicateSetter = self::Extension|extensionInstanceFieldAndDuplicateSetter;
   static field extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  static field extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
   static field extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
+  static field extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
   static field extensionStaticFieldAndInstanceSetter = self::Extension|extensionStaticFieldAndInstanceSetter;
+  static field extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
   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;
+  field extensionInstanceFieldAndStaticDuplicateSetter = self::Extension|extensionInstanceFieldAndStaticDuplicateSetter;
 }
 static field core::int? topLevelFieldAndSetter;
+static field core::int? topLevelFieldAndDuplicateSetter;
 late static final [setter] field core::int? topLevelLateFinalFieldAndSetter;
+late static final [setter] field core::int? topLevelLateFinalFieldAndDuplicateSetter;
 static field core::int? Extension|extensionInstanceFieldAndSetter;
+static field core::int? Extension|extensionInstanceFieldAndDuplicateSetter;
 static field core::int? Extension|extensionStaticFieldAndSetter;
+static field core::int? Extension|extensionStaticFieldAndDuplicateSetter;
 late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndSetter;
+late static final [setter] field core::int? Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
 static field core::int? Extension|extensionStaticFieldAndInstanceSetter;
+static field core::int? Extension|extensionStaticFieldAndInstanceDuplicateSetter;
 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 field core::int? Extension|extensionInstanceFieldAndStaticDuplicateSetter;
+static const field dynamic _exports# = #C1 /*isLegacy, from null */;
 static method test() → dynamic {
   self::topLevelFieldAndSetter = self::topLevelFieldAndSetter;
+  self::topLevelFieldAndDuplicateSetter = self::topLevelFieldAndDuplicateSetter;
   self::topLevelLateFinalFieldAndSetter = self::topLevelLateFinalFieldAndSetter;
+  self::topLevelLateFinalFieldAndDuplicateSetter = self::topLevelLateFinalFieldAndDuplicateSetter;
   self::Class c = new self::Class::•();
   c.{self::Class::instanceFieldAndSetter} = c.{self::Class::instanceFieldAndSetter};
+  c.{self::Class::instanceFieldAndDuplicateSetter} = c.{self::Class::instanceFieldAndDuplicateSetter};
   c.{self::Class::instanceLateFinalFieldAndSetter} = c.{self::Class::instanceLateFinalFieldAndSetter};
+  c.{self::Class::instanceLateFinalFieldAndDuplicateSetter} = c.{self::Class::instanceLateFinalFieldAndDuplicateSetter};
   self::Class::staticFieldAndSetter = self::Class::staticFieldAndSetter;
+  self::Class::staticFieldAndDuplicateSetter = self::Class::staticFieldAndDuplicateSetter;
   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'.
+  self::Class::staticLateFinalFieldAndDuplicateSetter = self::Class::staticLateFinalFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:121:5: Error: The setter 'staticFieldAndInstanceSetter' 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;
+Try correcting the name to the name of an existing setter, or defining a setter or field named 'staticFieldAndInstanceSetter'.
+  c.staticFieldAndInstanceSetter = Class.staticFieldAndInstanceSetter;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-  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'.
+  self::Class::staticFieldAndInstanceSetter = self::Class::staticFieldAndInstanceSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:124:5: Error: The setter 'staticFieldAndInstanceDuplicateSetter' 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 'staticFieldAndInstanceDuplicateSetter'.
+  c.staticFieldAndInstanceDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Class::staticFieldAndInstanceDuplicateSetter = self::Class::staticFieldAndInstanceDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:129:9: Error: Setter not found: 'instanceFieldAndStaticSetter'.
+  Class.instanceFieldAndStaticSetter = c.instanceFieldAndStaticSetter;
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  c.{self::Class::instanceFieldAndStaticSetter} = c.{self::Class::instanceFieldAndStaticSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:132:47: Error: Can't assign to this.
+  Class.instanceFieldAndStaticDuplicateSetter =
+                                              ^";
+  c.{self::Class::instanceFieldAndStaticDuplicateSetter} = c.{self::Class::instanceFieldAndStaticDuplicateSetter};
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:137: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.extensionInstanceFieldAndSetter;
-                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:138:5: Error: The setter 'extensionInstanceFieldAndDuplicateSetter' 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 'extensionInstanceFieldAndDuplicateSetter'.
+  0.extensionInstanceFieldAndDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
   self::Extension|extensionStaticFieldAndSetter = self::Extension|extensionStaticFieldAndSetter;
+  self::Extension|extensionStaticFieldAndDuplicateSetter = self::Extension|extensionStaticFieldAndDuplicateSetter;
   self::Extension|extensionStaticLateFinalFieldAndSetter = self::Extension|extensionStaticLateFinalFieldAndSetter;
-  self::Extension|set#extensionStaticFieldAndInstanceSetter(0, self::Extension|extensionStaticFieldAndInstanceSetter);
+  self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter = self::Extension|extensionStaticLateFinalFieldAndDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:153:5: Error: The setter 'extensionStaticFieldAndInstanceSetter' 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 'extensionStaticFieldAndInstanceSetter'.
+  0.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'.
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:158:5: Error: The setter 'extensionStaticFieldAndInstanceDuplicateSetter' 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 'extensionStaticFieldAndInstanceDuplicateSetter'.
+  0.extensionStaticFieldAndInstanceDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  self::Extension|extensionStaticFieldAndInstanceDuplicateSetter = self::Extension|extensionStaticFieldAndInstanceDuplicateSetter;
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:163:13: Error: Setter not found: 'extensionInstanceFieldAndStaticSetter'.
+  Extension.extensionInstanceFieldAndStaticSetter =
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:165: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 =
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:168:60: Error: Can't assign to this.
+  Extension.extensionInstanceFieldAndStaticDuplicateSetter =
+                                                           ^";
+  invalid-expression "pkg/front_end/testcases/nnbd/field_vs_setter.dart:170:5: Error: The setter 'extensionInstanceFieldAndStaticDuplicateSetter' 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 'extensionInstanceFieldAndStaticDuplicateSetter'.
+  0.extensionInstanceFieldAndStaticDuplicateSetter =
+    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
 }
 static method main() → dynamic {}
+
+constants  {
+  #C1 = "{\"topLevelFieldAndDuplicateSetter\":\"'topLevelFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\",\"topLevelLateFinalFieldAndDuplicateSetter\":\"'topLevelLateFinalFieldAndDuplicateSetter' is exported from both 'pkg/front_end/testcases/nnbd/field_vs_setter.dart' and 'pkg/front_end/testcases/nnbd/field_vs_setter.dart'.\"}"
+}
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
index 9be3ed0..72d8b77 100644
--- 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
@@ -1,36 +1,79 @@
 int? topLevelFieldAndSetter;
 void set topLevelFieldAndSetter(int? value) {}
+int? topLevelFieldAndDuplicateSetter;
+void set topLevelFieldAndDuplicateSetter(int? value) {}
+void set topLevelFieldAndDuplicateSetter(int? value) {}
 late
 final int? topLevelLateFinalFieldAndSetter;
 void set topLevelLateFinalFieldAndSetter(int? value) {}
+late
+final int? topLevelLateFinalFieldAndDuplicateSetter;
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
 class Class {
   int? instanceFieldAndSetter;
   void set instanceFieldAndSetter(int? value) {}
+  int? instanceFieldAndDuplicateSetter;
+  void set instanceFieldAndDuplicateSetter(int? value) {}
+  void set instanceFieldAndDuplicateSetter(int? value) {}
   late
   final int? instanceLateFinalFieldAndSetter;
   void set instanceLateFinalFieldAndSetter(int? value) {}
+  late
+  final int? instanceLateFinalFieldAndDuplicateSetter;
+  void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+  void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
   static int? staticFieldAndSetter;
   static void set staticFieldAndSetter(int? value) {}
+  static int? staticFieldAndDuplicateSetter;
+  static void set staticFieldAndDuplicateSetter(int? value) {}
+  static void set staticFieldAndDuplicateSetter(int? value) {}
   static late ;
   final int? staticLateFinalFieldAndSetter;
   static void set staticLateFinalFieldAndSetter(int? value) {}
+  static late ;
+  final int? staticLateFinalFieldAndDuplicateSetter;
+  static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+  static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
   static int? staticFieldAndInstanceSetter;
   void set staticFieldAndInstanceSetter(int? value) {}
+  static int? staticFieldAndInstanceDuplicateSetter;
+  void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+  void set staticFieldAndInstanceDuplicateSetter(int? value) {}
   int? instanceFieldAndStaticSetter;
   static void set instanceFieldAndStaticSetter(int? value) {}
+  int? instanceFieldAndStaticDuplicateSetter;
+  static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+  static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
 }
 extension Extension on int? {
   int? extensionInstanceFieldAndSetter;
   void set extensionInstanceFieldAndSetter(int? value) {}
+  int? extensionInstanceFieldAndDuplicateSetter;
+  void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+  void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
   static int? extensionStaticFieldAndSetter;
   static void set extensionStaticFieldAndSetter(int? value) {}
+  static int? extensionStaticFieldAndDuplicateSetter;
+  static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+  static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
   static late ;
   final int? extensionStaticLateFinalFieldAndSetter;
-  static void set extensionStaticFieldAndSetter(int? value) {}
+  static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
+  static late ;
+  final int? extensionStaticLateFinalFieldAndDuplicateSetter;
+  static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+  static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
   static int? extensionStaticFieldAndInstanceSetter;
   void set extensionStaticFieldAndInstanceSetter(int? value) {}
+  static int? extensionStaticFieldAndInstanceDuplicateSetter;
+  void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+  void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
   int? extensionInstanceFieldAndStaticSetter;
   static void set extensionInstanceFieldAndStaticSetter(int? value) {}
+  int? extensionInstanceFieldAndStaticDuplicateSetter;
+  static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
+  static void set extensionInstanceFieldAndStaticDuplicateSetter(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
index 3ac89ba..f523434 100644
--- a/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/field_vs_setter.dart.weak.expect
@@ -2,88 +2,122 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:10:10: Error: 'topLevelFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:9:10: Context: Previous declaration of 'topLevelFieldAndDuplicateSetter'.
+// void set topLevelFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:17:10: Error: 'topLevelLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:16:10: Context: Previous declaration of 'topLevelLateFinalFieldAndDuplicateSetter'.
+// void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:25:12: Error: 'instanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:24:12: Context: Previous declaration of 'instanceFieldAndDuplicateSetter'.
+//   void set instanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:32:12: Error: 'instanceLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:31:12: Context: Previous declaration of 'instanceLateFinalFieldAndDuplicateSetter'.
+//   void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:39:19: Error: 'staticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:38:19: Context: Previous declaration of 'staticFieldAndDuplicateSetter'.
+//   static void set staticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:46:19: Error: 'staticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:45:19: Context: Previous declaration of 'staticLateFinalFieldAndDuplicateSetter'.
+//   static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:53:12: Error: 'staticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:52:12: Context: Previous declaration of 'staticFieldAndInstanceDuplicateSetter'.
+//   void set staticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:60:19: Error: 'instanceFieldAndStaticDuplicateSetter' is already declared in this scope.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:59:19: Context: Previous declaration of 'instanceFieldAndStaticDuplicateSetter'.
+//   static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:64: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:67:8: Error: Extensions can't declare instance fields
+// Try removing the field declaration or making it a static field
+//   int? extensionInstanceFieldAndDuplicateSetter;
+//        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/nnbd/field_vs_setter.dart:44:8: Error: Extensions can't declare instance fields
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:69:12: Error: 'extensionInstanceFieldAndDuplicateSetter' is already declared in this scope.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:68:12: Context: Previous declaration of 'extensionInstanceFieldAndDuplicateSetter'.
+//   void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:76:19: Error: 'extensionStaticFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:75:19: Context: Previous declaration of 'extensionStaticFieldAndDuplicateSetter'.
+//   static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:83:19: Error: 'extensionStaticLateFinalFieldAndDuplicateSetter' is already declared in this scope.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:82:19: Context: Previous declaration of 'extensionStaticLateFinalFieldAndDuplicateSetter'.
+//   static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
+//                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:90:12: Error: 'extensionStaticFieldAndInstanceDuplicateSetter' is already declared in this scope.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:89:12: Context: Previous declaration of 'extensionStaticFieldAndInstanceDuplicateSetter'.
+//   void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
+//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/nnbd/field_vs_setter.dart:92: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:95:8: Error: Extensions