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
