Version 2.11.0-183.0.dev

Merge commit 'd63d5d93a59b370bf5f5c277109110cb67a96b75' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/type_parameter.dart b/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/type_parameter.dart
index d750821..1b4354d 100644
--- a/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/type_parameter.dart
+++ b/pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/type_parameter.dart
@@ -12,7 +12,7 @@
   void promoteNullable(T? t) {
     T? s;
     if (t is int) {
-      s = /*T & int*/ t;
+      s = /*analyzer.T? & int*/ /*cfe.T & int*/ t;
     }
   }
 
@@ -50,7 +50,7 @@
 class F<S, T extends S> {
   void nonNull(T t) {
     if (t != null) {
-      /*T & S*/ t;
+      /*analyzer.T & S & Object*/ /*cfe.T & S*/ t;
     }
   }
 }
diff --git a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
index bd2def3..5625a7b 100644
--- a/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/display_string_builder.dart
@@ -190,6 +190,11 @@
   void writeTypeParameterType(TypeParameterTypeImpl type) {
     _write(type.element.displayName);
     _writeNullability(type.nullabilitySuffix);
+
+    if (type.promotedBound != null) {
+      _write(' & ');
+      _writeType(type.promotedBound);
+    }
   }
 
   void writeUnknownInferredType() {
diff --git a/pkg/analyzer/test/id_tests/type_promotion_test.dart b/pkg/analyzer/test/id_tests/type_promotion_test.dart
index 067dc95..692be35 100644
--- a/pkg/analyzer/test/id_tests/type_promotion_test.dart
+++ b/pkg/analyzer/test/id_tests/type_promotion_test.dart
@@ -71,14 +71,7 @@
 
   @override
   String getText(DartType actualData, [String indentation]) {
-    if (actualData is TypeParameterTypeImpl) {
-      var element = actualData.element;
-      var promotedBound = actualData.promotedBound;
-      if (promotedBound != null) {
-        return '${element.name} & ${_typeToString(promotedBound)}';
-      }
-    }
-    return _typeToString(actualData);
+    return actualData.getDisplayString(withNullability: true);
   }
 
   @override
@@ -93,8 +86,4 @@
 
   @override
   bool isEmpty(DartType actualData) => actualData == null;
-
-  String _typeToString(DartType type) {
-    return type.getDisplayString(withNullability: true);
-  }
 }
diff --git a/pkg/analyzer/test/src/dart/element/nullable_test.dart b/pkg/analyzer/test/src/dart/element/nullable_test.dart
index d385bae..d690043 100644
--- a/pkg/analyzer/test/src/dart/element/nullable_test.dart
+++ b/pkg/analyzer/test/src/dart/element/nullable_test.dart
@@ -647,12 +647,11 @@
   test_typeParameter_bound_dynamic() {
     var element = typeParameter('T', bound: dynamicNone);
 
-    var result = typeSystem.promoteToNonNull(
+    _checkTypeParameter(
       typeParameterTypeNone(element),
-    ) as TypeParameterTypeImpl;
-    expect(result.element, same(element));
-    expect(result.promotedBound, isNull);
-    expect(result.nullabilitySuffix, NullabilitySuffix.none);
+      element: element,
+      promotedBound: null,
+    );
   }
 
   test_typeParameter_bound_none() {
diff --git a/pkg/analyzer/test/src/dart/element/subtype_test.dart b/pkg/analyzer/test/src/dart/element/subtype_test.dart
index 452060b..4cb55f1 100644
--- a/pkg/analyzer/test/src/dart/element/subtype_test.dart
+++ b/pkg/analyzer/test/src/dart/element/subtype_test.dart
@@ -2482,7 +2482,7 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, intStar),
       futureOrStar(numStar),
-      strT0: 'T, T & int*',
+      strT0: 'T & int*',
       strT1: 'FutureOr<num*>*',
     );
   }
@@ -2493,7 +2493,7 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, futureStar(numStar)),
       futureOrStar(numStar),
-      strT0: 'T, T & Future<num*>*',
+      strT0: 'T & Future<num*>*',
       strT1: 'FutureOr<num*>*',
     );
   }
@@ -2504,7 +2504,7 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, futureStar(intStar)),
       futureOrStar(numStar),
-      strT0: 'T, T & Future<int*>*',
+      strT0: 'T & Future<int*>*',
       strT1: 'FutureOr<num*>*',
     );
   }
@@ -2515,7 +2515,7 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, numStar),
       futureOrStar(intStar),
-      strT0: 'T, T & num*',
+      strT0: 'T & num*',
       strT1: 'FutureOr<int*>*',
     );
   }
@@ -2526,7 +2526,7 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, futureStar(numStar)),
       futureOrStar(intStar),
-      strT0: 'T, T & Future<num*>*',
+      strT0: 'T & Future<num*>*',
       strT1: 'FutureOr<int*>*',
     );
   }
@@ -2537,7 +2537,7 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, futureOrStar(numStar)),
       futureOrStar(intStar),
-      strT0: 'T, T & FutureOr<num*>*',
+      strT0: 'T & FutureOr<num*>*',
       strT1: 'FutureOr<int*>*',
     );
   }
@@ -2824,7 +2824,7 @@
       listNone(
         typeParameterTypeNone(T),
       ),
-      strT0: 'List<T>, T extends Object?, T & int',
+      strT0: 'List<T & int>, T extends Object?',
       strT1: 'List<T>, T extends Object?',
     );
   }
@@ -2839,7 +2839,7 @@
       listNone(
         typeParameterTypeNone(T),
       ),
-      strT0: 'List<T>, T extends Object?, T & int?',
+      strT0: 'List<T & int?>, T extends Object?',
       strT1: 'List<T>, T extends Object?',
     );
   }
@@ -3288,7 +3288,7 @@
     isSubtype(
       promotedTypeParameterTypeStar(T, intStar),
       futureOrStar(numStar),
-      strT0: 'T*, T extends Object*, T & int*',
+      strT0: 'T* & int*, T extends Object*',
       strT1: 'FutureOr<num*>*',
     );
 
@@ -3296,19 +3296,19 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, intNone),
       futureOrNone(numNone),
-      strT0: 'T, T extends Object, T & int',
+      strT0: 'T & int, T extends Object',
       strT1: 'FutureOr<num>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, intNone),
       futureOrNone(numQuestion),
-      strT0: 'T, T extends Object, T & int',
+      strT0: 'T & int, T extends Object',
       strT1: 'FutureOr<num?>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, intNone),
       futureOrQuestion(numNone),
-      strT0: 'T, T extends Object, T & int',
+      strT0: 'T & int, T extends Object',
       strT1: 'FutureOr<num>?',
     );
 
@@ -3316,19 +3316,19 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, intNone),
       futureOrNone(numNone),
-      strT0: 'T, T extends Object?, T & int',
+      strT0: 'T & int, T extends Object?',
       strT1: 'FutureOr<num>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, intNone),
       futureOrNone(numQuestion),
-      strT0: 'T, T extends Object?, T & int',
+      strT0: 'T & int, T extends Object?',
       strT1: 'FutureOr<num?>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, intNone),
       futureOrQuestion(numNone),
-      strT0: 'T, T extends Object?, T & int',
+      strT0: 'T & int, T extends Object?',
       strT1: 'FutureOr<num>?',
     );
 
@@ -3336,19 +3336,19 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, intQuestion),
       futureOrNone(numNone),
-      strT0: 'T, T extends Object?, T & int?',
+      strT0: 'T & int?, T extends Object?',
       strT1: 'FutureOr<num>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, intQuestion),
       futureOrNone(numQuestion),
-      strT0: 'T, T extends Object?, T & int?',
+      strT0: 'T & int?, T extends Object?',
       strT1: 'FutureOr<num?>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, intQuestion),
       futureOrQuestion(numNone),
-      strT0: 'T, T extends Object?, T & int?',
+      strT0: 'T & int?, T extends Object?',
       strT1: 'FutureOr<num>?',
     );
 
@@ -3357,19 +3357,19 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, typeParameterTypeNone(S)),
       futureOrNone(objectNone),
-      strT0: 'T, T extends Object?, T & S',
+      strT0: 'T & S, T extends Object?',
       strT1: 'FutureOr<Object>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, typeParameterTypeNone(S)),
       futureOrNone(objectQuestion),
-      strT0: 'T, T extends Object?, T & S',
+      strT0: 'T & S, T extends Object?',
       strT1: 'FutureOr<Object?>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, typeParameterTypeNone(S)),
       futureOrQuestion(objectNone),
-      strT0: 'T, T extends Object?, T & S',
+      strT0: 'T & S, T extends Object?',
       strT1: 'FutureOr<Object>?',
     );
 
@@ -3377,13 +3377,13 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, futureStar(numStar)),
       futureOrStar(numStar),
-      strT0: 'T, T extends Object*, T & Future<num*>*',
+      strT0: 'T & Future<num*>*, T extends Object*',
       strT1: 'FutureOr<num*>*',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureStar(intStar)),
       futureOrStar(numStar),
-      strT0: 'T, T extends Object*, T & Future<int*>*',
+      strT0: 'T & Future<int*>*, T extends Object*',
       strT1: 'FutureOr<num*>*',
     );
 
@@ -3391,19 +3391,19 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intNone)),
       futureOrNone(numNone),
-      strT0: 'T, T extends Object, T & Future<int>',
+      strT0: 'T & Future<int>, T extends Object',
       strT1: 'FutureOr<num>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intNone)),
       futureOrNone(numQuestion),
-      strT0: 'T, T extends Object, T & Future<int>',
+      strT0: 'T & Future<int>, T extends Object',
       strT1: 'FutureOr<num?>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intNone)),
       futureOrQuestion(numNone),
-      strT0: 'T, T extends Object, T & Future<int>',
+      strT0: 'T & Future<int>, T extends Object',
       strT1: 'FutureOr<num>?',
     );
 
@@ -3411,38 +3411,38 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intNone)),
       futureOrNone(numNone),
-      strT0: 'T, T extends Object?, T & Future<int>',
+      strT0: 'T & Future<int>, T extends Object?',
       strT1: 'FutureOr<num>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intNone)),
       futureOrNone(numQuestion),
-      strT0: 'T, T extends Object?, T & Future<int>',
+      strT0: 'T & Future<int>, T extends Object?',
       strT1: 'FutureOr<num?>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intNone)),
       futureOrQuestion(numNone),
-      strT0: 'T, T extends Object?, T & Future<int>',
+      strT0: 'T & Future<int>, T extends Object?',
       strT1: 'FutureOr<num>?',
     );
 
     isNotSubtype(
       promotedTypeParameterTypeNone(T, futureQuestion(intNone)),
       futureOrNone(numNone),
-      strT0: 'T, T extends Object?, T & Future<int>?',
+      strT0: 'T & Future<int>?, T extends Object?',
       strT1: 'FutureOr<num>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureQuestion(intNone)),
       futureOrNone(numQuestion),
-      strT0: 'T, T extends Object?, T & Future<int>?',
+      strT0: 'T & Future<int>?, T extends Object?',
       strT1: 'FutureOr<num?>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureQuestion(intNone)),
       futureOrQuestion(numNone),
-      strT0: 'T, T extends Object?, T & Future<int>?',
+      strT0: 'T & Future<int>?, T extends Object?',
       strT1: 'FutureOr<num>?',
     );
 
@@ -3450,19 +3450,19 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intQuestion)),
       futureOrNone(numNone),
-      strT0: 'T, T extends Object, T & Future<int?>',
+      strT0: 'T & Future<int?>, T extends Object',
       strT1: 'FutureOr<num>',
     );
     isSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intQuestion)),
       futureOrNone(numQuestion),
-      strT0: 'T, T extends Object, T & Future<int?>',
+      strT0: 'T & Future<int?>, T extends Object',
       strT1: 'FutureOr<num?>',
     );
     isNotSubtype(
       promotedTypeParameterTypeNone(T, futureNone(intQuestion)),
       futureOrQuestion(numNone),
-      strT0: 'T, T extends Object, T & Future<int?>',
+      strT0: 'T & Future<int?>, T extends Object',
       strT1: 'FutureOr<num>?',
     );
   }
@@ -3632,7 +3632,7 @@
       typeParameterTypeStar(T),
       promotedTypeParameterTypeStar(T, intStar),
       strT0: 'T*, T extends int*',
-      strT1: 'T*, T extends int*, T & int*',
+      strT1: 'T* & int*, T extends int*',
     );
 
     T = typeParameter('T', bound: intNone);
@@ -3640,13 +3640,13 @@
       typeParameterTypeNone(T),
       promotedTypeParameterTypeNone(T, intNone),
       strT0: 'T, T extends int',
-      strT1: 'T, T extends int, T & int',
+      strT1: 'T & int, T extends int',
     );
     isNotSubtype(
       typeParameterTypeQuestion(T),
       promotedTypeParameterTypeNone(T, intNone),
       strT0: 'T?, T extends int',
-      strT1: 'T, T extends int, T & int',
+      strT1: 'T & int, T extends int',
     );
 
     T = typeParameter('T', bound: intQuestion);
@@ -3654,19 +3654,19 @@
       typeParameterTypeNone(T),
       promotedTypeParameterTypeNone(T, intNone),
       strT0: 'T, T extends int?',
-      strT1: 'T, T extends int?, T & int',
+      strT1: 'T & int, T extends int?',
     );
     isSubtype(
       typeParameterTypeNone(T),
       promotedTypeParameterTypeNone(T, intQuestion),
       strT0: 'T, T extends int?',
-      strT1: 'T, T extends int?, T & int?',
+      strT1: 'T & int?, T extends int?',
     );
     isNotSubtype(
       typeParameterTypeQuestion(T),
       promotedTypeParameterTypeNone(T, intQuestion),
       strT0: 'T?, T extends int?',
-      strT1: 'T, T extends int?, T & int?',
+      strT1: 'T & int?, T extends int?',
     );
 
     T = typeParameter('T', bound: numStar);
@@ -3756,7 +3756,7 @@
       neverNone,
       promotedTypeParameterTypeStar(T, numStar),
       strT0: 'Never',
-      strT1: 'T*, T extends Object*, T & num*',
+      strT1: 'T* & num*, T extends Object*',
     );
   }
 
@@ -3766,7 +3766,7 @@
     isNotSubtype(
       promotedTypeParameterTypeStar(T, numStar),
       neverNone,
-      strT0: 'T*, T extends Object*, T & num*',
+      strT0: 'T* & num*, T extends Object*',
       strT1: 'Never',
     );
   }
@@ -3788,7 +3788,7 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, neverNone),
       neverNone,
-      strT0: 'T, T extends Object, T & Never',
+      strT0: 'T & Never, T extends Object',
       strT1: 'Never',
     );
   }
@@ -4048,7 +4048,7 @@
       nullQuestion,
       promotedTypeParameterTypeStar(T, numStar),
       strT0: 'Null?',
-      strT1: 'T*, T extends Object*, T & num*',
+      strT1: 'T* & num*, T extends Object*',
     );
   }
 
@@ -4059,7 +4059,7 @@
       nullQuestion,
       promotedTypeParameterTypeNone(T, numNone),
       strT0: 'Null?',
-      strT1: 'T, T extends Object?, T & num',
+      strT1: 'T & num, T extends Object?',
     );
   }
 
@@ -4070,7 +4070,7 @@
       nullQuestion,
       promotedTypeParameterTypeNone(T, numQuestion),
       strT0: 'Null?',
-      strT1: 'T, T extends Object?, T & num?',
+      strT1: 'T & num?, T extends Object?',
     );
   }
 
@@ -4081,7 +4081,7 @@
       nullQuestion,
       promotedTypeParameterTypeNone(T, numNone),
       strT0: 'Null?',
-      strT1: 'T, T extends Object, T & num',
+      strT1: 'T & num, T extends Object',
     );
   }
 
@@ -4093,7 +4093,7 @@
       nullQuestion,
       promotedTypeParameterTypeNone(T, typeParameterTypeNone(S)),
       strT0: 'Null?',
-      strT1: 'T, T extends Object?, T & S',
+      strT1: 'T & S, T extends Object?',
     );
   }
 
@@ -4317,8 +4317,8 @@
     isSubtype(
       type,
       type,
-      strT0: 'T, T extends Object*, T & int?',
-      strT1: 'T, T extends Object*, T & int?',
+      strT0: 'T & int?, T extends Object*',
+      strT1: 'T & int?, T extends Object*',
     );
   }
 
@@ -4328,8 +4328,8 @@
     isSubtype(
       type,
       type,
-      strT0: 'T?, T extends Object, T & int?',
-      strT1: 'T?, T extends Object, T & int?',
+      strT0: 'T? & int?, T extends Object',
+      strT1: 'T? & int?, T extends Object',
     );
   }
 
@@ -4589,7 +4589,7 @@
       functionTypeStar(
         returnType: voidNone,
       ),
-      strT0: 'T, T & void Function()*',
+      strT0: 'T & void Function()*',
       strT1: 'void Function()*',
     );
   }
@@ -4607,7 +4607,7 @@
       functionTypeStar(
         returnType: dynamicNone,
       ),
-      strT0: 'T, T & void Function()*',
+      strT0: 'T & void Function()*',
       strT1: 'dynamic Function()*',
     );
   }
@@ -4625,7 +4625,7 @@
       functionTypeStar(
         returnType: objectStar,
       ),
-      strT0: 'T, T & void Function()*',
+      strT0: 'T & void Function()*',
       strT1: 'Object* Function()*',
     );
   }
@@ -4649,7 +4649,7 @@
         ],
         returnType: voidNone,
       ),
-      strT0: 'T, T & void Function(void)*',
+      strT0: 'T & void Function(void)*',
       strT1: 'void Function(void)*',
     );
   }
@@ -4673,7 +4673,7 @@
         ],
         returnType: dynamicNone,
       ),
-      strT0: 'T, T & void Function(void)*',
+      strT0: 'T & void Function(void)*',
       strT1: 'dynamic Function(dynamic)*',
     );
   }
@@ -4697,7 +4697,7 @@
         ],
         returnType: objectStar,
       ),
-      strT0: 'T, T & void Function(void)*',
+      strT0: 'T & void Function(void)*',
       strT1: 'Object* Function(Object*)*',
     );
   }
@@ -4721,7 +4721,7 @@
         ],
         returnType: dynamicNone,
       ),
-      strT0: 'T, T & void Function(void)*',
+      strT0: 'T & void Function(void)*',
       strT1: 'dynamic Function(Iterable<int*>*)*',
     );
   }
@@ -4745,7 +4745,7 @@
         ],
         returnType: objectStar,
       ),
-      strT0: 'T, T & void Function(void)*',
+      strT0: 'T & void Function(void)*',
       strT1: 'Object* Function(int*)*',
     );
   }
@@ -4769,7 +4769,7 @@
         ],
         returnType: intStar,
       ),
-      strT0: 'T, T & void Function(void)*',
+      strT0: 'T & void Function(void)*',
       strT1: 'int* Function(int*)*',
     );
   }
@@ -4884,7 +4884,7 @@
       voidNone,
       promotedTypeParameterTypeNone(T, voidNone),
       strT0: 'void',
-      strT1: 'T, T & void',
+      strT1: 'T & void',
     );
   }
 
@@ -4895,7 +4895,7 @@
       voidNone,
       promotedTypeParameterTypeNone(T, voidNone),
       strT0: 'void',
-      strT1: 'T, T extends void, T & void',
+      strT1: 'T & void, T extends void',
     );
   }
 
@@ -4905,8 +4905,8 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, intStar),
       promotedTypeParameterTypeNone(T, intStar),
-      strT0: 'T, T & int*',
-      strT1: 'T, T & int*',
+      strT0: 'T & int*',
+      strT1: 'T & int*',
     );
   }
 
@@ -4916,8 +4916,8 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, intStar),
       promotedTypeParameterTypeNone(T, numStar),
-      strT0: 'T, T & int*',
-      strT1: 'T, T & num*',
+      strT0: 'T & int*',
+      strT1: 'T & num*',
     );
   }
 
@@ -4927,8 +4927,8 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, numStar),
       promotedTypeParameterTypeNone(T, numStar),
-      strT0: 'T, T & num*',
-      strT1: 'T, T & num*',
+      strT0: 'T & num*',
+      strT1: 'T & num*',
     );
   }
 
@@ -4938,8 +4938,8 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, numStar),
       promotedTypeParameterTypeNone(T, intStar),
-      strT0: 'T, T & num*',
-      strT1: 'T, T & int*',
+      strT0: 'T & num*',
+      strT1: 'T & int*',
     );
   }
 
@@ -4950,7 +4950,7 @@
       nullQuestion,
       promotedTypeParameterTypeNone(T, numStar),
       strT0: 'Null?',
-      strT1: 'T, T & num*',
+      strT1: 'T & num*',
     );
   }
 
@@ -4960,7 +4960,7 @@
     isSubtype(
       promotedTypeParameterTypeStar(T, intStar),
       typeParameterTypeStar(T),
-      strT0: 'T*, T extends int*, T & int*',
+      strT0: 'T* & int*, T extends int*',
       strT1: 'T*, T extends int*',
     );
   }
@@ -4971,7 +4971,7 @@
     isSubtype(
       promotedTypeParameterTypeStar(T, intStar),
       typeParameterTypeStar(T),
-      strT0: 'T*, T extends num*, T & int*',
+      strT0: 'T* & int*, T extends num*',
       strT1: 'T*, T extends num*',
     );
   }
@@ -4982,7 +4982,7 @@
     isSubtype(
       promotedTypeParameterTypeStar(T, numStar),
       typeParameterTypeStar(T),
-      strT0: 'T*, T extends num*, T & num*',
+      strT0: 'T* & num*, T extends num*',
       strT1: 'T*, T extends num*',
     );
   }
@@ -4994,7 +4994,7 @@
       typeParameterTypeStar(T),
       promotedTypeParameterTypeStar(T, intStar),
       strT0: 'T*, T extends int*',
-      strT1: 'T*, T extends int*, T & int*',
+      strT1: 'T* & int*, T extends int*',
     );
   }
 
@@ -5005,7 +5005,7 @@
       typeParameterTypeStar(T),
       promotedTypeParameterTypeStar(T, numStar),
       strT0: 'T*, T extends int*',
-      strT1: 'T*, T extends int*, T & num*',
+      strT1: 'T* & num*, T extends int*',
     );
   }
 
@@ -5016,7 +5016,7 @@
       typeParameterTypeStar(T),
       promotedTypeParameterTypeStar(T, intStar),
       strT0: 'T*, T extends num*',
-      strT1: 'T*, T extends num*, T & int*',
+      strT1: 'T* & int*, T extends num*',
     );
   }
 
@@ -5125,7 +5125,7 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, intStar),
       intStar,
-      strT0: 'T, T & int*',
+      strT0: 'T & int*',
       strT1: 'int*',
     );
   }
@@ -5136,7 +5136,7 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, intStar),
       numStar,
-      strT0: 'T, T & int*',
+      strT0: 'T & int*',
       strT1: 'num*',
     );
   }
@@ -5147,7 +5147,7 @@
     isSubtype(
       promotedTypeParameterTypeNone(T, numStar),
       numStar,
-      strT0: 'T, T & num*',
+      strT0: 'T & num*',
       strT1: 'num*',
     );
   }
@@ -5158,7 +5158,7 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(T, numStar),
       intStar,
-      strT0: 'T, T & num*',
+      strT0: 'T & num*',
       strT1: 'int*',
     );
   }
@@ -5170,7 +5170,7 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(S, numStar),
       typeParameterTypeNone(T),
-      strT0: 'S, S & num*',
+      strT0: 'S & num*',
       strT1: 'T',
     );
   }
@@ -5182,8 +5182,8 @@
     isNotSubtype(
       promotedTypeParameterTypeNone(S, numStar),
       promotedTypeParameterTypeNone(T, numStar),
-      strT0: 'S, S & num*',
-      strT1: 'T, T & num*',
+      strT0: 'S & num*',
+      strT1: 'T & num*',
     );
   }
 
@@ -5251,7 +5251,7 @@
       typeParameterTypeStar(S),
       promotedTypeParameterTypeNone(T, numStar),
       strT0: 'S*, S extends num*',
-      strT1: 'T, T & num*',
+      strT1: 'T & num*',
     );
   }
 
@@ -5262,7 +5262,7 @@
       dynamicNone,
       promotedTypeParameterTypeNone(T, dynamicNone),
       strT0: 'dynamic',
-      strT1: 'T, T extends dynamic, T & dynamic',
+      strT1: 'T & dynamic, T extends dynamic',
     );
   }
 
@@ -5280,7 +5280,7 @@
         ),
       ),
       strT0: 'T Function()*',
-      strT1: 'T, T & T Function()*',
+      strT1: 'T & T Function()*',
     );
   }
 
@@ -5292,8 +5292,8 @@
         promotedTypeParameterTypeNone(T, stringStar),
       ),
       promotedTypeParameterTypeNone(T, stringStar),
-      strT0: 'FutureOr<T>*, T & String*',
-      strT1: 'T, T & String*',
+      strT0: 'FutureOr<T & String*>*',
+      strT1: 'T & String*',
     );
   }
 
@@ -5327,19 +5327,19 @@
     isNotSubtype(
       type,
       numNone,
-      strT0: 'T, T extends Object?, T & num?',
+      strT0: 'T & num?, T extends Object?',
       strT1: 'num',
     );
     isSubtype(
       type,
       numQuestion,
-      strT0: 'T, T extends Object?, T & num?',
+      strT0: 'T & num?, T extends Object?',
       strT1: 'num?',
     );
     isSubtype(
       type,
       numStar,
-      strT0: 'T, T extends Object?, T & num?',
+      strT0: 'T & num?, T extends Object?',
       strT1: 'num*',
     );
   }
@@ -6015,9 +6015,8 @@
   void visitTypeParameterType(TypeParameterType type) {
     if (!functionTypeParameters.contains(type.element)) {
       var bound = type.element.bound;
-      var promotedBound = (type as TypeParameterTypeImpl).promotedBound;
 
-      if (bound == null && promotedBound == null) {
+      if (bound == null) {
         return;
       }
 
@@ -6028,16 +6027,6 @@
         str += '${type.element.name} extends ' + boundStr;
       }
 
-      if (promotedBound != null) {
-        var promotedBoundStr = promotedBound.getDisplayString(
-          withNullability: true,
-        );
-        if (str.isNotEmpty) {
-          str += ', ';
-        }
-        str += '${type.element.name} & ' + promotedBoundStr;
-      }
-
       typeParameters.add(str);
     }
   }
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
index be98561..a51df3a 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
@@ -2,7 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -34,13 +33,9 @@
 
 ''');
 
-    var creation = findNode.instanceCreation('A(s)');
-    var creationType = creation.staticType as InterfaceType;
-
-    assertTypeParameterType(
-      creationType.typeArguments[0],
-      element: findElement.typeParameter('S'),
-      promotedBound: null,
+    assertType(
+      findNode.instanceCreation('A(s)'),
+      'A<S>',
     );
   }
 
diff --git a/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart b/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart
index 3545088..7e27085 100644
--- a/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/local_variable_test.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -30,9 +28,7 @@
 }
 ''');
 
-    var type = findNode.simple('o; // ref').staticType;
-    assertType(type, 'T');
-    _assertPromotedBound(type, isNull);
+    assertType(findNode.simple('o; // ref'), 'T');
   }
 
   test_element_block() async {
@@ -99,12 +95,6 @@
     expect(x.isLate, isFalse);
     expect(x.isStatic, isFalse);
   }
-
-  void _assertPromotedBound(DartType type, Matcher promotedBound) {
-    if (type is TypeParameterTypeImpl) {
-      expect(type.promotedBound, promotedBound);
-    }
-  }
 }
 
 @reflectiveTest
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index 5c49601..16de782 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -405,10 +405,9 @@
 
 ''');
 
-    assertTypeParameterType(
-      findNode.methodInvocation('test(s)').typeArgumentTypes[0],
-      element: findElement.typeParameter('S'),
-      promotedBound: null,
+    assertTypeArgumentTypes(
+      findNode.methodInvocation('test(s)'),
+      ['S'],
     );
   }
 
diff --git a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
index 180d1e5..61a0e67 100644
--- a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
@@ -3,10 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/error/codes.dart';
-import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'context_collection_resolution.dart';
@@ -753,14 +751,8 @@
       writeElement: null,
       writeType: null,
       element: null,
-      type: 'T',
+      type: 'T & Object',
     );
-    expect(
-        postfixExpression.staticType,
-        TypeMatcher<TypeParameterType>().having(
-            (t) => t.bound.getDisplayString(withNullability: true),
-            'bound',
-            'Object'));
   }
 
   test_nullCheck_typeParameter_already_promoted() async {
@@ -780,13 +772,7 @@
       writeElement: null,
       writeType: null,
       element: null,
-      type: 'T',
+      type: 'T & num',
     );
-    expect(
-        postfixExpression.staticType,
-        TypeMatcher<TypeParameterType>().having(
-            (t) => t.bound.getDisplayString(withNullability: true),
-            'bound',
-            'num'));
   }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index 011e60f..2fdf8ba 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -776,15 +776,6 @@
     expect(node.staticType, isNull);
   }
 
-  void assertTypeParameterType(
-    TypeParameterTypeImpl type, {
-    @required TypeParameterElement element,
-    @required String promotedBound,
-  }) {
-    assertElement(type.element, element);
-    assertType(type.promotedBound, promotedBound);
-  }
-
   Matcher elementMatcher(
     Element declaration, {
     bool isLegacy = false,
diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
index 955df67..321cac5 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart
@@ -166,6 +166,9 @@
   "flutter": {
     ExperimentalFlag.nonNullable,
   },
+  "flutter_driver": {
+    ExperimentalFlag.nonNullable,
+  },
   "flutter_test": {
     ExperimentalFlag.nonNullable,
   },
diff --git a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
index da4182e..537e376 100644
--- a/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/enum_builder.dart
@@ -11,7 +11,6 @@
         Class,
         Constructor,
         ConstructorInvocation,
-        DirectPropertyGet,
         Expression,
         Field,
         FieldInitializer,
@@ -20,6 +19,7 @@
         ListLiteral,
         Procedure,
         ProcedureKind,
+        PropertyGet,
         ReturnStatement,
         StaticGet,
         StringLiteral,
@@ -386,7 +386,7 @@
     Field nameField = nameFieldBuilder.field;
     ProcedureBuilder toStringBuilder = firstMemberNamed("toString");
     toStringBuilder.body = new ReturnStatement(
-        new DirectPropertyGet(new ThisExpression(), nameField));
+        new PropertyGet(new ThisExpression(), nameField.name, nameField));
     List<Expression> values = <Expression>[];
     if (enumConstantInfos != null) {
       for (EnumConstantInfo enumConstantInfo in enumConstantInfos) {
diff --git a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect
index 8352f12..f8b77c2 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.outline.expect
@@ -31,7 +31,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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/annotation_on_enum_values.dart.strong.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.expect
index 60d3c9e..742c6ea 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.expect
@@ -31,7 +31,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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/annotation_on_enum_values.dart.strong.transformed.expect b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.transformed.expect
index 60d3c9e..742c6ea 100644
--- a/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/annotation_on_enum_values.dart.strong.transformed.expect
@@ -31,7 +31,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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/duplicated_declarations.dart.outline.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.outline.expect
index fea4f76..32a46a1 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.outline.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.outline.expect
@@ -428,7 +428,7 @@
     : self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#4::_name};
+    return this.{self::Enum#4::_name};
   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
@@ -450,7 +450,7 @@
     : self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#3::_name};
+    return this.{self::Enum#3::_name};
   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
@@ -472,7 +472,7 @@
     : self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#2::_name};
+    return this.{self::Enum#2::_name};
   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
@@ -494,7 +494,7 @@
     : self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#1::_name};
+    return this.{self::Enum#1::_name};
   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
@@ -516,7 +516,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
   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
@@ -538,7 +538,7 @@
     : self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::AnotherEnum::_name};
+    return this.{self::AnotherEnum::_name};
   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/duplicated_declarations.dart.strong.expect b/pkg/front_end/testcases/general/duplicated_declarations.dart.strong.expect
index 3ee4ed6..608fb62 100644
--- a/pkg/front_end/testcases/general/duplicated_declarations.dart.strong.expect
+++ b/pkg/front_end/testcases/general/duplicated_declarations.dart.strong.expect
@@ -490,7 +490,7 @@
     : self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#4::_name};
+    return this.{self::Enum#4::_name};
   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
@@ -512,7 +512,7 @@
     : self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#3::_name};
+    return this.{self::Enum#3::_name};
   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
@@ -534,7 +534,7 @@
     : self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#2::_name};
+    return this.{self::Enum#2::_name};
   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
@@ -556,7 +556,7 @@
     : self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#1::_name};
+    return this.{self::Enum#1::_name};
   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
@@ -578,7 +578,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
   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
@@ -600,7 +600,7 @@
     : self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::AnotherEnum::_name};
+    return this.{self::AnotherEnum::_name};
   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/metadata_enum.dart.outline.expect b/pkg/front_end/testcases/general/metadata_enum.dart.outline.expect
index 14991ec..908f423 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.outline.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.outline.expect
@@ -14,7 +14,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/metadata_enum.dart.strong.expect b/pkg/front_end/testcases/general/metadata_enum.dart.strong.expect
index 0c71aa0..b5f94c3 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.strong.expect
@@ -14,7 +14,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/metadata_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/general/metadata_enum.dart.strong.transformed.expect
index 0c71aa0..b5f94c3 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.strong.transformed.expect
@@ -14,7 +14,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect
index 60d3c9e..742c6ea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.expect
@@ -31,7 +31,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect
index 60d3c9e..742c6ea 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/annotation_on_enum_values.dart.weak.transformed.expect
@@ -31,7 +31,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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_nnbd_opt_out/duplicated_declarations.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.weak.expect
index 877eeef..d6ea288 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/duplicated_declarations.dart.weak.expect
@@ -490,7 +490,7 @@
     : self::Enum#4::index = index, self::Enum#4::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#4::_name};
+    return this.{self::Enum#4::_name};
   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
@@ -512,7 +512,7 @@
     : self::Enum#3::index = index, self::Enum#3::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#3::_name};
+    return this.{self::Enum#3::_name};
   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
@@ -534,7 +534,7 @@
     : self::Enum#2::index = index, self::Enum#2::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#2::_name};
+    return this.{self::Enum#2::_name};
   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
@@ -556,7 +556,7 @@
     : self::Enum#1::index = index, self::Enum#1::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum#1::_name};
+    return this.{self::Enum#1::_name};
   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
@@ -578,7 +578,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
   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
@@ -600,7 +600,7 @@
     : self::AnotherEnum::index = index, self::AnotherEnum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::AnotherEnum::_name};
+    return this.{self::AnotherEnum::_name};
   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_nnbd_opt_out/metadata_enum.dart.weak.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.expect
index 0c71aa0..b5f94c3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.expect
@@ -14,7 +14,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect
index 0c71aa0..b5f94c3 100644
--- a/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general_nnbd_opt_out/metadata_enum.dart.weak.transformed.expect
@@ -14,7 +14,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect
index b87a5be..36d467b 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.1.expect
@@ -42,7 +42,7 @@
       : main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=main::CompilationStrategy::_name};
+      return this.{main::CompilationStrategy::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect
index d1e9386..cb6ad9d 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_2.yaml.world.2.expect
@@ -42,7 +42,7 @@
       : main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=main::CompilationStrategy::_name};
+      return this.{main::CompilationStrategy::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect
index 12034d0..6ef80fe 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.1.expect
@@ -49,7 +49,7 @@
       : main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=main::CompilationStrategy::_name};
+      return this.{main::CompilationStrategy::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect
index f060e27..edb6241 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.2.expect
@@ -49,7 +49,7 @@
       : main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=main::CompilationStrategy::_name};
+      return this.{main::CompilationStrategy::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect
index c39751c..13a7716 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_6.yaml.world.3.expect
@@ -42,7 +42,7 @@
       : main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=main::CompilationStrategy::_name};
+      return this.{main::CompilationStrategy::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect
index 162d7af..4ef6430 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.1.expect
@@ -58,7 +58,7 @@
       : main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=main::CompilationStrategy::_name};
+      return this.{main::CompilationStrategy::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect
index 162d7af..4ef6430 100644
--- a/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental_initialize_from_dill/no_outline_change_7.yaml.world.2.expect
@@ -58,7 +58,7 @@
       : main::CompilationStrategy::index = index, main::CompilationStrategy::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=main::CompilationStrategy::_name};
+      return this.{main::CompilationStrategy::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect
index 7fa241a..a5b5992 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.outline.expect
@@ -11,7 +11,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/inference/inferred_type_is_enum.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
index 39e563c..d291d40 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.expect
@@ -11,7 +11,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/inference/inferred_type_is_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
index 39e563c..d291d40 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/inference/inferred_type_is_enum_values.dart.outline.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.outline.expect
index 3c0b3c8..8aa2841 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.outline.expect
@@ -11,7 +11,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/inference/inferred_type_is_enum_values.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
index 90399f0..3eb7ad4 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.expect
@@ -11,7 +11,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/inference/inferred_type_is_enum_values.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
index 90399f0..3eb7ad4 100644
--- a/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_type_is_enum_values.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
     : self::E::index = index, self::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::E::_name};
+    return this.{self::E::_name};
   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/nnbd/return_null.dart.outline.expect b/pkg/front_end/testcases/nnbd/return_null.dart.outline.expect
index 3806476..d70d113 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.outline.expect
@@ -15,7 +15,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method returnImplicit() → core::String
   ;
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
index 022f00c..99136f1 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.expect
@@ -68,7 +68,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method returnImplicit() → core::String {
   core::print("foo");
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
index 4f8e60b..3d6ecf6 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
@@ -68,7 +68,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method returnImplicit() → core::String {
   core::print("foo");
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
index 13041e9..75221ed 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.expect
@@ -69,7 +69,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method returnImplicit() → core::String {
   core::print("foo");
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
index 0c25127..91bc7b3 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
@@ -69,7 +69,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method returnImplicit() → core::String {
   core::print("foo");
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.outline.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.outline.expect
index 6bfb752..0c1c54e 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.outline.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.outline.expect
@@ -12,7 +12,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method method1(self::Enum? e) → core::int
   ;
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
index 5051631..daebafc 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.expect
@@ -19,7 +19,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method method1(self::Enum? e) → core::int {
   switch(e) {
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
index 5051631..daebafc 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.strong.transformed.expect
@@ -19,7 +19,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method method1(self::Enum? e) → core::int {
   switch(e) {
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
index 0a559cb..28d2d15 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.expect
@@ -20,7 +20,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method method1(self::Enum? e) → core::int {
   switch(e) {
diff --git a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
index 0a559cb..28d2d15 100644
--- a/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart.weak.transformed.expect
@@ -20,7 +20,7 @@
     : self::Enum::index = index, self::Enum::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::Enum::_name};
+    return this.{self::Enum::_name};
 }
 static method method1(self::Enum? e) → core::int {
   switch(e) {
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
index 211e16d..3a8e857 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect
@@ -438,7 +438,7 @@
     : uns::E::index = index, uns::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=uns::E::_name};
+    return this.{uns::E::_name};
 }
 extension OptInExtension on uns::OptInClass1 {
   operator [] = uns::OptInExtension|[];
diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
index af2b9be..eacb84d 100644
--- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect
@@ -438,7 +438,7 @@
     : uns::E::index = index, uns::E::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=uns::E::_name};
+    return this.{uns::E::_name};
 }
 extension OptInExtension on uns::OptInClass1 {
   operator [] = uns::OptInExtension|[];
diff --git a/pkg/front_end/testcases/rasta/enum.dart.outline.expect b/pkg/front_end/testcases/rasta/enum.dart.outline.expect
index 2be4a63..a6d72f1 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.outline.expect
@@ -12,7 +12,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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/rasta/enum.dart.strong.expect b/pkg/front_end/testcases/rasta/enum.dart.strong.expect
index 0b718d7..7ae9eb8 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.strong.expect
@@ -12,7 +12,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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/rasta/enum.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
index 0b718d7..7ae9eb8 100644
--- a/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/enum.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
     : self::Foo::index = index, self::Foo::_name = _name, super core::Object::•()
     ;
   method toString() → core::String*
-    return this.{=self::Foo::_name};
+    return this.{self::Foo::_name};
   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/static_field_lowering/enum.dart.weak.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.expect
index 1fcfe08..aede924 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.expect
@@ -12,7 +12,7 @@
     : self::A::index = index, self::A::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::A::_name};
+    return this.{self::A::_name};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect
index 1fcfe08..aede924 100644
--- a/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/static_field_lowering/enum.dart.weak.transformed.expect
@@ -12,7 +12,7 @@
     : self::A::index = index, self::A::_name = _name, super core::Object::•()
     ;
   method toString() → core::String
-    return this.{=self::A::_name};
+    return this.{self::A::_name};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/vm/testcases/bytecode/literals.dart.expect b/pkg/vm/testcases/bytecode/literals.dart.expect
index bb04201..5e58043 100644
--- a/pkg/vm/testcases/bytecode/literals.dart.expect
+++ b/pkg/vm/testcases/bytecode/literals.dart.expect
@@ -522,11 +522,11 @@
   Entry                0
   CheckStack           0
   Push                 FP[-5]
-  DirectCall           CP#0, 1
+  InterfaceCall        CP#0, 1
   ReturnTOS
 }
 ConstantPool {
-  [0] = DirectCall '#lib::A::get:_name', ArgDesc num-args 1, num-type-args 0, names []
+  [0] = InterfaceCall '#lib::A::get:_name', ArgDesc num-args 1, num-type-args 0, names []
   [1] = Reserved
 }
 
@@ -852,7 +852,7 @@
       : #lib::A::index = index, #lib::A::_name = _name, super dart.core::Object::•()
       ;
     method toString() → dart.core::String*
-      return this.{=#lib::A::_name};
+      return this.{#lib::A::_name};
     abstract member-signature get _identityHashCode() → dart.core::int*; -> dart.core::Object::_identityHashCode
     abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; -> dart.core::Object::_instanceOf
     abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; -> dart.core::Object::_simpleInstanceOf
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect b/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
index f5276be..250bacb 100644
--- a/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/control_flow.dart.expect
@@ -24,7 +24,7 @@
 RESULT: _T {}?
 ------------ TestEnum.toString ------------
 %this = _Parameter #0 [_T (#lib::TestEnum)+]
-t1* = _Call direct get [#lib::TestEnum._name] (%this)
+t1* = _Call virtual get [#lib::TestEnum._name] (%this)
 RESULT: t1
 ------------ TestEnum.values ------------
 
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
index 51aca60..76d2329 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/const_prop.dart.expect
@@ -15,7 +15,7 @@
 [@vm.inferred-type.metadata=dart.core::_Smi (value: 1)] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:4] [@vm.unboxing-info.metadata=()->i]  final field core::int* index;
 [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "B.b2")] [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false,getterSelectorId:5]  final field core::String* _name;
 [@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:6,getterSelectorId:7]  method toString() → core::String*
-    return [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "B.b2")] this.{=self::B::_name};
+    return [@vm.direct-call.metadata=#lib::B._name] [@vm.inferred-type.metadata=dart.core::_OneByteString (value: "B.b2")] this.{self::B::_name};
 }
 [@vm.unboxing-info.metadata=(i)->b]static method test0([@vm.inferred-type.metadata=dart.core::_Smi (value: 40)] core::int* arg) → void {
   core::print(arg);
diff --git a/sdk/lib/_internal/allowed_experiments.json b/sdk/lib/_internal/allowed_experiments.json
index 34f341e..8fe425f 100644
--- a/sdk/lib/_internal/allowed_experiments.json
+++ b/sdk/lib/_internal/allowed_experiments.json
@@ -58,6 +58,9 @@
     "flutter": {
       "experimentSet": "nullSafety"
     },
+    "flutter_driver": {
+      "experimentSet": "nullSafety"
+    },
     "flutter_test": {
       "experimentSet": "nullSafety"
     },
diff --git a/sdk/lib/async/stream.dart b/sdk/lib/async/stream.dart
index 76ced6e..8d2a625aa 100644
--- a/sdk/lib/async/stream.dart
+++ b/sdk/lib/async/stream.dart
@@ -667,12 +667,12 @@
    * If this stream sends an error that matches [test], then it is intercepted
    * by the [onError] function.
    *
-   * The [onError] callback must be of type `void onError(Object error)` or
-   * `void onError(Object error, StackTrace stackTrace)`.
+   * The [onError] callback must be of type `void Function(Object error)` or
+   * `void Function(Object error, StackTrace)`.
    * The function type determines whether [onError] is invoked with a stack
    * trace argument.
-   * The stack trace argument may be `null` if this stream received an error
-   * without a stack trace.
+   * The stack trace argument may be [StackTrace.empty] if this stream received
+   * an error without a stack trace.
    *
    * An asynchronous error `error` is matched by a test function if
    *`test(error)` returns true. If [test] is omitted, every error is considered
diff --git a/tools/VERSION b/tools/VERSION
index 3731a6d..590277c 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 11
 PATCH 0
-PRERELEASE 182
+PRERELEASE 183
 PRERELEASE_PATCH 0
\ No newline at end of file