Version 2.16.0-140.0.dev

Merge commit 'b7689097442b474d0882d3d98458e079c6dc98d6' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/builder/class_builder.dart b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
index e3f96b9..7069199 100644
--- a/pkg/front_end/lib/src/fasta/builder/class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
@@ -355,7 +355,7 @@
       List<DelayedActionPerformer> delayedActionPerformers,
       List<SynthesizedFunctionNode> synthesizedFunctionNodes) {
     void build(String ignore, Builder declaration) {
-      MemberBuilder member = declaration as MemberBuilder;
+      SourceMemberBuilder member = declaration as SourceMemberBuilder;
       member.buildOutlineExpressions(library, coreTypes,
           delayedActionPerformers, synthesizedFunctionNodes);
     }
diff --git a/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart b/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
index 5426ed8..c91f09f 100644
--- a/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
@@ -458,13 +458,14 @@
   }
 }
 
-class SyntheticConstructorBuilder extends DillConstructorBuilder {
-  MemberBuilderImpl? _origin;
+class SyntheticConstructorBuilder extends DillConstructorBuilder
+    with SourceMemberBuilderMixin {
+  SourceMemberBuilder? _origin;
   SynthesizedFunctionNode? _synthesizedFunctionNode;
 
   SyntheticConstructorBuilder(SourceClassBuilder parent,
       Constructor constructor, Procedure? constructorTearOff,
-      {MemberBuilderImpl? origin,
+      {SourceMemberBuilder? origin,
       SynthesizedFunctionNode? synthesizedFunctionNode})
       : _origin = origin,
         _synthesizedFunctionNode = synthesizedFunctionNode,
diff --git a/pkg/front_end/lib/src/fasta/builder/field_builder.dart b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
index 8acdc68..8a69632 100644
--- a/pkg/front_end/lib/src/fasta/builder/field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
@@ -82,7 +82,8 @@
   DartType get fieldType;
 }
 
-class SourceFieldBuilder extends MemberBuilderImpl implements FieldBuilder {
+class SourceFieldBuilder extends SourceMemberBuilderImpl
+    implements FieldBuilder {
   @override
   final String name;
 
diff --git a/pkg/front_end/lib/src/fasta/builder/function_builder.dart b/pkg/front_end/lib/src/fasta/builder/function_builder.dart
index 40c21f0..9fda3a8 100644
--- a/pkg/front_end/lib/src/fasta/builder/function_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/function_builder.dart
@@ -137,7 +137,7 @@
 }
 
 /// Common base class for constructor and procedure builders.
-abstract class FunctionBuilderImpl extends MemberBuilderImpl
+abstract class FunctionBuilderImpl extends SourceMemberBuilderImpl
     implements SourceFunctionBuilder {
   @override
   final List<MetadataBuilder>? metadata;
diff --git a/pkg/front_end/lib/src/fasta/builder/member_builder.dart b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
index 9108f06..d3e08e6 100644
--- a/pkg/front_end/lib/src/fasta/builder/member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/member_builder.dart
@@ -77,12 +77,6 @@
   /// setter of a field.
   bool get isConflictingSetter;
 
-  void buildOutlineExpressions(
-      SourceLibraryBuilder library,
-      CoreTypes coreTypes,
-      List<DelayedActionPerformer> delayedActionPerformers,
-      List<SynthesizedFunctionNode> synthesizedFunctionNodes);
-
   /// Returns the [ClassMember]s for the non-setter members created for this
   /// member builder.
   ///
@@ -98,10 +92,11 @@
   List<ClassMember> get localSetters;
 }
 
-abstract class SourceMemberBuilder implements MemberBuilder {}
-
 abstract class MemberBuilderImpl extends ModifierBuilderImpl
-    implements SourceMemberBuilder {
+    implements MemberBuilder {
+  @override
+  String get name;
+
   /// For top-level members, the parent is set correctly during
   /// construction. However, for class members, the parent is initially the
   /// library and updated later.
@@ -109,19 +104,30 @@
   Builder? parent;
 
   @override
-  String get name;
-
-  @override
   final Uri fileUri;
 
-  MemberDataForTesting? dataForTesting;
-
   MemberBuilderImpl(this.parent, int charOffset, [Uri? fileUri])
-      : dataForTesting =
-            retainDataForTesting ? new MemberDataForTesting() : null,
-        this.fileUri = (fileUri ?? parent?.fileUri)!,
+      : this.fileUri = (fileUri ?? parent?.fileUri)!,
         super(parent, charOffset);
 
+  /// The builder for the enclosing class, if any.
+  ClassBuilder? get classBuilder =>
+      parent is ClassBuilder ? parent as ClassBuilder : null;
+
+  @override
+  LibraryBuilder get library {
+    if (parent is LibraryBuilder) {
+      LibraryBuilder library = parent as LibraryBuilder;
+      return library.partOfLibrary ?? library;
+    } else if (parent is ExtensionBuilder) {
+      ExtensionBuilder extension = parent as ExtensionBuilder;
+      return extension.library;
+    } else {
+      ClassBuilder cls = parent as ClassBuilder;
+      return cls.library;
+    }
+  }
+
   @override
   bool get isDeclarationInstanceMember => isDeclarationMember && !isStatic;
 
@@ -146,14 +152,57 @@
   @override
   bool get isNative => false;
 
-  bool get isRedirectingGenerativeConstructor => false;
-
   @override
   bool get isExternal => (modifiers & externalMask) != 0;
 
   @override
   bool get isAbstract => (modifiers & abstractMask) != 0;
 
+  @override
+  bool get isConflictingSetter => false;
+
+  @override
+  String get fullNameForErrors => name;
+}
+
+abstract class SourceMemberBuilder implements MemberBuilder {
+  MemberDataForTesting? get dataForTesting;
+
+  /// Builds the core AST structures for this member as needed for the outline.
+  void buildMembers(
+      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f);
+
+  void buildOutlineExpressions(
+      SourceLibraryBuilder library,
+      CoreTypes coreTypes,
+      List<DelayedActionPerformer> delayedActionPerformers,
+      List<SynthesizedFunctionNode> synthesizedFunctionNodes);
+}
+
+mixin SourceMemberBuilderMixin implements SourceMemberBuilder {
+  @override
+  MemberDataForTesting? dataForTesting =
+      retainDataForTesting ? new MemberDataForTesting() : null;
+
+  @override
+  void buildMembers(
+      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
+    assert(false, "Unexpected call to $runtimeType.buildMembers.");
+  }
+}
+
+abstract class SourceMemberBuilderImpl extends MemberBuilderImpl
+    implements SourceMemberBuilder {
+  @override
+  MemberDataForTesting? dataForTesting;
+
+  SourceMemberBuilderImpl(Builder parent, int charOffset, [Uri? fileUri])
+      : dataForTesting =
+            retainDataForTesting ? new MemberDataForTesting() : null,
+        super(parent, charOffset, fileUri);
+
+  bool get isRedirectingGenerativeConstructor => false;
+
   bool? _isConflictingSetter;
 
   @override
@@ -167,20 +216,6 @@
     _isConflictingSetter = value;
   }
 
-  @override
-  LibraryBuilder get library {
-    if (parent is LibraryBuilder) {
-      LibraryBuilder library = parent as LibraryBuilder;
-      return library.partOfLibrary ?? library;
-    } else if (parent is ExtensionBuilder) {
-      ExtensionBuilder extension = parent as ExtensionBuilder;
-      return extension.library;
-    } else {
-      ClassBuilder cls = parent as ClassBuilder;
-      return cls.library;
-    }
-  }
-
   // TODO(johnniwinther): Remove this and create a [ProcedureBuilder] interface.
   @override
   ProcedureKind? get kind => unsupported("kind", charOffset, fileUri);
@@ -192,13 +227,6 @@
       List<DelayedActionPerformer> delayedActionPerformers,
       List<SynthesizedFunctionNode> synthesizedFunctionNodes) {}
 
-  /// Builds the core AST structures for this member as needed for the outline.
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f);
-
-  @override
-  String get fullNameForErrors => name;
-
   @override
   StringBuffer printOn(StringBuffer buffer) {
     if (isClassMember) {
@@ -212,10 +240,6 @@
   /// The builder for the enclosing class or extension, if any.
   DeclarationBuilder? get declarationBuilder =>
       parent is DeclarationBuilder ? parent as DeclarationBuilder : null;
-
-  /// The builder for the enclosing class, if any.
-  ClassBuilder? get classBuilder =>
-      parent is ClassBuilder ? parent as ClassBuilder : null;
 }
 
 enum BuiltMemberKind {
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart
index d800f03..18d8b6d 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_member_builder.dart
@@ -9,13 +9,10 @@
 
 import '../builder/builder.dart';
 import '../builder/member_builder.dart';
-import '../builder/library_builder.dart';
 
 import '../kernel/hierarchy/class_member.dart' show ClassMember;
 import '../kernel/hierarchy/members_builder.dart' show ClassMembersBuilder;
 import '../kernel/member_covariance.dart';
-import '../kernel/utils.dart'
-    show isRedirectingGenerativeConstructorImplementation;
 
 import '../modifier.dart'
     show abstractMask, constMask, externalMask, finalMask, lateMask, staticMask;
@@ -66,11 +63,11 @@
   @override
   bool get isFactory => identical(ProcedureKind.Factory, kind);
 
-  @override
+  /*@override
   bool get isRedirectingGenerativeConstructor {
     return isConstructor &&
         isRedirectingGenerativeConstructorImplementation(member as Constructor);
-  }
+  }*/
 
   @override
   bool get isSynthetic {
@@ -81,11 +78,11 @@
   @override
   bool get isAssignable => false;
 
-  @override
+  /*@override
   void buildMembers(
       LibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
     throw new UnsupportedError('DillMemberBuilder.buildMembers');
-  }
+  }*/
 
   List<ClassMember>? _localMembers;
   List<ClassMember>? _localSetters;
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 437924c..2070ba302 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -781,7 +781,7 @@
   SyntheticConstructorBuilder _makeMixinApplicationConstructor(
       SourceClassBuilder classBuilder,
       Class mixin,
-      MemberBuilderImpl superConstructorBuilder,
+      MemberBuilder superConstructorBuilder,
       Map<TypeParameter, DartType> substitutionMap,
       Reference? constructorReference,
       Reference? tearOffReference) {
@@ -888,7 +888,9 @@
         // the outline expressions. We pass on the original constructor and
         // cloned function nodes to ensure that the default values are computed
         // and cloned for the outline.
-        origin: isConst ? superConstructorBuilder : null,
+        origin: isConst && superConstructorBuilder is SourceMemberBuilder
+            ? superConstructorBuilder
+            : null,
         synthesizedFunctionNode: isConst ? synthesizedFunctionNode : null);
   }
 
diff --git a/pkg/front_end/lib/src/fasta/scope.dart b/pkg/front_end/lib/src/fasta/scope.dart
index f69cc83..af11d4d 100644
--- a/pkg/front_end/lib/src/fasta/scope.dart
+++ b/pkg/front_end/lib/src/fasta/scope.dart
@@ -16,6 +16,7 @@
 import 'kernel/body_builder.dart' show JumpTarget;
 import 'kernel/hierarchy/class_member.dart' show ClassMember;
 import 'kernel/kernel_helper.dart';
+import 'source/source_library_builder.dart';
 import 'util/helpers.dart' show DelayedActionPerformer;
 
 import 'fasta_codes.dart'
@@ -768,7 +769,10 @@
   }
 }
 
-mixin ErroneousMemberBuilderMixin implements MemberBuilder {
+mixin ErroneousMemberBuilderMixin implements SourceMemberBuilder {
+  @override
+  MemberDataForTesting? get dataForTesting => null;
+
   @override
   Member get member => throw new UnsupportedError('$runtimeType.member');
 
@@ -815,7 +819,7 @@
 
   @override
   void buildOutlineExpressions(
-      LibraryBuilder library,
+      SourceLibraryBuilder library,
       CoreTypes coreTypes,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<SynthesizedFunctionNode> synthesizedFunctionNodes) {
@@ -824,6 +828,12 @@
   }
 
   @override
+  void buildMembers(
+      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
+    assert(false, "Unexpected call to $runtimeType.buildMembers.");
+  }
+
+  @override
   List<ClassMember> get localMembers => const <ClassMember>[];
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 213a84e..367808c 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -7,6 +7,7 @@
 import 'package:kernel/ast.dart';
 import 'package:kernel/class_hierarchy.dart'
     show ClassHierarchy, ClassHierarchyMembers;
+import 'package:kernel/core_types.dart';
 import 'package:kernel/reference_from_index.dart' show IndexedClass;
 import 'package:kernel/src/bounds_checks.dart';
 import 'package:kernel/src/legacy_erasure.dart';
@@ -43,6 +44,7 @@
 import '../fasta_codes.dart';
 
 import '../kernel/combined_member_signature.dart';
+import '../kernel/kernel_helper.dart';
 import '../kernel/kernel_target.dart' show KernelTarget;
 import '../kernel/redirecting_factory_body.dart' show redirectingName;
 import '../kernel/type_algorithms.dart' show computeTypeVariableBuilderVariance;
@@ -56,6 +58,8 @@
 
 import '../type_inference/type_schema.dart';
 
+import '../util/helpers.dart';
+
 import 'source_library_builder.dart' show SourceLibraryBuilder;
 
 Class initializeClass(
@@ -156,8 +160,8 @@
                 charOffset,
                 fileUri);
           }
-        } else if (declaration is MemberBuilderImpl) {
-          MemberBuilderImpl memberBuilder = declaration;
+        } else if (declaration is SourceMemberBuilder) {
+          SourceMemberBuilder memberBuilder = declaration;
           memberBuilder.buildMembers(library,
               (Member member, BuiltMemberKind memberKind) {
             member.parent = cls;
@@ -556,7 +560,9 @@
             builder.procedure, typeEnvironment, cls.typeParameters);
         library.checkTypesInFunctionBuilder(builder, typeEnvironment);
       } else {
-        assert(builder is DillFieldBuilder && builder.name == redirectingName,
+        assert(
+            builder is _RedirectingConstructorsFieldBuilder &&
+                builder.name == redirectingName,
             "Unexpected member: $builder.");
       }
     });
@@ -894,8 +900,9 @@
     // [constructor.target].
     //
     // TODO(ahe): Add a kernel node to represent redirecting factory bodies.
-    DillFieldBuilder? constructorsField = origin.scope
-        .lookupLocalMember(redirectingName, setter: false) as DillFieldBuilder?;
+    _RedirectingConstructorsFieldBuilder? constructorsField =
+        origin.scope.lookupLocalMember(redirectingName, setter: false)
+            as _RedirectingConstructorsFieldBuilder?;
     if (constructorsField == null) {
       ListLiteral literal = new ListLiteral(<Expression>[]);
       Name name = new Name(redirectingName, library.library);
@@ -908,7 +915,7 @@
           getterReference: getterReference)
         ..fileOffset = cls.fileOffset;
       cls.addField(field);
-      constructorsField = new DillFieldBuilder(field, this);
+      constructorsField = new _RedirectingConstructorsFieldBuilder(field, this);
       origin.scope
           .addLocalMember(redirectingName, constructorsField, setter: false);
     }
@@ -1911,3 +1918,18 @@
   }
   return null;
 }
+
+class _RedirectingConstructorsFieldBuilder extends DillFieldBuilder
+    with SourceMemberBuilderMixin {
+  _RedirectingConstructorsFieldBuilder(Field field, SourceClassBuilder parent)
+      : super(field, parent);
+
+  @override
+  void buildOutlineExpressions(
+      SourceLibraryBuilder library,
+      CoreTypes coreTypes,
+      List<DelayedActionPerformer> delayedActionPerformers,
+      List<SynthesizedFunctionNode> synthesizedFunctionNodes) {
+    // Do nothing.
+  }
+}
diff --git a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
index 29e8ce8..7e37aee 100644
--- a/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_extension_builder.dart
@@ -128,8 +128,8 @@
             unexpected(fullNameForErrors, declaration.parent!.fullNameForErrors,
                 charOffset, fileUri);
           }
-        } else if (declaration is MemberBuilderImpl) {
-          MemberBuilderImpl memberBuilder = declaration;
+        } else if (declaration is SourceMemberBuilder) {
+          SourceMemberBuilder memberBuilder = declaration;
           memberBuilder.buildMembers(libraryBuilder,
               (Member member, BuiltMemberKind memberKind) {
             if (addMembersToLibrary &&
@@ -295,7 +295,7 @@
     }
 
     void build(String ignore, Builder declaration) {
-      MemberBuilder member = declaration as MemberBuilder;
+      SourceMemberBuilder member = declaration as SourceMemberBuilder;
       member.buildOutlineExpressions(library, coreTypes,
           delayedActionPerformers, synthesizedFunctionNodes);
     }
diff --git a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
index 6f3c22a..cfa2f08 100644
--- a/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_library_builder.dart
@@ -1025,9 +1025,10 @@
           conflictingGetables.add(currentGetable);
         }
       }
-      for (MemberBuilderImpl? currentSetter = setter as MemberBuilderImpl?;
+      for (SourceMemberBuilderImpl? currentSetter =
+              setter as SourceMemberBuilderImpl?;
           currentSetter != null;
-          currentSetter = currentSetter.next as MemberBuilderImpl?) {
+          currentSetter = currentSetter.next as SourceMemberBuilderImpl?) {
         bool conflict = conflictingGetables.isNotEmpty;
         for (Builder? currentGetable = getable;
             currentGetable != null;
@@ -2994,7 +2995,7 @@
       } else if (declaration is ExtensionBuilder) {
         declaration.buildOutlineExpressions(
             this, coreTypes, delayedActionPerformers, synthesizedFunctionNodes);
-      } else if (declaration is MemberBuilder) {
+      } else if (declaration is SourceMemberBuilder) {
         declaration.buildOutlineExpressions(
             this, coreTypes, delayedActionPerformers, synthesizedFunctionNodes);
       } else if (declaration is SourceTypeAliasBuilder) {
@@ -3038,7 +3039,7 @@
       if (!declaration.isPatch && !declaration.isDuplicate) {
         library.addExtension(extension);
       }
-    } else if (declaration is MemberBuilderImpl) {
+    } else if (declaration is SourceMemberBuilder) {
       declaration.buildMembers(this,
           (Member member, BuiltMemberKind memberKind) {
         if (member is Field) {
diff --git a/pkg/front_end/test/id_tests/assigned_variables_test.dart b/pkg/front_end/test/id_tests/assigned_variables_test.dart
index 0f833c1..4b1516b 100644
--- a/pkg/front_end/test/id_tests/assigned_variables_test.dart
+++ b/pkg/front_end/test/id_tests/assigned_variables_test.dart
@@ -45,8 +45,8 @@
       Member member,
       Map<Id, ActualData<_Data>> actualMap,
       {bool? verbose}) {
-    MemberBuilderImpl memberBuilder =
-        lookupMemberBuilder(compilerResult, member) as MemberBuilderImpl;
+    SourceMemberBuilder memberBuilder =
+        lookupMemberBuilder(compilerResult, member) as SourceMemberBuilder;
     AssignedVariablesForTesting<TreeNode, VariableDeclaration>?
         assignedVariables = memberBuilder
             .dataForTesting!.inferenceData.flowAnalysisResult.assignedVariables;
diff --git a/pkg/front_end/test/id_tests/definite_assignment_test.dart b/pkg/front_end/test/id_tests/definite_assignment_test.dart
index 536f1e1..f51a939 100644
--- a/pkg/front_end/test/id_tests/definite_assignment_test.dart
+++ b/pkg/front_end/test/id_tests/definite_assignment_test.dart
@@ -40,8 +40,8 @@
       Member member,
       Map<Id, ActualData<String>> actualMap,
       {bool? verbose}) {
-    MemberBuilderImpl memberBuilder =
-        lookupMemberBuilder(compilerResult, member) as MemberBuilderImpl;
+    SourceMemberBuilder memberBuilder =
+        lookupMemberBuilder(compilerResult, member) as SourceMemberBuilder;
     member.accept(new DefiniteAssignmentDataExtractor(compilerResult, actualMap,
         memberBuilder.dataForTesting!.inferenceData.flowAnalysisResult));
   }
diff --git a/pkg/front_end/test/id_tests/definite_unassignment_test.dart b/pkg/front_end/test/id_tests/definite_unassignment_test.dart
index 67ce244..7aeba6f 100644
--- a/pkg/front_end/test/id_tests/definite_unassignment_test.dart
+++ b/pkg/front_end/test/id_tests/definite_unassignment_test.dart
@@ -40,8 +40,8 @@
       Member member,
       Map<Id, ActualData<String>> actualMap,
       {bool? verbose}) {
-    MemberBuilderImpl memberBuilder =
-        lookupMemberBuilder(compilerResult, member) as MemberBuilderImpl;
+    SourceMemberBuilder memberBuilder =
+        lookupMemberBuilder(compilerResult, member) as SourceMemberBuilder;
     member.accept(new DefiniteUnassignmentDataExtractor(
         compilerResult,
         actualMap,
diff --git a/pkg/front_end/test/id_tests/inferred_type_arguments_test.dart b/pkg/front_end/test/id_tests/inferred_type_arguments_test.dart
index b4d3787..12ea3ed 100644
--- a/pkg/front_end/test/id_tests/inferred_type_arguments_test.dart
+++ b/pkg/front_end/test/id_tests/inferred_type_arguments_test.dart
@@ -44,8 +44,8 @@
       Member member,
       Map<Id, ActualData<List<DartType>>> actualMap,
       {bool? verbose}) {
-    MemberBuilderImpl memberBuilder =
-        lookupMemberBuilder(compilerResult, member) as MemberBuilderImpl;
+    SourceMemberBuilder memberBuilder =
+        lookupMemberBuilder(compilerResult, member) as SourceMemberBuilder;
     member.accept(new InferredTypeArgumentDataExtractor(
         compilerResult,
         memberBuilder.dataForTesting!.inferenceData.typeInferenceResult,
diff --git a/pkg/front_end/test/id_tests/inferred_variable_types_test.dart b/pkg/front_end/test/id_tests/inferred_variable_types_test.dart
index 7205920..a7bc0cb 100644
--- a/pkg/front_end/test/id_tests/inferred_variable_types_test.dart
+++ b/pkg/front_end/test/id_tests/inferred_variable_types_test.dart
@@ -44,8 +44,8 @@
       Member member,
       Map<Id, ActualData<DartType>> actualMap,
       {bool? verbose}) {
-    MemberBuilderImpl memberBuilder =
-        lookupMemberBuilder(compilerResult, member) as MemberBuilderImpl;
+    SourceMemberBuilder memberBuilder =
+        lookupMemberBuilder(compilerResult, member) as SourceMemberBuilder;
     member.accept(new InferredTypeArgumentDataExtractor(
         compilerResult,
         memberBuilder.dataForTesting!.inferenceData.typeInferenceResult,
diff --git a/pkg/front_end/test/id_tests/reachability_test.dart b/pkg/front_end/test/id_tests/reachability_test.dart
index 1362a08..8ea7394 100644
--- a/pkg/front_end/test/id_tests/reachability_test.dart
+++ b/pkg/front_end/test/id_tests/reachability_test.dart
@@ -42,8 +42,8 @@
       Member member,
       Map<Id, ActualData<Set<_ReachabilityAssertion>>> actualMap,
       {bool? verbose}) {
-    MemberBuilderImpl memberBuilder =
-        lookupMemberBuilder(compilerResult, member) as MemberBuilderImpl;
+    SourceMemberBuilder memberBuilder =
+        lookupMemberBuilder(compilerResult, member) as SourceMemberBuilder;
     member.accept(new ReachabilityDataExtractor(compilerResult, actualMap,
         memberBuilder.dataForTesting!.inferenceData.flowAnalysisResult));
   }
diff --git a/pkg/front_end/test/id_tests/why_not_promoted_test.dart b/pkg/front_end/test/id_tests/why_not_promoted_test.dart
index ca26b01..5899c55 100644
--- a/pkg/front_end/test/id_tests/why_not_promoted_test.dart
+++ b/pkg/front_end/test/id_tests/why_not_promoted_test.dart
@@ -47,8 +47,8 @@
       Member member,
       Map<Id, ActualData<String>> actualMap,
       {bool? verbose}) {
-    MemberBuilderImpl memberBuilder =
-        lookupMemberBuilder(compilerResult, member) as MemberBuilderImpl;
+    SourceMemberBuilder memberBuilder =
+        lookupMemberBuilder(compilerResult, member) as SourceMemberBuilder;
     member.accept(new WhyNotPromotedDataExtractor(compilerResult, actualMap,
         memberBuilder.dataForTesting!.inferenceData.flowAnalysisResult));
   }
diff --git a/pkg/front_end/test/patching/patching_test.dart b/pkg/front_end/test/patching/patching_test.dart
index 60129e5..2dc83ee 100644
--- a/pkg/front_end/test/patching/patching_test.dart
+++ b/pkg/front_end/test/patching/patching_test.dart
@@ -174,9 +174,9 @@
         features.addElement(Tags.initializers, desc);
       }
     }
-    MemberBuilderImpl? memberBuilder =
+    SourceMemberBuilder? memberBuilder =
         lookupMemberBuilder(compilerResult, member, required: false)
-            as MemberBuilderImpl?;
+            as SourceMemberBuilder?;
     MemberBuilder? patchMember = memberBuilder?.dataForTesting?.patchForTesting;
     if (patchMember != null) {
       features.add(Tags.patch);
diff --git a/tools/VERSION b/tools/VERSION
index 1fea6fb..967b65e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 16
 PATCH 0
-PRERELEASE 139
+PRERELEASE 140
 PRERELEASE_PATCH 0
\ No newline at end of file