Version 2.17.0-226.0.dev

Merge commit 'ca63302b92676c640a5b16d457775d6e20cb7735' into 'dev'
diff --git a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
index 2e9538c..93079f4 100644
--- a/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/extension_builder.dart
@@ -3,16 +3,12 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:kernel/ast.dart';
-import 'package:kernel/class_hierarchy.dart';
 
 import '../fasta_codes.dart'
     show templateInternalProblemNotFoundIn, templateTypeArgumentMismatch;
-import '../kernel/kernel_helper.dart';
+import '../problems.dart';
 import '../scope.dart';
 import '../source/source_library_builder.dart';
-import '../problems.dart';
-import '../util/helpers.dart';
-
 import 'builder.dart';
 import 'declaration_builder.dart';
 import 'field_builder.dart';
@@ -35,12 +31,6 @@
   /// Return the [Extension] built by this builder.
   Extension get extension;
 
-  void buildOutlineExpressions(
-      SourceLibraryBuilder library,
-      ClassHierarchy classHierarchy,
-      List<DelayedActionPerformer> delayedActionPerformers,
-      List<DelayedDefaultValueCloner> delayedDefaultValueCloners);
-
   /// Looks up extension member by [name] taking privacy into account.
   ///
   /// If [setter] is `true` the sought member is a setter or assignable field.
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_extension_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_extension_builder.dart
index 8afa7d7..4307510 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_extension_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_extension_builder.dart
@@ -3,20 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:kernel/ast.dart';
-import 'package:kernel/class_hierarchy.dart';
 
 import '../builder/extension_builder.dart';
 import '../builder/library_builder.dart';
 import '../builder/member_builder.dart';
 import '../builder/type_builder.dart';
 import '../builder/type_variable_builder.dart';
-
-import '../kernel/kernel_helper.dart';
-
 import '../scope.dart';
-
-import '../util/helpers.dart';
-
 import 'dill_class_builder.dart';
 import 'dill_extension_member_builder.dart';
 
@@ -111,13 +104,4 @@
     return _onType ??=
         libraryBuilder.loader.computeTypeBuilder(extension.onType);
   }
-
-  @override
-  void buildOutlineExpressions(
-      LibraryBuilder library,
-      ClassHierarchy classHierarchy,
-      List<DelayedActionPerformer> delayedActionPerformers,
-      List<DelayedDefaultValueCloner> delayedDefaultValues) {
-    // TODO(johnniwinther): Remove the need for this.
-  }
 }
diff --git a/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart b/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart
index 860b25a..8294c53 100644
--- a/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/implicit_field_type.dart
@@ -133,8 +133,8 @@
       return inferredType!;
     } else if (parent is SourceEnumBuilder &&
         parent.elementBuilders.contains(fieldBuilder)) {
-      inferredType = parent.buildElement(parent.libraryBuilder, fieldBuilder,
-          parent.libraryBuilder.loader.coreTypes);
+      inferredType = parent.buildElement(
+          fieldBuilder, parent.libraryBuilder.loader.coreTypes);
     } else if (initializerToken != null) {
       InterfaceType? enclosingClassThisType = fieldBuilder.classBuilder == null
           ? null
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 efad1ae..a502c03 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -1138,7 +1138,7 @@
         // outline for const constructors, and additionally it is required for
         // a potential subclass using super initializing parameters that will
         // required the cloning of the default values.
-        origin: superConstructorBuilder,
+        definingConstructor: superConstructorBuilder,
         delayedDefaultValueCloner: delayedDefaultValueCloner);
   }
 
diff --git a/pkg/front_end/lib/src/fasta/scope.dart b/pkg/front_end/lib/src/fasta/scope.dart
index c0e106f..f78f458 100644
--- a/pkg/front_end/lib/src/fasta/scope.dart
+++ b/pkg/front_end/lib/src/fasta/scope.dart
@@ -815,7 +815,6 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
@@ -824,8 +823,7 @@
   }
 
   @override
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
+  void buildMembers(void Function(Member, BuiltMemberKind) f) {
     assert(false, "Unexpected call to $runtimeType.buildMembers.");
   }
 
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 808f0a0..84ed77e 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
@@ -155,8 +155,8 @@
   SourceLibraryBuilder get libraryBuilder =>
       super.libraryBuilder as SourceLibraryBuilder;
 
-  Class build(SourceLibraryBuilder library, LibraryBuilder coreLibrary) {
-    SourceLibraryBuilder.checkMemberConflicts(library, scope,
+  Class build(LibraryBuilder coreLibrary) {
+    SourceLibraryBuilder.checkMemberConflicts(libraryBuilder, scope,
         // These checks are performed as part of the class hierarchy
         // computation.
         checkForInstanceVsStaticConflict: false,
@@ -179,8 +179,8 @@
           }
         } else if (declaration is SourceMemberBuilder) {
           SourceMemberBuilder memberBuilder = declaration;
-          memberBuilder.buildMembers(library,
-              (Member member, BuiltMemberKind memberKind) {
+          memberBuilder
+              .buildMembers((Member member, BuiltMemberKind memberKind) {
             member.parent = cls;
             if (!memberBuilder.isPatch &&
                 !memberBuilder.isDuplicate &&
@@ -214,12 +214,12 @@
       supertypeBuilder = _checkSupertype(supertypeBuilder!);
     }
     Supertype? supertype =
-        supertypeBuilder?.buildSupertype(library, charOffset, fileUri);
+        supertypeBuilder?.buildSupertype(libraryBuilder, charOffset, fileUri);
     if (supertype != null) {
       Class superclass = supertype.classNode;
       if (superclass.name == 'Function' &&
           superclass.enclosingLibrary == coreLibrary.library) {
-        library.addProblem(
+        libraryBuilder.addProblem(
             messageExtendFunction, charOffset, noLength, fileUri);
         supertype = null;
         supertypeBuilder = null;
@@ -232,7 +232,7 @@
       // cannot be extended.  However, a mixin declaration with a single
       // superclass constraint is encoded with the constraint as the supertype,
       // and that is allowed to be a mixin's interface.
-      library.addProblem(
+      libraryBuilder.addProblem(
           templateSupertypeIsIllegal.withArguments(actualCls.superclass!.name),
           charOffset,
           noLength,
@@ -247,10 +247,11 @@
     if (mixedInTypeBuilder != null) {
       mixedInTypeBuilder = _checkSupertype(mixedInTypeBuilder!);
     }
-    Supertype? mixedInType =
-        mixedInTypeBuilder?.buildMixedInType(library, charOffset, fileUri);
+    Supertype? mixedInType = mixedInTypeBuilder?.buildMixedInType(
+        libraryBuilder, charOffset, fileUri);
     if (_isFunction(mixedInType, coreLibrary)) {
-      library.addProblem(messageMixinFunction, charOffset, noLength, fileUri);
+      libraryBuilder.addProblem(
+          messageMixinFunction, charOffset, noLength, fileUri);
       mixedInType = null;
       mixedInTypeBuilder = null;
       actualCls.isAnonymousMixin = false;
@@ -269,11 +270,11 @@
     if (interfaceBuilders != null) {
       for (int i = 0; i < interfaceBuilders!.length; ++i) {
         interfaceBuilders![i] = _checkSupertype(interfaceBuilders![i]);
-        Supertype? supertype =
-            interfaceBuilders![i].buildSupertype(library, charOffset, fileUri);
+        Supertype? supertype = interfaceBuilders![i]
+            .buildSupertype(libraryBuilder, charOffset, fileUri);
         if (supertype != null) {
           if (_isFunction(supertype, coreLibrary)) {
-            library.addProblem(
+            libraryBuilder.addProblem(
                 messageImplementFunction, charOffset, noLength, fileUri);
             continue;
           }
@@ -338,21 +339,20 @@
   }
 
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
     void build(String ignore, Builder declaration) {
       SourceMemberBuilder member = declaration as SourceMemberBuilder;
-      member.buildOutlineExpressions(library, classHierarchy,
-          delayedActionPerformers, delayedDefaultValueCloners);
+      member.buildOutlineExpressions(
+          classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
     }
 
     MetadataBuilder.buildAnnotations(isPatch ? origin.cls : cls, metadata,
-        library, this, null, fileUri, library.scope);
+        libraryBuilder, this, null, fileUri, libraryBuilder.scope);
     if (typeVariables != null) {
       for (int i = 0; i < typeVariables!.length; i++) {
-        typeVariables![i].buildOutlineExpressions(library, this, null,
+        typeVariables![i].buildOutlineExpressions(libraryBuilder, this, null,
             classHierarchy, delayedActionPerformers, scope.parent!);
       }
     }
@@ -2826,7 +2826,6 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
diff --git a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
index 59cbfa9..ab09a5f 100644
--- a/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_constructor_builder.dart
@@ -12,7 +12,6 @@
 import '../builder/class_builder.dart';
 import '../builder/constructor_builder.dart';
 import '../builder/formal_parameter_builder.dart';
-import '../builder/library_builder.dart';
 import '../builder/member_builder.dart';
 import '../builder/metadata_builder.dart';
 import '../builder/named_type_builder.dart';
@@ -52,7 +51,10 @@
 import 'source_function_builder.dart';
 
 abstract class SourceConstructorBuilder
-    implements ConstructorBuilder, SourceMemberBuilder {}
+    implements ConstructorBuilder, SourceMemberBuilder {
+  void addSuperParameterDefaultValueCloners(
+      List<DelayedDefaultValueCloner> delayedDefaultValueCloners);
+}
 
 class DeclaredSourceConstructorBuilder extends SourceFunctionBuilderImpl
     implements SourceConstructorBuilder {
@@ -174,9 +176,8 @@
   }
 
   @override
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
-    Member member = build(library);
+  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+    Member member = build();
     f(member, BuiltMemberKind.Constructor);
     if (_constructorTearOff != null) {
       f(_constructorTearOff!, BuiltMemberKind.Method);
@@ -186,19 +187,19 @@
   bool _hasBeenBuilt = false;
 
   @override
-  Constructor build(SourceLibraryBuilder sourceLibraryBuilder) {
+  Constructor build() {
     if (!_hasBeenBuilt) {
-      buildFunction(sourceLibraryBuilder);
+      buildFunction();
       _constructor.function.fileOffset = charOpenParenOffset;
       _constructor.function.fileEndOffset = _constructor.fileEndOffset;
       _constructor.function.typeParameters = const <TypeParameter>[];
       _constructor.isConst = isConst;
       _constructor.isExternal = isExternal;
-      updatePrivateMemberName(_constructor, sourceLibraryBuilder);
+      updatePrivateMemberName(_constructor, libraryBuilder);
 
       if (_constructorTearOff != null) {
         buildConstructorTearOffProcedure(_constructorTearOff!, _constructor,
-            classBuilder.cls, sourceLibraryBuilder);
+            classBuilder.cls, libraryBuilder);
       }
 
       _hasBeenBuilt = true;
@@ -216,11 +217,7 @@
         }
       }
       if (needsInference) {
-        assert(
-            libraryBuilder == sourceLibraryBuilder,
-            "Unexpected library builder ${sourceLibraryBuilder} for"
-            " constructor $this in ${libraryBuilder}.");
-        sourceLibraryBuilder.loader
+        libraryBuilder.loader
             .registerConstructorToBeInferred(_constructor, this);
       }
     }
@@ -350,7 +347,8 @@
     if (superTargetBuilder is DeclaredSourceConstructorBuilder) {
       superTargetBuilder.inferFormalTypes(typeEnvironment);
     } else if (superTargetBuilder is SyntheticSourceConstructorBuilder) {
-      MemberBuilder? superTargetOriginBuilder = superTargetBuilder.actualOrigin;
+      MemberBuilder? superTargetOriginBuilder =
+          superTargetBuilder._effectivelyDefiningConstructor;
       if (superTargetOriginBuilder is DeclaredSourceConstructorBuilder) {
         superTargetOriginBuilder.inferFormalTypes(typeEnvironment);
       }
@@ -432,17 +430,16 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
     if (_hasBuiltOutlines) return;
     if (isConst && isPatch) {
-      origin.buildOutlineExpressions(library, classHierarchy,
-          delayedActionPerformers, delayedDefaultValueCloners);
+      origin.buildOutlineExpressions(
+          classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
     }
-    super.buildOutlineExpressions(library, classHierarchy,
-        delayedActionPerformers, delayedDefaultValueCloners);
+    super.buildOutlineExpressions(
+        classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
 
     // For modular compilation purposes we need to include initializers
     // for const constructors into the outline. We also need to parse
@@ -458,9 +455,9 @@
       } else {
         formalParameterScope = null;
       }
-      BodyBuilder bodyBuilder = library.loader
+      BodyBuilder bodyBuilder = libraryBuilder.loader
           .createBodyBuilderForOutlineExpression(
-              library, classBuilder, this, classBuilder.scope, fileUri,
+              libraryBuilder, classBuilder, this, classBuilder.scope, fileUri,
               formalParameterScope: formalParameterScope);
       bodyBuilder.constantContext = ConstantContext.required;
       bodyBuilder.parseInitializers(beginInitializers!,
@@ -475,6 +472,7 @@
     _hasBuiltOutlines = true;
   }
 
+  @override
   void addSuperParameterDefaultValueCloners(
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
     ConstructorBuilder? superTargetBuilder =
@@ -492,20 +490,20 @@
   }
 
   @override
-  void buildFunction(SourceLibraryBuilder library) {
+  void buildFunction() {
     // According to the specification §9.3 the return type of a constructor
     // function is its enclosing class.
-    super.buildFunction(library);
+    super.buildFunction();
     Class enclosingClass = classBuilder.cls;
     List<DartType> typeParameterTypes = <DartType>[];
     for (int i = 0; i < enclosingClass.typeParameters.length; i++) {
       TypeParameter typeParameter = enclosingClass.typeParameters[i];
       typeParameterTypes.add(
           new TypeParameterType.withDefaultNullabilityForLibrary(
-              typeParameter, library.library));
+              typeParameter, libraryBuilder.library));
     }
     function.returnType = new InterfaceType(
-        enclosingClass, library.nonNullable, typeParameterTypes);
+        enclosingClass, libraryBuilder.nonNullable, typeParameterTypes);
   }
 
   @override
@@ -764,20 +762,24 @@
 }
 
 class SyntheticSourceConstructorBuilder extends DillConstructorBuilder
-    with SourceMemberBuilderMixin {
-  // TODO(johnniwinther,cstefantsova): Rename [_origin] to avoid the confusion
-  // with patches.
-  // TODO(johnniwinther): Change the type of [_origin] to SourceMemberBuilder
-  // when it's the supertype for both old SourceMemberBuilder and
-  // SyntheticConstructorBuilder.
-  MemberBuilder? _origin;
+    with SourceMemberBuilderMixin
+    implements SourceConstructorBuilder {
+  /// The constructor from which this synthesized constructor is defined.
+  ///
+  /// This defines the parameter structure and the default values of this
+  /// constructor.
+  ///
+  /// The [_immediatelyDefiningConstructor] might itself a synthesized
+  /// constructor and [_effectivelyDefiningConstructor] can be used to find
+  /// the constructor that effectively defines this constructor.
+  MemberBuilder? _immediatelyDefiningConstructor;
   DelayedDefaultValueCloner? _delayedDefaultValueCloner;
 
   SyntheticSourceConstructorBuilder(SourceClassBuilder parent,
       Constructor constructor, Procedure? constructorTearOff,
-      {MemberBuilder? origin,
+      {MemberBuilder? definingConstructor,
       DelayedDefaultValueCloner? delayedDefaultValueCloner})
-      : _origin = origin,
+      : _immediatelyDefiningConstructor = definingConstructor,
         _delayedDefaultValueCloner = delayedDefaultValueCloner,
         super(constructor, constructorTearOff, parent);
 
@@ -785,53 +787,43 @@
   SourceLibraryBuilder get libraryBuilder =>
       super.libraryBuilder as SourceLibraryBuilder;
 
-  // TODO(johnniwinther,cstefantsova): Rename [actualOrigin] to avoid the
-  //  confusion with patches.
-  MemberBuilder? get actualOrigin {
-    MemberBuilder? origin = _origin;
+  MemberBuilder? get _effectivelyDefiningConstructor {
+    MemberBuilder? origin = _immediatelyDefiningConstructor;
     while (origin is SyntheticSourceConstructorBuilder) {
-      origin = origin._origin;
+      origin = origin._immediatelyDefiningConstructor;
     }
     return origin;
   }
 
   List<FormalParameterBuilder>? get formals {
-    MemberBuilder? origin = actualOrigin;
+    MemberBuilder? origin = _effectivelyDefiningConstructor;
     return origin is DeclaredSourceConstructorBuilder ? origin.formals : null;
   }
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder libraryBuilder,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
-    if (_origin != null) {
+    if (_immediatelyDefiningConstructor != null) {
       // Ensure that default value expressions have been created for [_origin].
-      LibraryBuilder originLibraryBuilder = _origin!.libraryBuilder;
-      if (originLibraryBuilder is SourceLibraryBuilder) {
-        // If [_origin] is from a source library, we need to build the default
-        // values and initializers first.
-        MemberBuilder origin = _origin!;
-        if (origin is DeclaredSourceConstructorBuilder) {
-          origin.buildOutlineExpressions(originLibraryBuilder, classHierarchy,
-              delayedActionPerformers, delayedDefaultValueCloners);
-        } else if (origin is SyntheticSourceConstructorBuilder) {
-          origin.buildOutlineExpressions(originLibraryBuilder, classHierarchy,
-              delayedActionPerformers, delayedDefaultValueCloners);
-        }
+      // If [_origin] is from a source library, we need to build the default
+      // values and initializers first.
+      MemberBuilder origin = _immediatelyDefiningConstructor!;
+      if (origin is SourceConstructorBuilder) {
+        origin.buildOutlineExpressions(classHierarchy, delayedActionPerformers,
+            delayedDefaultValueCloners);
       }
       addSuperParameterDefaultValueCloners(delayedDefaultValueCloners);
-      _origin = null;
+      _immediatelyDefiningConstructor = null;
     }
   }
 
+  @override
   void addSuperParameterDefaultValueCloners(
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
-    MemberBuilder? origin = _origin;
-    if (origin is DeclaredSourceConstructorBuilder) {
-      origin.addSuperParameterDefaultValueCloners(delayedDefaultValueCloners);
-    } else if (origin is SyntheticSourceConstructorBuilder) {
+    MemberBuilder? origin = _immediatelyDefiningConstructor;
+    if (origin is SourceConstructorBuilder) {
       origin.addSuperParameterDefaultValueCloners(delayedDefaultValueCloners);
     }
     if (_delayedDefaultValueCloner != null) {
diff --git a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
index b9c2816..d634e7f 100644
--- a/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_enum_builder.dart
@@ -552,21 +552,17 @@
   }
 
   @override
-  Class build(
-      SourceLibraryBuilder sourceLibraryBuilder, LibraryBuilder coreLibrary) {
+  Class build(LibraryBuilder coreLibrary) {
     cls.isEnum = true;
-    intType.resolveIn(
-        coreLibrary.scope, charOffset, fileUri, sourceLibraryBuilder);
+    intType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
     stringType.resolveIn(
-        coreLibrary.scope, charOffset, fileUri, sourceLibraryBuilder);
+        coreLibrary.scope, charOffset, fileUri, libraryBuilder);
     objectType.resolveIn(
-        coreLibrary.scope, charOffset, fileUri, sourceLibraryBuilder);
+        coreLibrary.scope, charOffset, fileUri, libraryBuilder);
     NamedTypeBuilder? enumType = _computeEnumSupertype();
-    enumType!.resolveIn(
-        coreLibrary.scope, charOffset, fileUri, sourceLibraryBuilder);
+    enumType!.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
 
-    listType.resolveIn(
-        coreLibrary.scope, charOffset, fileUri, sourceLibraryBuilder);
+    listType.resolveIn(coreLibrary.scope, charOffset, fileUri, libraryBuilder);
 
     List<Expression> values = <Expression>[];
     if (enumConstantInfos != null) {
@@ -575,7 +571,7 @@
           Builder declaration = firstMemberNamed(enumConstantInfo.name)!;
           if (declaration.isField) {
             SourceFieldBuilder fieldBuilder = declaration as SourceFieldBuilder;
-            fieldBuilder.build(sourceLibraryBuilder);
+            fieldBuilder.build();
             values.add(new StaticGet(fieldBuilder.field));
           }
         }
@@ -583,7 +579,7 @@
     }
     SourceFieldBuilder valuesBuilder =
         firstMemberNamed("values") as SourceFieldBuilder;
-    valuesBuilder.build(sourceLibraryBuilder);
+    valuesBuilder.build();
 
     // The super initializer for the synthesized default constructor is
     // inserted here if the enum's supertype is _Enum to preserve the legacy
@@ -593,12 +589,11 @@
     // building.
     if (identical(this.supertypeBuilder, enumType)) {
       if (synthesizedDefaultConstructorBuilder != null) {
-        Constructor constructor =
-            synthesizedDefaultConstructorBuilder!.build(sourceLibraryBuilder);
+        Constructor constructor = synthesizedDefaultConstructorBuilder!.build();
         ClassBuilder objectClass = objectType.declaration as ClassBuilder;
         ClassBuilder enumClass = enumType.declaration as ClassBuilder;
         MemberBuilder? superConstructor = enumClass.findConstructorOrFactory(
-            "", charOffset, fileUri, sourceLibraryBuilder);
+            "", charOffset, fileUri, libraryBuilder);
         if (superConstructor == null || !superConstructor.isConstructor) {
           // TODO(ahe): Ideally, we would also want to check that [Object]'s
           // unnamed constructor requires no arguments. But that information
@@ -615,19 +610,18 @@
           constructor.initializers.add(new SuperInitializer(
               superConstructor.member as Constructor,
               new Arguments.forwarded(
-                  constructor.function, sourceLibraryBuilder.library))
+                  constructor.function, libraryBuilder.library))
             ..parent = constructor);
         }
         synthesizedDefaultConstructorBuilder = null;
       }
     }
 
-    return super.build(sourceLibraryBuilder, coreLibrary);
+    return super.build(coreLibrary);
   }
 
-  DartType buildElement(SourceLibraryBuilder sourceLibraryBuilder,
-      SourceFieldBuilder fieldBuilder, CoreTypes coreTypes) {
-    DartType selfType = this.selfType.build(sourceLibraryBuilder);
+  DartType buildElement(SourceFieldBuilder fieldBuilder, CoreTypes coreTypes) {
+    DartType selfType = this.selfType.build(libraryBuilder);
     Builder? builder = firstMemberNamed(fieldBuilder.name);
     if (builder == null || !builder.isField) return selfType;
     fieldBuilder = builder as SourceFieldBuilder;
@@ -676,7 +670,7 @@
         typeArguments.add(typeBuilder.build(libraryBuilder));
       }
     }
-    if (sourceLibraryBuilder.enableEnhancedEnumsInLibrary) {
+    if (libraryBuilder.enableEnhancedEnumsInLibrary) {
       // We need to create a BodyBuilder to solve the following: 1) if
       // the arguments token is provided, we'll use the BodyBuilder to
       // parse them and perform inference, 2) if the type arguments
@@ -736,8 +730,8 @@
           !constructorBuilder.isConst) {
         // This can only occur if there enhanced enum features are used
         // when they are not enabled.
-        assert(sourceLibraryBuilder.loader.hasSeenError);
-        String text = sourceLibraryBuilder.loader.target.context
+        assert(libraryBuilder.loader.hasSeenError);
+        String text = libraryBuilder.loader.target.context
             .format(
                 templateConstructorNotFound
                     .withArguments(fullConstructorNameForErrors)
@@ -764,7 +758,6 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder sourceLibraryBuilder,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
@@ -775,7 +768,7 @@
           Builder declaration = firstMemberNamed(enumConstantInfo.name)!;
           if (declaration.isField) {
             SourceFieldBuilder fieldBuilder = declaration as SourceFieldBuilder;
-            fieldBuilder.build(sourceLibraryBuilder);
+            fieldBuilder.build();
             values.add(new StaticGet(fieldBuilder.field));
           }
         }
@@ -789,8 +782,8 @@
             typeArgument: rawType(libraryBuilder.nonNullable), isConst: true));
 
     for (SourceFieldBuilder elementBuilder in elementBuilders) {
-      elementBuilder.fieldType = buildElement(
-          sourceLibraryBuilder, elementBuilder, classHierarchy.coreTypes);
+      elementBuilder.fieldType =
+          buildElement(elementBuilder, classHierarchy.coreTypes);
     }
     delayedActionPerformers.addAll(_delayedActionPerformers);
     _delayedActionPerformers.clear();
@@ -813,8 +806,8 @@
           resultType: nameField.getterType),
     ]));
 
-    super.buildOutlineExpressions(libraryBuilder, classHierarchy,
-        delayedActionPerformers, delayedDefaultValueCloners);
+    super.buildOutlineExpressions(
+        classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
   }
 }
 
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 ca74610..409a95f 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
@@ -82,19 +82,18 @@
   Extension get extension => isPatch ? origin._extension : _extension;
 
   /// Builds the [Extension] for this extension build and inserts the members
-  /// into the [Library] of [sourceLibraryBuilder].
+  /// into the [Library] of [libraryBuilder].
   ///
   /// [addMembersToLibrary] is `true` if the extension members should be added
   /// to the library. This is `false` if the extension is in conflict with
   /// another library member. In this case, the extension member should not be
   /// added to the library to avoid name clashes with other members in the
   /// library.
-  Extension build(
-      SourceLibraryBuilder sourceLibraryBuilder, LibraryBuilder coreLibrary,
+  Extension build(LibraryBuilder coreLibrary,
       {required bool addMembersToLibrary}) {
-    _extension.onType = onType.build(sourceLibraryBuilder);
+    _extension.onType = onType.build(libraryBuilder);
     extensionTypeShowHideClauseBuilder.buildAndStoreTypes(
-        _extension, sourceLibraryBuilder);
+        _extension, libraryBuilder);
 
     SourceLibraryBuilder.checkMemberConflicts(libraryBuilder, scope,
         checkForInstanceVsStaticConflict: true,
@@ -124,8 +123,8 @@
           }
         } else if (declaration is SourceMemberBuilder) {
           SourceMemberBuilder memberBuilder = declaration;
-          memberBuilder.buildMembers(sourceLibraryBuilder,
-              (Member member, BuiltMemberKind memberKind) {
+          memberBuilder
+              .buildMembers((Member member, BuiltMemberKind memberKind) {
             if (addMembersToLibrary &&
                 !memberBuilder.isPatch &&
                 !memberBuilder.isDuplicate &&
@@ -168,17 +167,17 @@
               assert(kind != null);
               Reference memberReference;
               if (member is Field) {
-                sourceLibraryBuilder.library.addField(member);
+                libraryBuilder.library.addField(member);
                 memberReference = member.fieldReference;
               } else if (member is Procedure) {
-                sourceLibraryBuilder.library.addProcedure(member);
+                libraryBuilder.library.addProcedure(member);
                 memberReference = member.reference;
               } else {
                 unhandled("${member.runtimeType}", "buildBuilders",
                     member.fileOffset, member.fileUri);
               }
               extension.members.add(new ExtensionMemberDescriptor(
-                  name: new Name(name, sourceLibraryBuilder.library),
+                  name: new Name(name, libraryBuilder.library),
                   member: memberReference,
                   isStatic: memberBuilder.isStatic,
                   kind: kind));
@@ -273,25 +272,23 @@
     });
   }
 
-  @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
     MetadataBuilder.buildAnnotations(isPatch ? origin.extension : extension,
-        metadata, library, this, null, fileUri, library.scope);
+        metadata, libraryBuilder, this, null, fileUri, libraryBuilder.scope);
     if (typeParameters != null) {
       for (int i = 0; i < typeParameters!.length; i++) {
-        typeParameters![i].buildOutlineExpressions(library, this, null,
+        typeParameters![i].buildOutlineExpressions(libraryBuilder, this, null,
             classHierarchy, delayedActionPerformers, scope.parent!);
       }
     }
 
     void build(String ignore, Builder declaration) {
       SourceMemberBuilder member = declaration as SourceMemberBuilder;
-      member.buildOutlineExpressions(library, classHierarchy,
-          delayedActionPerformers, delayedDefaultValueCloners);
+      member.buildOutlineExpressions(
+          classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
     }
 
     scope.forEach(build);
diff --git a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
index d235363..b7ab94d 100644
--- a/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_factory_builder.dart
@@ -130,9 +130,8 @@
   Iterable<Member> get exportedMembers => [_procedure];
 
   @override
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
-    Member member = build(library);
+  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+    Member member = build();
     f(member, BuiltMemberKind.Method);
     if (_factoryTearOff != null) {
       f(_factoryTearOff!, BuiltMemberKind.Method);
@@ -140,8 +139,8 @@
   }
 
   @override
-  Procedure build(SourceLibraryBuilder libraryBuilder) {
-    buildFunction(libraryBuilder);
+  Procedure build() {
+    buildFunction();
     _procedureInternal.function.fileOffset = charOpenParenOffset;
     _procedureInternal.function.fileEndOffset =
         _procedureInternal.fileEndOffset;
@@ -162,13 +161,12 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
     if (_hasBuiltOutlines) return;
-    super.buildOutlineExpressions(library, classHierarchy,
-        delayedActionPerformers, delayedDefaultValueCloners);
+    super.buildOutlineExpressions(
+        classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
     _hasBuiltOutlines = true;
   }
 
@@ -346,9 +344,8 @@
   }
 
   @override
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
-    Member member = build(library);
+  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+    Member member = build();
     f(member, BuiltMemberKind.RedirectingFactory);
     if (_factoryTearOff != null) {
       f(_factoryTearOff!, BuiltMemberKind.Method);
@@ -356,8 +353,8 @@
   }
 
   @override
-  Procedure build(SourceLibraryBuilder sourceLibraryBuilder) {
-    buildFunction(sourceLibraryBuilder);
+  Procedure build() {
+    buildFunction();
     _procedureInternal.function.fileOffset = charOpenParenOffset;
     _procedureInternal.function.fileEndOffset =
         _procedureInternal.fileEndOffset;
@@ -372,11 +369,11 @@
           (int i) => redirectionTarget.typeArguments![i].build(libraryBuilder),
           growable: false);
     }
-    updatePrivateMemberName(_procedureInternal, sourceLibraryBuilder);
+    updatePrivateMemberName(_procedureInternal, libraryBuilder);
     if (_factoryTearOff != null) {
       _tearOffTypeParameters =
           buildRedirectingFactoryTearOffProcedureParameters(
-              _factoryTearOff!, _procedureInternal, sourceLibraryBuilder);
+              _factoryTearOff!, _procedureInternal, libraryBuilder);
     }
     return _procedureInternal;
   }
@@ -386,35 +383,32 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
     if (_hasBuiltOutlines) return;
     if (isConst && isPatch) {
-      origin.buildOutlineExpressions(library, classHierarchy,
-          delayedActionPerformers, delayedDefaultValueCloners);
+      origin.buildOutlineExpressions(
+          classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
     }
-    super.buildOutlineExpressions(library, classHierarchy,
-        delayedActionPerformers, delayedDefaultValueCloners);
+    super.buildOutlineExpressions(
+        classHierarchy, delayedActionPerformers, delayedDefaultValueCloners);
     RedirectingFactoryBody redirectingFactoryBody =
         _procedureInternal.function.body as RedirectingFactoryBody;
     List<DartType>? typeArguments = redirectingFactoryBody.typeArguments;
     Member? target = redirectingFactoryBody.target;
     if (typeArguments != null && typeArguments.any((t) => t is UnknownType)) {
-      TypeInferrer inferrer = library.loader.typeInferenceEngine
+      TypeInferrer inferrer = libraryBuilder.loader.typeInferenceEngine
           .createLocalTypeInferrer(
-              fileUri, classBuilder!.thisType, library, null);
-      inferrer.helper = library.loader.createBodyBuilderForOutlineExpression(
-          library, classBuilder, this, classBuilder!.scope, fileUri);
+              fileUri, classBuilder!.thisType, libraryBuilder, null);
+      inferrer.helper = libraryBuilder.loader
+          .createBodyBuilderForOutlineExpression(
+              libraryBuilder, classBuilder, this, classBuilder!.scope, fileUri);
       Builder? targetBuilder = redirectionTarget.target;
       if (targetBuilder is SourceMemberBuilder) {
         // Ensure that target has been built.
-        targetBuilder.buildOutlineExpressions(
-            targetBuilder.libraryBuilder,
-            classHierarchy,
-            delayedActionPerformers,
-            delayedDefaultValueCloners);
+        targetBuilder.buildOutlineExpressions(classHierarchy,
+            delayedActionPerformers, delayedDefaultValueCloners);
       }
       if (targetBuilder is FunctionBuilder) {
         target = targetBuilder.member;
@@ -495,7 +489,7 @@
             target!,
             typeArguments,
             _tearOffTypeParameters!,
-            library));
+            libraryBuilder));
       }
       Map<TypeParameter, DartType> substitutionMap;
       if (function.typeParameters.length == typeArguments.length) {
@@ -510,7 +504,7 @@
       }
       delayedDefaultValueCloners.add(new DelayedDefaultValueCloner(
           substitutionMap, target!.function!, function,
-          libraryBuilder: library, identicalSignatures: false));
+          libraryBuilder: libraryBuilder, identicalSignatures: false));
     }
     if (isConst && isPatch) {
       _finishPatch();
diff --git a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
index 122964a..346eda3 100644
--- a/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_field_builder.dart
@@ -356,14 +356,13 @@
   Iterable<Member> get exportedMembers => _fieldEncoding.exportedMembers;
 
   @override
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
-    build(library);
-    _fieldEncoding.registerMembers(library, this, f);
+  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+    build();
+    _fieldEncoding.registerMembers(libraryBuilder, this, f);
   }
 
   /// Builds the core AST structures for this field as needed for the outline.
-  void build(SourceLibraryBuilder libraryBuilder) {
+  void build() {
     if (type != null) {
       fieldType = type!.build(libraryBuilder);
     }
@@ -372,7 +371,6 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
@@ -382,11 +380,11 @@
       MetadataBuilder.buildAnnotations(
           annotatable,
           metadata,
-          library,
+          libraryBuilder,
           declarationBuilder,
           this,
           fileUri,
-          declarationBuilder?.scope ?? library.scope);
+          declarationBuilder?.scope ?? libraryBuilder.scope);
     }
 
     // For modular compilation we need to include initializers of all const
@@ -398,10 +396,10 @@
                 isClassMember &&
                 classBuilder!.declaresConstConstructor)) &&
         _constInitializerToken != null) {
-      Scope scope = declarationBuilder?.scope ?? library.scope;
-      BodyBuilder bodyBuilder = library.loader
+      Scope scope = declarationBuilder?.scope ?? libraryBuilder.scope;
+      BodyBuilder bodyBuilder = libraryBuilder.loader
           .createBodyBuilderForOutlineExpression(
-              library, declarationBuilder, this, scope, fileUri);
+              libraryBuilder, declarationBuilder, this, scope, fileUri);
       bodyBuilder.constantContext =
           isConst ? ConstantContext.inferred : ConstantContext.required;
       Expression initializer = bodyBuilder.typeInferrer
@@ -413,9 +411,9 @@
         // Wrap the initializer in a temporary parent expression; the
         // transformations need a parent relation.
         Not wrapper = new Not(initializer);
-        SourceLoader loader = library.loader;
+        SourceLoader loader = libraryBuilder.loader;
         loader.transformPostInference(wrapper, bodyBuilder.transformSetLiterals,
-            bodyBuilder.transformCollections, library.library);
+            bodyBuilder.transformCollections, libraryBuilder.library);
         initializer = wrapper.operand;
       }
       buildBody(classHierarchy.coreTypes, initializer);
diff --git a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
index 4425a6d..1f34e7d 100644
--- a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
@@ -34,7 +34,6 @@
 import '../type_inference/type_inference_engine.dart'
     show IncludesTypeParametersNonCovariantly;
 import '../util/helpers.dart' show DelayedActionPerformer;
-import 'source_library_builder.dart' show SourceLibraryBuilder;
 import 'source_member_builder.dart';
 
 abstract class SourceFunctionBuilder
@@ -315,7 +314,7 @@
   @override
   bool get isNative => nativeMethodName != null;
 
-  void buildFunction(SourceLibraryBuilder library) {
+  void buildFunction() {
     function.asyncMarker = asyncModifier;
     function.body = body;
     body?.parent = function;
@@ -344,7 +343,7 @@
     }
     if (formals != null) {
       for (FormalParameterBuilder formal in formals!) {
-        VariableDeclaration parameter = formal.build(library, 0);
+        VariableDeclaration parameter = formal.build(libraryBuilder, 0);
         if (needsCheckVisitor != null) {
           if (parameter.type.accept(needsCheckVisitor)) {
             parameter.isCovariantByClass = true;
@@ -360,10 +359,10 @@
           function.requiredParameterCount++;
         }
 
-        if (library.isNonNullableByDefault) {
+        if (libraryBuilder.isNonNullableByDefault) {
           // Required named parameters can't have default values.
           if (formal.isNamedRequired && formal.initializerToken != null) {
-            library.addProblem(
+            libraryBuilder.addProblem(
                 templateRequiredNamedParameterHasDefaultValueError
                     .withArguments(formal.name),
                 formal.charOffset,
@@ -388,7 +387,7 @@
       function.requiredParameterCount = 1;
     }
     if (returnType != null) {
-      function.returnType = returnType!.build(library);
+      function.returnType = returnType!.build(libraryBuilder);
     }
     if (isExtensionInstanceMember) {
       ExtensionBuilder extensionBuilder = parent as ExtensionBuilder;
@@ -434,7 +433,6 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
@@ -443,13 +441,14 @@
           isClassMember || isExtensionMember
               ? parent as DeclarationBuilder
               : null;
-      Scope parentScope = classOrExtensionBuilder?.scope ?? library.scope;
-      MetadataBuilder.buildAnnotations(member, metadata, library,
+      Scope parentScope =
+          classOrExtensionBuilder?.scope ?? libraryBuilder.scope;
+      MetadataBuilder.buildAnnotations(member, metadata, libraryBuilder,
           classOrExtensionBuilder, this, fileUri, parentScope);
       if (typeVariables != null) {
         for (int i = 0; i < typeVariables!.length; i++) {
           typeVariables![i].buildOutlineExpressions(
-              library,
+              libraryBuilder,
               classOrExtensionBuilder,
               this,
               classHierarchy,
@@ -464,14 +463,15 @@
         // buildOutlineExpressions to clear initializerToken to prevent
         // consuming too much memory.
         for (FormalParameterBuilder formal in formals!) {
-          formal.buildOutlineExpressions(library, delayedActionPerformers);
+          formal.buildOutlineExpressions(
+              libraryBuilder, delayedActionPerformers);
         }
       }
       _hasBuiltOutlineExpressions = true;
     }
   }
 
-  Member build(SourceLibraryBuilder library);
+  Member build();
 
   @override
   void becomeNative(SourceLoader loader) {
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 e53ac73..fe81c38 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
@@ -3034,16 +3034,16 @@
     while (iterator.moveNext()) {
       Builder declaration = iterator.current;
       if (declaration is SourceClassBuilder) {
-        declaration.buildOutlineExpressions(this, classHierarchy,
+        declaration.buildOutlineExpressions(classHierarchy,
             delayedActionPerformers, delayedDefaultValueCloners);
-      } else if (declaration is ExtensionBuilder) {
-        declaration.buildOutlineExpressions(this, classHierarchy,
+      } else if (declaration is SourceExtensionBuilder) {
+        declaration.buildOutlineExpressions(classHierarchy,
             delayedActionPerformers, delayedDefaultValueCloners);
       } else if (declaration is SourceMemberBuilder) {
-        declaration.buildOutlineExpressions(this, classHierarchy,
+        declaration.buildOutlineExpressions(classHierarchy,
             delayedActionPerformers, delayedDefaultValueCloners);
       } else if (declaration is SourceTypeAliasBuilder) {
-        declaration.buildOutlineExpressions(this, classHierarchy,
+        declaration.buildOutlineExpressions(classHierarchy,
             delayedActionPerformers, delayedDefaultValueCloners);
       } else {
         assert(
@@ -3072,20 +3072,19 @@
     }
 
     if (declaration is SourceClassBuilder) {
-      Class cls = declaration.build(this, coreLibrary);
+      Class cls = declaration.build(coreLibrary);
       if (!declaration.isPatch) {
         cls.name += findDuplicateSuffix(declaration);
         library.addClass(cls);
       }
     } else if (declaration is SourceExtensionBuilder) {
-      Extension extension = declaration.build(this, coreLibrary,
+      Extension extension = declaration.build(coreLibrary,
           addMembersToLibrary: !declaration.isDuplicate);
       if (!declaration.isPatch && !declaration.isDuplicate) {
         library.addExtension(extension);
       }
     } else if (declaration is SourceMemberBuilder) {
-      declaration.buildMembers(this,
-          (Member member, BuiltMemberKind memberKind) {
+      declaration.buildMembers((Member member, BuiltMemberKind memberKind) {
         if (member is Field) {
           member.isStatic = true;
           if (!declaration.isPatch && !declaration.isDuplicate) {
@@ -3104,12 +3103,12 @@
         }
       });
     } else if (declaration is SourceTypeAliasBuilder) {
-      Typedef typedef = declaration.build(this);
+      Typedef typedef = declaration.build();
       if (!declaration.isPatch && !declaration.isDuplicate) {
         library.addTypedef(typedef);
       }
     } else if (declaration is SourceEnumBuilder) {
-      Class cls = declaration.build(this, coreLibrary);
+      Class cls = declaration.build(coreLibrary);
       if (!declaration.isPatch) {
         cls.name += findDuplicateSuffix(declaration);
         library.addClass(cls);
diff --git a/pkg/front_end/lib/src/fasta/source/source_member_builder.dart b/pkg/front_end/lib/src/fasta/source/source_member_builder.dart
index 3aab68e..429809d 100644
--- a/pkg/front_end/lib/src/fasta/source/source_member_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_member_builder.dart
@@ -29,11 +29,9 @@
   SourceLibraryBuilder get libraryBuilder;
 
   /// Builds the core AST structures for this member as needed for the outline.
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f);
+  void buildMembers(void Function(Member, BuiltMemberKind) f);
 
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners);
@@ -62,8 +60,7 @@
       retainDataForTesting ? new MemberDataForTesting() : null;
 
   @override
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
+  void buildMembers(void Function(Member, BuiltMemberKind) f) {
     assert(false, "Unexpected call to $runtimeType.buildMembers.");
   }
 
@@ -132,7 +129,6 @@
 
   @override
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {}
diff --git a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
index 68bb60e..89731b6 100644
--- a/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_procedure_builder.dart
@@ -229,9 +229,8 @@
   Iterable<Member> get exportedMembers => [procedure];
 
   @override
-  void buildMembers(
-      SourceLibraryBuilder library, void Function(Member, BuiltMemberKind) f) {
-    Member member = build(library);
+  void buildMembers(void Function(Member, BuiltMemberKind) f) {
+    Member member = build();
     if (isExtensionMethod) {
       switch (kind) {
         case ProcedureKind.Method:
@@ -259,8 +258,8 @@
   }
 
   @override
-  Procedure build(SourceLibraryBuilder libraryBuilder) {
-    buildFunction(libraryBuilder);
+  Procedure build() {
+    buildFunction();
     _procedure.function.fileOffset = charOpenParenOffset;
     _procedure.function.fileEndOffset = _procedure.fileEndOffset;
     _procedure.isAbstract = isAbstract;
diff --git a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
index cbec47e..39cce6d 100644
--- a/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_type_alias_builder.dart
@@ -97,7 +97,7 @@
         typeDeclarationBuilder.isNullClass;
   }
 
-  Typedef build(SourceLibraryBuilder libraryBuilder) {
+  Typedef build() {
     typedef.type ??= buildThisType();
 
     TypeBuilder? type = this.type;
@@ -257,21 +257,20 @@
   }
 
   void buildOutlineExpressions(
-      SourceLibraryBuilder library,
       ClassHierarchy classHierarchy,
       List<DelayedActionPerformer> delayedActionPerformers,
       List<DelayedDefaultValueCloner> delayedDefaultValueCloners) {
-    MetadataBuilder.buildAnnotations(
-        typedef, metadata, library, null, null, fileUri, library.scope);
+    MetadataBuilder.buildAnnotations(typedef, metadata, libraryBuilder, null,
+        null, fileUri, libraryBuilder.scope);
     if (typeVariables != null) {
       for (int i = 0; i < typeVariables!.length; i++) {
         typeVariables![i].buildOutlineExpressions(
-            library,
+            libraryBuilder,
             null,
             null,
             classHierarchy,
             delayedActionPerformers,
-            computeTypeParameterScope(library.scope));
+            computeTypeParameterScope(libraryBuilder.scope));
       }
     }
     _tearOffDependencies?.forEach((Procedure tearOff, Member target) {
@@ -281,7 +280,7 @@
               target.enclosingClass!.typeParameters, targetType.typeArguments),
           target.function!,
           tearOff.function,
-          libraryBuilder: library));
+          libraryBuilder: libraryBuilder));
     });
   }
 
diff --git a/tools/VERSION b/tools/VERSION
index 64c8ecd..98c53de 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 225
+PRERELEASE 226
 PRERELEASE_PATCH 0
\ No newline at end of file