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 2167087..31ac71e 100644
--- a/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/constructor_builder.dart
@@ -18,7 +18,7 @@
 import '../kernel/constructor_tearoff_lowering.dart';
 import '../kernel/expression_generator_helper.dart'
     show ExpressionGeneratorHelper;
-import '../kernel/kernel_builder.dart'
+import '../kernel/utils.dart'
     show isRedirectingGenerativeConstructorImplementation;
 import '../kernel/kernel_helper.dart' show SynthesizedFunctionNode;
 
diff --git a/pkg/front_end/lib/src/fasta/builder/factory_builder.dart b/pkg/front_end/lib/src/fasta/builder/factory_builder.dart
index f375735..090b24b 100644
--- a/pkg/front_end/lib/src/fasta/builder/factory_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/factory_builder.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:kernel/ast.dart';
+import 'package:kernel/core_types.dart';
 import 'package:kernel/type_algebra.dart';
 
 import '../dill/dill_member_builder.dart';
@@ -11,7 +12,6 @@
 import '../kernel/constructor_tearoff_lowering.dart';
 import '../kernel/forest.dart';
 import '../kernel/internal_ast.dart';
-import '../kernel/kernel_api.dart';
 import '../kernel/kernel_helper.dart';
 import '../kernel/redirecting_factory_body.dart'
     show getRedirectingFactoryBody, RedirectingFactoryBody;
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 2c6ea0c..ca2aa43 100644
--- a/pkg/front_end/lib/src/fasta/builder/field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/field_builder.dart
@@ -17,7 +17,7 @@
 
 import '../kernel/body_builder.dart' show BodyBuilder;
 import '../kernel/class_hierarchy_builder.dart';
-import '../kernel/kernel_builder.dart' show ImplicitFieldType;
+import '../kernel/implicit_field_type.dart';
 import '../kernel/kernel_helper.dart';
 import '../kernel/late_lowering.dart' as late_lowering;
 import '../kernel/member_covariance.dart';
diff --git a/pkg/front_end/lib/src/fasta/builder/library_builder.dart b/pkg/front_end/lib/src/fasta/builder/library_builder.dart
index 439f98b..73cabf5 100644
--- a/pkg/front_end/lib/src/fasta/builder/library_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/library_builder.dart
@@ -8,7 +8,7 @@
 
 import 'package:kernel/ast.dart' show Library, Nullability;
 
-import '../combinator.dart' show Combinator;
+import '../combinator.dart' show CombinatorBuilder;
 
 import '../problems.dart' show internalProblem, unsupported;
 
@@ -76,8 +76,8 @@
 
   Builder? addBuilder(String? name, Builder declaration, int charOffset);
 
-  void addExporter(
-      LibraryBuilder exporter, List<Combinator>? combinators, int charOffset);
+  void addExporter(LibraryBuilder exporter,
+      List<CombinatorBuilder>? combinators, int charOffset);
 
   /// Add a problem with a severity determined by the severity of the message.
   ///
@@ -242,8 +242,8 @@
   }
 
   @override
-  void addExporter(
-      LibraryBuilder exporter, List<Combinator>? combinators, int charOffset) {
+  void addExporter(LibraryBuilder exporter,
+      List<CombinatorBuilder>? combinators, int charOffset) {
     exporters.add(new Export(exporter, this, combinators, charOffset));
   }
 
diff --git a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
index 48b6cd4..7f0a2a7 100644
--- a/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/procedure_builder.dart
@@ -3,9 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:kernel/ast.dart';
+import 'package:kernel/type_algebra.dart';
 
 import '../kernel/class_hierarchy_builder.dart';
-import '../kernel/kernel_api.dart';
 import '../kernel/member_covariance.dart';
 
 import '../loader.dart' show Loader;
diff --git a/pkg/front_end/lib/src/fasta/combinator.dart b/pkg/front_end/lib/src/fasta/combinator.dart
index 9f97607..9f07af0 100644
--- a/pkg/front_end/lib/src/fasta/combinator.dart
+++ b/pkg/front_end/lib/src/fasta/combinator.dart
@@ -2,19 +2,17 @@
 // 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.
 
-library fasta.combinator;
-
-class Combinator {
+class CombinatorBuilder {
   final bool isShow;
 
   final Set<String> names;
 
-  Combinator(this.isShow, this.names, int charOffset, Uri fileUri);
+  CombinatorBuilder(this.isShow, this.names, int charOffset, Uri fileUri);
 
-  Combinator.show(Iterable<String> names, int charOffset, Uri fileUri)
+  CombinatorBuilder.show(Iterable<String> names, int charOffset, Uri fileUri)
       : this(true, new Set<String>.from(names), charOffset, fileUri);
 
-  Combinator.hide(Iterable<String> names, int charOffset, Uri fileUri)
+  CombinatorBuilder.hide(Iterable<String> names, int charOffset, Uri fileUri)
       : this(false, new Set<String>.from(names), charOffset, fileUri);
 
   bool get isHide => !isShow;
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 9730305..4917953 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
@@ -14,7 +14,7 @@
 import '../kernel/class_hierarchy_builder.dart'
     show ClassHierarchyBuilder, ClassMember;
 import '../kernel/member_covariance.dart';
-import '../kernel/kernel_builder.dart'
+import '../kernel/utils.dart'
     show isRedirectingGenerativeConstructorImplementation;
 
 import '../modifier.dart'
diff --git a/pkg/front_end/lib/src/fasta/export.dart b/pkg/front_end/lib/src/fasta/export.dart
index 34a0ba9..323a5f7 100644
--- a/pkg/front_end/lib/src/fasta/export.dart
+++ b/pkg/front_end/lib/src/fasta/export.dart
@@ -7,7 +7,7 @@
 import 'builder/builder.dart';
 import 'builder/library_builder.dart';
 
-import 'combinator.dart' show Combinator;
+import 'combinator.dart' show CombinatorBuilder;
 import 'fasta_codes.dart';
 
 class Export {
@@ -17,7 +17,7 @@
   /// The library being exported.
   LibraryBuilder exported;
 
-  final List<Combinator>? combinators;
+  final List<CombinatorBuilder>? combinators;
 
   final int charOffset;
 
@@ -27,7 +27,7 @@
 
   bool addToExportScope(String name, Builder member) {
     if (combinators != null) {
-      for (Combinator combinator in combinators!) {
+      for (CombinatorBuilder combinator in combinators!) {
         if (combinator.isShow && !combinator.names.contains(name)) return false;
         if (combinator.isHide && combinator.names.contains(name)) return false;
       }
diff --git a/pkg/front_end/lib/src/fasta/import.dart b/pkg/front_end/lib/src/fasta/import.dart
index 439ec37..ec7df03 100644
--- a/pkg/front_end/lib/src/fasta/import.dart
+++ b/pkg/front_end/lib/src/fasta/import.dart
@@ -10,9 +10,9 @@
 import 'builder/library_builder.dart';
 import 'builder/prefix_builder.dart';
 
-import 'kernel/kernel_builder.dart' show toKernelCombinators;
+import 'kernel/utils.dart' show toKernelCombinators;
 
-import 'combinator.dart' show Combinator;
+import 'combinator.dart' show CombinatorBuilder;
 
 import 'configuration.dart' show Configuration;
 
@@ -31,7 +31,7 @@
 
   final String? prefix;
 
-  final List<Combinator>? combinators;
+  final List<CombinatorBuilder>? combinators;
 
   final List<Configuration>? configurations;
 
@@ -73,7 +73,7 @@
     }
     imported!.exportScope.forEach((String name, Builder member) {
       if (combinators != null) {
-        for (Combinator combinator in combinators!) {
+        for (CombinatorBuilder combinator in combinators!) {
           if (combinator.isShow && !combinator.names.contains(name)) return;
           if (combinator.isHide && combinator.names.contains(name)) return;
         }
@@ -94,7 +94,7 @@
     String? prefix,
     SourceLibraryBuilder importer,
     LibraryBuilder? imported,
-    List<Combinator>? combinators,
+    List<CombinatorBuilder>? combinators,
     bool deferred,
     int charOffset,
     int prefixCharOffset,
diff --git a/pkg/front_end/lib/src/fasta/incremental_compiler.dart b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
index d3a46e7..0fe5e02 100644
--- a/pkg/front_end/lib/src/fasta/incremental_compiler.dart
+++ b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
@@ -95,7 +95,7 @@
 
 import 'builder_graph.dart' show BuilderGraph;
 
-import 'combinator.dart' show Combinator;
+import 'combinator.dart' show CombinatorBuilder;
 
 import 'compiler_context.dart' show CompilerContext;
 
@@ -123,7 +123,7 @@
 
 import 'hybrid_file_system.dart' show HybridFileSystem;
 
-import 'kernel/kernel_builder.dart' show ClassHierarchyBuilder;
+import 'kernel/class_hierarchy_builder.dart' show ClassHierarchyBuilder;
 
 import 'kernel/internal_ast.dart' show VariableDeclarationImpl;
 
@@ -2007,16 +2007,16 @@
             in libraryBuilder.library.dependencies) {
           if (!dependency.isImport) continue;
 
-          List<Combinator>? combinators;
+          List<CombinatorBuilder>? combinators;
 
           for (kernel.Combinator combinator in dependency.combinators) {
-            combinators ??= <Combinator>[];
+            combinators ??= <CombinatorBuilder>[];
 
             combinators.add(combinator.isShow
-                ? new Combinator.show(combinator.names, combinator.fileOffset,
-                    libraryBuilder.fileUri)
-                : new Combinator.hide(combinator.names, combinator.fileOffset,
-                    libraryBuilder.fileUri));
+                ? new CombinatorBuilder.show(combinator.names,
+                    combinator.fileOffset, libraryBuilder.fileUri)
+                : new CombinatorBuilder.hide(combinator.names,
+                    combinator.fileOffset, libraryBuilder.fileUri));
           }
 
           debugLibrary.addImport(
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 38d7818..38edea3 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -29,7 +29,8 @@
         unescapeFirstStringPart,
         unescapeLastStringPart,
         unescapeString;
-
+import 'package:_fe_analyzer_shared/src/parser/stack_listener.dart'
+    show FixedNullableList, GrowableList, NullValue, ParserRecovery;
 import 'package:_fe_analyzer_shared/src/parser/value_kind.dart';
 
 import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' show Token;
@@ -39,6 +40,12 @@
 import 'package:_fe_analyzer_shared/src/util/link.dart';
 
 import 'package:kernel/ast.dart';
+import 'package:kernel/class_hierarchy.dart';
+import 'package:kernel/clone.dart';
+import 'package:kernel/core_types.dart';
+import 'package:kernel/src/bounds_checks.dart' hide calculateBounds;
+import 'package:kernel/transformations/flags.dart';
+import 'package:kernel/type_algebra.dart';
 import 'package:kernel/type_environment.dart';
 
 import '../builder/builder.dart';
@@ -101,59 +108,35 @@
 import '../scope.dart';
 
 import '../source/diet_parser.dart';
-
-import '../source/scope_listener.dart'
-    show
-        FixedNullableList,
-        GrowableList,
-        JumpTargetKind,
-        NullValue,
-        ParserRecovery,
-        ScopeListener;
-
+import '../source/scope_listener.dart' show JumpTargetKind, ScopeListener;
 import '../source/source_library_builder.dart' show SourceLibraryBuilder;
-
 import '../source/stack_listener_impl.dart' show offsetForToken;
-
 import '../source/value_kinds.dart';
 
 import '../type_inference/type_inferrer.dart'
     show TypeInferrer, InferredFunctionBody;
-
 import '../type_inference/type_schema.dart' show UnknownType;
 
 import '../util/helpers.dart' show DelayedActionPerformer;
 
 import 'collections.dart';
-
 import 'constness.dart' show Constness;
-
 import 'constructor_tearoff_lowering.dart';
-
 import 'expression_generator.dart';
-
 import 'expression_generator_helper.dart';
-
 import 'forest.dart' show Forest;
-
 import 'implicit_type_argument.dart' show ImplicitTypeArgument;
-
+import 'internal_ast.dart';
+import 'kernel_variable_builder.dart';
+import 'load_library_builder.dart';
 import 'redirecting_factory_body.dart'
     show
         RedirectingFactoryBody,
         RedirectionTarget,
         getRedirectingFactoryBody,
         getRedirectionTarget;
-
 import 'type_algorithms.dart' show calculateBounds;
-
-import 'kernel_api.dart';
-
-import 'kernel_ast_api.dart';
-
-import 'internal_ast.dart';
-
-import 'kernel_builder.dart';
+import 'utils.dart';
 
 // TODO(ahe): Remove this and ensure all nodes have a location.
 const int noLocation = TreeNode.noOffset;
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index 49d92a1..930527d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -11,6 +11,7 @@
 import 'package:_fe_analyzer_shared/src/scanner/token.dart' show Token;
 
 import 'package:kernel/ast.dart';
+import 'package:kernel/text/ast_to_text.dart';
 import 'package:kernel/type_algebra.dart';
 
 import '../builder/builder.dart';
@@ -67,12 +68,12 @@
 
 import 'forest.dart';
 
-import 'kernel_api.dart' show NameSystem, printNodeOn, printQualifiedNameOn;
-
-import 'kernel_builder.dart' show LoadLibraryBuilder;
-
 import 'internal_ast.dart';
 
+import 'load_library_builder.dart';
+
+import 'utils.dart';
+
 /// A generator represents a subexpression for which we can't yet build an
 /// expression because we don't yet know the context in which it's used.
 ///
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index ecc97bb..c80be43 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -5,6 +5,7 @@
 library fasta.expression_generator_helper;
 
 import 'package:_fe_analyzer_shared/src/scanner/token.dart' show Token;
+import 'package:kernel/ast.dart';
 import 'package:kernel/type_algebra.dart';
 import 'package:kernel/type_environment.dart';
 
@@ -24,25 +25,6 @@
 import 'constness.dart' show Constness;
 import 'forest.dart' show Forest;
 import 'internal_ast.dart';
-import 'kernel_ast_api.dart'
-    show
-        Arguments,
-        Constructor,
-        DartType,
-        Expression,
-        FunctionNode,
-        Initializer,
-        InterfaceType,
-        Library,
-        Member,
-        Name,
-        Procedure,
-        StaticGet,
-        TreeNode,
-        TypeParameter,
-        TypeParameterType,
-        Typedef,
-        VariableDeclaration;
 
 /// Alias for Expression | Generator
 typedef Expression_Generator = dynamic;
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart
deleted file mode 100644
index 40f86af..0000000
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// This library exports all API from Kernel that can be used throughout fasta.
-library fasta.kernel_api;
-
-export 'package:kernel/type_algebra.dart' show Substitution, substitute;
-
-export 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
-
-export 'package:kernel/clone.dart' show CloneVisitorNotMembers;
-
-export 'package:kernel/core_types.dart' show CoreTypes;
-
-export 'package:kernel/transformations/flags.dart' show TransformerFlag;
-
-export 'package:kernel/text/ast_to_text.dart' show NameSystem;
-
-export 'package:kernel/type_environment.dart' show TypeEnvironment;
-
-export 'package:kernel/src/bounds_checks.dart' show instantiateToBounds;
-
-import 'package:kernel/text/ast_to_text.dart' show NameSystem, Printer;
-
-import 'package:kernel/ast.dart' show Class, Member, Node;
-
-void printNodeOn(Node? node, StringSink sink, {NameSystem? syntheticNames}) {
-  if (node == null) {
-    sink.write("null");
-  } else {
-    syntheticNames ??= new NameSystem();
-    new Printer(sink, syntheticNames: syntheticNames).writeNode(node);
-  }
-}
-
-void printQualifiedNameOn(Member? member, StringSink sink) {
-  if (member == null) {
-    sink.write("null");
-  } else {
-    sink.write(member.enclosingLibrary.importUri);
-    sink.write("::");
-    Class? cls = member.enclosingClass;
-    if (cls != null) {
-      sink.write(cls.name);
-      sink.write("::");
-    }
-    sink.write(member.name.text);
-  }
-}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
deleted file mode 100644
index c82741e..0000000
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_ast_api.dart
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// This library exports all API from Kernel's ast.dart that can be used
-/// throughout fasta.
-library fasta.kernel_ast_api;
-
-export 'package:kernel/ast.dart'
-    show
-        Arguments,
-        AsExpression,
-        AssertStatement,
-        AsyncMarker,
-        Block,
-        BreakStatement,
-        Catch,
-        CheckLibraryIsLoaded,
-        Class,
-        Component,
-        Constructor,
-        ConstructorInvocation,
-        ContinueSwitchStatement,
-        DartType,
-        DynamicType,
-        EmptyStatement,
-        Expression,
-        ExpressionStatement,
-        Field,
-        ForInStatement,
-        FunctionDeclaration,
-        FunctionExpression,
-        FunctionNode,
-        FunctionType,
-        Initializer,
-        InterfaceType,
-        InvalidExpression,
-        InvalidType,
-        IsExpression,
-        LabeledStatement,
-        Let,
-        Library,
-        LibraryDependency,
-        LibraryPart,
-        ListLiteral,
-        LocalInitializer,
-        Location,
-        MapLiteralEntry,
-        MapLiteral,
-        Member,
-        Name,
-        NamedExpression,
-        NamedType,
-        Node,
-        NullLiteral,
-        Procedure,
-        ProcedureKind,
-        Rethrow,
-        ReturnStatement,
-        Statement,
-        StaticGet,
-        StaticInvocation,
-        StaticSet,
-        StringConcatenation,
-        SuperInitializer,
-        SuperMethodInvocation,
-        SuperPropertySet,
-        SwitchCase,
-        ThisExpression,
-        TreeNode,
-        TypeParameter,
-        TypeParameterType,
-        Typedef,
-        TypedefType,
-        VariableDeclaration,
-        VariableGet,
-        VariableSet,
-        VoidType,
-        setParents;
-
-export 'internal_ast.dart'
-    show
-        ArgumentsImpl,
-        Cascade,
-        DeferredCheck,
-        FactoryConstructorInvocation,
-        FunctionDeclarationImpl,
-        InvalidSuperInitializerJudgment,
-        LoadLibraryTearOff,
-        NamedFunctionExpressionJudgment,
-        NullAwareMethodInvocation,
-        NullAwarePropertyGet,
-        ReturnStatementImpl,
-        ShadowInvalidFieldInitializer,
-        ShadowInvalidInitializer,
-        ShadowLargeIntLiteral,
-        VariableDeclarationImpl,
-        VariableGetImpl;
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_builder.dart
deleted file mode 100644
index 3b8d62c..0000000
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_builder.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library fasta.kernel_builder;
-
-import 'package:kernel/ast.dart'
-    show
-        Combinator,
-        Constructor,
-        Initializer,
-        Procedure,
-        RedirectingInitializer;
-
-import '../combinator.dart' as fasta;
-
-export 'class_hierarchy_builder.dart'
-    show ClassHierarchyBuilder, ClassMember, DelayedCheck;
-
-export 'implicit_field_type.dart' show ImplicitFieldType;
-
-export 'kernel_variable_builder.dart' show VariableBuilderImpl;
-
-export 'load_library_builder.dart' show LoadLibraryBuilder;
-
-int compareProcedures(Procedure a, Procedure b) {
-  int i = "${a.fileUri}".compareTo("${b.fileUri}");
-  if (i != 0) return i;
-  return a.fileOffset.compareTo(b.fileOffset);
-}
-
-bool isRedirectingGenerativeConstructorImplementation(Constructor constructor) {
-  List<Initializer> initializers = constructor.initializers;
-  return initializers.length == 1 &&
-      initializers.single is RedirectingInitializer;
-}
-
-List<Combinator>? toKernelCombinators(
-    List<fasta.Combinator>? fastaCombinators) {
-  if (fastaCombinators == null) {
-    // Note: it's safe to return null here as Kernel's LibraryDependency will
-    // convert null to an empty list.
-    return null;
-  }
-
-  return new List<Combinator>.generate(fastaCombinators.length, (int i) {
-    fasta.Combinator combinator = fastaCombinators[i];
-    List<String> nameList = combinator.names.toList();
-    return combinator.isShow
-        ? new Combinator.show(nameList)
-        : new Combinator.hide(nameList);
-  }, growable: true);
-}
diff --git a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
index 608b28e..a64b323 100644
--- a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
@@ -37,8 +37,6 @@
 
 import '../kernel/utils.dart';
 
-export 'package:kernel/ast.dart' show Variance;
-
 /// Initial value for "variance" that is to be computed by the compiler.
 const int pendingVariance = -1;
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/utils.dart b/pkg/front_end/lib/src/fasta/kernel/utils.dart
index f1f909e..ad50b91 100644
--- a/pkg/front_end/lib/src/fasta/kernel/utils.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/utils.dart
@@ -10,25 +10,10 @@
 import 'package:_fe_analyzer_shared/src/scanner/token.dart'
     show SyntheticToken, TokenType;
 
-import 'package:kernel/clone.dart' show CloneVisitorWithMembers;
-
-import 'package:kernel/ast.dart'
-    show
-        Class,
-        Component,
-        DartType,
-        Library,
-        Procedure,
-        Supertype,
-        TreeNode,
-        TypeParameter,
-        TypeParameterType,
-        dummyDartType,
-        dummyUri;
-
-import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter;
-
-import 'package:kernel/text/ast_to_text.dart' show Printer;
+import 'package:kernel/ast.dart';
+import 'package:kernel/clone.dart';
+import 'package:kernel/binary/ast_to_binary.dart';
+import 'package:kernel/text/ast_to_text.dart';
 
 import '../builder/fixed_type_builder.dart';
 import '../builder/formal_parameter_builder.dart';
@@ -42,6 +27,30 @@
 import '../source/source_library_builder.dart';
 import 'body_builder.dart';
 
+void printNodeOn(Node? node, StringSink sink, {NameSystem? syntheticNames}) {
+  if (node == null) {
+    sink.write("null");
+  } else {
+    syntheticNames ??= new NameSystem();
+    new Printer(sink, syntheticNames: syntheticNames).writeNode(node);
+  }
+}
+
+void printQualifiedNameOn(Member? member, StringSink sink) {
+  if (member == null) {
+    sink.write("null");
+  } else {
+    sink.write(member.enclosingLibrary.importUri);
+    sink.write("::");
+    Class? cls = member.enclosingClass;
+    if (cls != null) {
+      sink.write(cls.name);
+      sink.write("::");
+    }
+    sink.write(member.name.text);
+  }
+}
+
 /// Print the given [component].  Do nothing if it is `null`.  If the
 /// [libraryFilter] is provided, then only libraries that satisfy it are
 /// printed.
@@ -161,9 +170,39 @@
   void close() {}
 }
 
+int compareProcedures(Procedure a, Procedure b) {
+  int i = "${a.fileUri}".compareTo("${b.fileUri}");
+  if (i != 0) return i;
+  return a.fileOffset.compareTo(b.fileOffset);
+}
+
+bool isRedirectingGenerativeConstructorImplementation(Constructor constructor) {
+  List<Initializer> initializers = constructor.initializers;
+  return initializers.length == 1 &&
+      initializers.single is RedirectingInitializer;
+}
+
+List<Combinator>? toKernelCombinators(
+    List<CombinatorBuilder>? fastaCombinators) {
+  if (fastaCombinators == null) {
+    // Note: it's safe to return null here as Kernel's LibraryDependency will
+    // convert null to an empty list.
+    return null;
+  }
+
+  return new List<Combinator>.generate(fastaCombinators.length, (int i) {
+    CombinatorBuilder combinator = fastaCombinators[i];
+    List<String> nameList = combinator.names.toList();
+    return combinator.isShow
+        ? new Combinator.show(nameList)
+        : new Combinator.hide(nameList);
+  }, growable: true);
+}
+
 final Token dummyToken = new SyntheticToken(TokenType.AT, -1);
 final Identifier dummyIdentifier = new Identifier(dummyToken);
-final Combinator dummyCombinator = new Combinator(false, {}, -1, dummyUri);
+final CombinatorBuilder dummyCombinator =
+    new CombinatorBuilder(false, {}, -1, dummyUri);
 final MetadataBuilder dummyMetadataBuilder = new MetadataBuilder(dummyToken);
 final TypeBuilder dummyTypeBuilder =
     new FixedTypeBuilder(dummyDartType, dummyUri, -1);
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index e7f8197..0a838d9 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -41,7 +41,7 @@
 import '../builder/type_variable_builder.dart';
 import '../builder/unresolved_type.dart';
 
-import '../combinator.dart' show Combinator;
+import '../combinator.dart' show CombinatorBuilder;
 
 import '../configuration.dart' show Configuration;
 
@@ -182,7 +182,7 @@
     if (names is ParserRecovery) {
       push(names);
     } else {
-      push(new Combinator.hide(names as Iterable<String>,
+      push(new CombinatorBuilder.hide(names as Iterable<String>,
           hideKeyword.charOffset, libraryBuilder.fileUri));
     }
   }
@@ -194,7 +194,7 @@
     if (names is ParserRecovery) {
       push(names);
     } else {
-      push(new Combinator.show(names as Iterable<String>,
+      push(new CombinatorBuilder.show(names as Iterable<String>,
           showKeyword.charOffset, libraryBuilder.fileUri));
     }
   }
@@ -202,7 +202,7 @@
   @override
   void endCombinators(int count) {
     debugEvent("Combinators");
-    push(const FixedNullableList<Combinator>()
+    push(const FixedNullableList<CombinatorBuilder>()
             .popNonNullable(stack, count, dummyCombinator) ??
         NullValue.Combinators);
   }
@@ -210,7 +210,7 @@
   @override
   void endExport(Token exportKeyword, Token semicolon) {
     debugEvent("Export");
-    List<Combinator>? combinators = pop() as List<Combinator>?;
+    List<CombinatorBuilder>? combinators = pop() as List<CombinatorBuilder>?;
     List<Configuration>? configurations = pop() as List<Configuration>?;
     int uriOffset = popCharOffset();
     String uri = pop() as String;
@@ -235,7 +235,7 @@
   @override
   void endImport(Token importKeyword, Token? semicolon) {
     debugEvent("EndImport");
-    List<Combinator>? combinators = pop() as List<Combinator>?;
+    List<CombinatorBuilder>? combinators = pop() as List<CombinatorBuilder>?;
     bool isDeferred = pop() as bool;
     int prefixOffset = popCharOffset();
     Object? prefix = pop(NullValue.Prefix);
diff --git a/pkg/front_end/lib/src/fasta/source/scope_listener.dart b/pkg/front_end/lib/src/fasta/source/scope_listener.dart
index 21c67fe..221222f 100644
--- a/pkg/front_end/lib/src/fasta/source/scope_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/scope_listener.dart
@@ -15,9 +15,6 @@
 import 'stack_listener_impl.dart';
 import 'value_kinds.dart';
 
-export 'package:_fe_analyzer_shared/src/parser/stack_listener.dart'
-    show FixedNullableList, GrowableList, NullValue, ParserRecovery;
-
 enum JumpTargetKind {
   Break,
   Continue,
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 cfd33e0..b1ed2fa 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
@@ -37,11 +37,10 @@
 import '../fasta_codes.dart';
 
 import '../kernel/combined_member_signature.dart';
-import '../kernel/kernel_builder.dart' show compareProcedures;
 import '../kernel/kernel_target.dart' show KernelTarget;
 import '../kernel/redirecting_factory_body.dart' show redirectingName;
-import '../kernel/type_algorithms.dart'
-    show Variance, computeTypeVariableBuilderVariance;
+import '../kernel/type_algorithms.dart' show computeTypeVariableBuilderVariance;
+import '../kernel/utils.dart' show compareProcedures;
 
 import '../names.dart' show equalsName, noSuchMethodName;
 
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 515d205..1c83138 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
@@ -67,7 +67,7 @@
 import '../builder/unresolved_type.dart';
 import '../builder/void_type_declaration_builder.dart';
 
-import '../combinator.dart' show Combinator;
+import '../combinator.dart' show CombinatorBuilder;
 
 import '../configuration.dart' show Configuration;
 
@@ -82,16 +82,9 @@
 import '../import.dart' show Import;
 
 import '../kernel/class_hierarchy_builder.dart';
-
+import '../kernel/implicit_field_type.dart';
 import '../kernel/internal_ast.dart';
-
-import '../kernel/kernel_builder.dart'
-    show
-        ImplicitFieldType,
-        LoadLibraryBuilder,
-        compareProcedures,
-        toKernelCombinators;
-
+import '../kernel/load_library_builder.dart';
 import '../kernel/type_algorithms.dart'
     show
         NonSimplicityIssue,
@@ -102,6 +95,7 @@
         getNonSimplicityIssuesForDeclaration,
         getNonSimplicityIssuesForTypeVariables,
         pendingVariance;
+import '../kernel/utils.dart' show compareProcedures, toKernelCombinators;
 
 import '../modifier.dart'
     show
@@ -652,7 +646,7 @@
       List<MetadataBuilder>? metadata,
       String uri,
       List<Configuration>? configurations,
-      List<Combinator>? combinators,
+      List<CombinatorBuilder>? combinators,
       int charOffset,
       int uriOffset) {
     if (configurations != null) {
@@ -697,7 +691,7 @@
       String uri,
       List<Configuration>? configurations,
       String? prefix,
-      List<Combinator>? combinators,
+      List<CombinatorBuilder>? combinators,
       bool deferred,
       int charOffset,
       int prefixCharOffset,
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index fc624e3..5207c06 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -94,8 +94,7 @@
 import '../fasta_codes.dart';
 
 import '../kernel/body_builder.dart' show BodyBuilder;
-import '../kernel/kernel_builder.dart'
-    show ClassHierarchyBuilder, ClassMember, DelayedCheck;
+import '../kernel/class_hierarchy_builder.dart';
 import '../kernel/kernel_helper.dart'
     show SynthesizedFunctionNode, TypeDependency;
 import '../kernel/kernel_target.dart' show KernelTarget;
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
index 884dfc4..2194bf5 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
@@ -17,9 +17,9 @@
 import '../builder/constructor_builder.dart';
 
 import '../kernel/forest.dart';
+import '../kernel/implicit_field_type.dart';
 import '../kernel/internal_ast.dart';
-import '../kernel/kernel_builder.dart'
-    show ClassHierarchyBuilder, ImplicitFieldType;
+import '../kernel/class_hierarchy_builder.dart' show ClassHierarchyBuilder;
 import '../kernel/kernel_helper.dart';
 
 import '../source/source_library_builder.dart' show SourceLibraryBuilder;
diff --git a/pkg/front_end/lib/src/kernel_generator_impl.dart b/pkg/front_end/lib/src/kernel_generator_impl.dart
index a95566c..aa99dc8 100644
--- a/pkg/front_end/lib/src/kernel_generator_impl.dart
+++ b/pkg/front_end/lib/src/kernel_generator_impl.dart
@@ -7,8 +7,9 @@
 
 import 'package:_fe_analyzer_shared/src/messages/severity.dart' show Severity;
 
-import 'package:kernel/kernel.dart'
-    show CanonicalName, Component, NonNullableByDefaultCompiledMode;
+import 'package:kernel/ast.dart';
+import 'package:kernel/class_hierarchy.dart';
+import 'package:kernel/core_types.dart';
 
 import 'base/nnbd_mode.dart';
 
@@ -22,8 +23,6 @@
 
 import 'fasta/fasta_codes.dart' show LocatedMessage;
 
-import 'fasta/kernel/kernel_api.dart';
-
 import 'fasta/kernel/kernel_target.dart' show KernelTarget;
 
 import 'fasta/kernel/utils.dart' show printComponentText, serializeComponent;
diff --git a/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart b/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart
index cf9ece3..15e0fa5 100644
--- a/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart
+++ b/pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart
@@ -6,12 +6,12 @@
 import 'package:_fe_analyzer_shared/src/testing/features.dart';
 import 'package:_fe_analyzer_shared/src/testing/id.dart';
 import 'package:_fe_analyzer_shared/src/testing/id_testing.dart';
-import 'package:front_end/src/fasta/kernel/kernel_api.dart';
 import 'package:front_end/src/testing/id_testing_helper.dart';
 import 'package:front_end/src/testing/id_testing_utils.dart';
 import 'package:front_end/src/fasta/kernel/class_hierarchy_builder.dart';
 import 'package:front_end/src/testing/id_extractor.dart';
 import 'package:kernel/ast.dart';
+import 'package:kernel/core_types.dart';
 
 void main(List<String> args) async {
   Directory dataDir = new Directory.fromUri(Platform.script.resolve('data'));
diff --git a/pkg/front_end/test/constant_evaluator_benchmark.dart b/pkg/front_end/test/constant_evaluator_benchmark.dart
index 63900b8..1d6eddd 100644
--- a/pkg/front_end/test/constant_evaluator_benchmark.dart
+++ b/pkg/front_end/test/constant_evaluator_benchmark.dart
@@ -25,15 +25,16 @@
     show IncrementalCompiler;
 import 'package:front_end/src/fasta/kernel/constant_evaluator.dart' as constants
     show EvaluationMode, transformLibraries, ErrorReporter;
-import 'package:front_end/src/fasta/kernel/kernel_api.dart';
 
 import 'package:front_end/src/fasta/kernel/kernel_target.dart';
 import 'package:kernel/ast.dart';
 import 'package:kernel/binary/ast_from_binary.dart';
+import 'package:kernel/core_types.dart';
+import 'package:kernel/class_hierarchy.dart';
 import 'package:kernel/target/changed_structure_notifier.dart';
-
 import 'package:kernel/target/targets.dart'
     show ConstantsBackend, DiagnosticReporter, Target, TargetFlags;
+import 'package:kernel/type_environment.dart';
 
 import "package:vm/target/flutter.dart" show FlutterTarget;
 
diff --git a/pkg/front_end/test/fasta/generator_to_string_test.dart b/pkg/front_end/test/fasta/generator_to_string_test.dart
index f59c8c3..2888840 100644
--- a/pkg/front_end/test/fasta/generator_to_string_test.dart
+++ b/pkg/front_end/test/fasta/generator_to_string_test.dart
@@ -46,8 +46,7 @@
 
 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget;
 
-import 'package:front_end/src/fasta/kernel/kernel_builder.dart'
-    show LoadLibraryBuilder;
+import 'package:front_end/src/fasta/kernel/load_library_builder.dart';
 
 import 'package:front_end/src/fasta/kernel/kernel_target.dart'
     show KernelTarget;
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index 016d8d1..0140af0 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -67,7 +67,7 @@
 import 'package:front_end/src/fasta/kernel/class_hierarchy_builder.dart'
     show ClassHierarchyNode;
 
-import 'package:front_end/src/fasta/kernel/kernel_builder.dart'
+import 'package:front_end/src/fasta/kernel/class_hierarchy_builder.dart'
     show ClassHierarchyBuilder;
 
 import 'package:front_end/src/fasta/kernel/kernel_target.dart'
diff --git a/pkg/front_end/test/fasta/types/dill_hierachy_test.dart b/pkg/front_end/test/fasta/types/dill_hierachy_test.dart
index fb95755..e37a8c3 100644
--- a/pkg/front_end/test/fasta/types/dill_hierachy_test.dart
+++ b/pkg/front_end/test/fasta/types/dill_hierachy_test.dart
@@ -31,7 +31,7 @@
 
 import "package:front_end/src/fasta/dill/dill_target.dart" show DillTarget;
 
-import "package:front_end/src/fasta/kernel/kernel_builder.dart"
+import "package:front_end/src/fasta/kernel/class_hierarchy_builder.dart"
     show ClassHierarchyBuilder;
 
 import "package:front_end/src/fasta/ticker.dart" show Ticker;
diff --git a/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart b/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart
index 2852925..33af5ac 100644
--- a/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart
+++ b/pkg/front_end/test/fasta/types/fasta_legacy_upper_bound_test.dart
@@ -22,7 +22,7 @@
 
 import "package:front_end/src/fasta/dill/dill_target.dart" show DillTarget;
 
-import "package:front_end/src/fasta/kernel/kernel_builder.dart"
+import "package:front_end/src/fasta/kernel/class_hierarchy_builder.dart"
     show ClassHierarchyBuilder;
 
 import "package:front_end/src/fasta/ticker.dart" show Ticker;
diff --git a/pkg/front_end/test/fasta/types/fasta_types_test.dart b/pkg/front_end/test/fasta/types/fasta_types_test.dart
index c5be9a4..83135453 100644
--- a/pkg/front_end/test/fasta/types/fasta_types_test.dart
+++ b/pkg/front_end/test/fasta/types/fasta_types_test.dart
@@ -31,7 +31,7 @@
 
 import "package:front_end/src/fasta/dill/dill_target.dart" show DillTarget;
 
-import "package:front_end/src/fasta/kernel/kernel_builder.dart"
+import "package:front_end/src/fasta/kernel/class_hierarchy_builder.dart"
     show ClassHierarchyBuilder;
 
 import "package:front_end/src/fasta/ticker.dart" show Ticker;
diff --git a/pkg/front_end/test/fasta/types/subtypes_benchmark.dart b/pkg/front_end/test/fasta/types/subtypes_benchmark.dart
index aa23ed4..6ab0236 100644
--- a/pkg/front_end/test/fasta/types/subtypes_benchmark.dart
+++ b/pkg/front_end/test/fasta/types/subtypes_benchmark.dart
@@ -36,7 +36,7 @@
 
 import "package:front_end/src/fasta/dill/dill_target.dart" show DillTarget;
 
-import "package:front_end/src/fasta/kernel/kernel_builder.dart"
+import "package:front_end/src/fasta/kernel/class_hierarchy_builder.dart"
     show ClassHierarchyBuilder;
 
 import "package:front_end/src/fasta/ticker.dart" show Ticker;
diff --git a/pkg/front_end/test/id_tests/inheritance_test.dart b/pkg/front_end/test/id_tests/inheritance_test.dart
index 40a5ae9..f6cdbe5 100644
--- a/pkg/front_end/test/id_tests/inheritance_test.dart
+++ b/pkg/front_end/test/id_tests/inheritance_test.dart
@@ -10,11 +10,13 @@
 import 'package:_fe_analyzer_shared/src/testing/id_testing.dart';
 import 'package:front_end/src/api_prototype/experimental_flags.dart';
 import 'package:front_end/src/fasta/kernel/class_hierarchy_builder.dart';
-import 'package:front_end/src/fasta/kernel/kernel_api.dart';
 import 'package:front_end/src/testing/id_extractor.dart';
 import 'package:front_end/src/testing/id_testing_helper.dart';
 import 'package:front_end/src/testing/id_testing_utils.dart';
 import 'package:kernel/ast.dart';
+import 'package:kernel/class_hierarchy.dart';
+import 'package:kernel/core_types.dart';
+import 'package:kernel/type_algebra.dart';
 
 const String cfeFromBuilderMarker = 'cfe:builder';
 
diff --git a/pkg/front_end/test/lint_test.status b/pkg/front_end/test/lint_test.status
index 83361a2..e7d04be 100644
--- a/pkg/front_end/test/lint_test.status
+++ b/pkg/front_end/test/lint_test.status
@@ -18,21 +18,7 @@
 front_end/lib/src/fasta/fasta_codes/Exports: Fail
 front_end/lib/src/fasta/incremental_compiler/ImportsTwice: Fail
 front_end/lib/src/fasta/kernel/body_builder/ImportsTwice: Fail
-front_end/lib/src/fasta/kernel/constant_evaluator/ExplicitType: Pass
-front_end/lib/src/fasta/kernel/kernel_api/Exports: Fail
-front_end/lib/src/fasta/kernel/kernel_ast_api/Exports: Fail
-front_end/lib/src/fasta/kernel/kernel_builder/Exports: Fail
-front_end/lib/src/fasta/kernel/type_algorithms/Exports: Fail
 front_end/lib/src/fasta/messages/Exports: Fail
-front_end/lib/src/fasta/parser/Exports: Fail
-front_end/lib/src/fasta/parser/parser/ImportsTwice: Fail
-front_end/lib/src/fasta/scanner/abstract_scanner/ImportsTwice: Fail
-front_end/lib/src/fasta/scanner/Exports: Fail
-front_end/lib/src/fasta/scanner/recover/ImportsTwice: Fail
-front_end/lib/src/fasta/scanner/string_scanner/ImportsTwice: Fail
-front_end/lib/src/fasta/scanner/token/ImportsTwice: Fail
-front_end/lib/src/fasta/scanner/utf8_bytes_scanner/ImportsTwice: Fail
-front_end/lib/src/fasta/source/scope_listener/Exports: Fail
 front_end/lib/src/fasta/source/value_kinds/ImportsTwice: Fail
 front_end/lib/src/testing/id_testing_helper/Exports: Fail
 kernel/lib/ast/Exports: Fail
diff --git a/pkg/front_end/tool/ast_model.dart b/pkg/front_end/tool/ast_model.dart
index 00fc28c..7ea5230 100644
--- a/pkg/front_end/tool/ast_model.dart
+++ b/pkg/front_end/tool/ast_model.dart
@@ -5,11 +5,13 @@
 import 'package:front_end/src/api_prototype/front_end.dart';
 import 'package:front_end/src/api_unstable/ddc.dart';
 import 'package:front_end/src/compute_platform_binaries_location.dart';
-import 'package:front_end/src/fasta/kernel/kernel_api.dart';
 import 'package:front_end/src/kernel_generator_impl.dart';
 import 'package:kernel/ast.dart';
+import 'package:kernel/class_hierarchy.dart';
+import 'package:kernel/core_types.dart';
 import 'package:kernel/src/printer.dart';
 import 'package:kernel/target/targets.dart';
+import 'package:kernel/type_algebra.dart';
 import 'package:kernel/type_environment.dart';
 import 'package:vm/target/vm.dart';
 
diff --git a/pkg/front_end/tool/dart_doctest_impl.dart b/pkg/front_end/tool/dart_doctest_impl.dart
index 2c00251..520a92b 100644
--- a/pkg/front_end/tool/dart_doctest_impl.dart
+++ b/pkg/front_end/tool/dart_doctest_impl.dart
@@ -834,16 +834,16 @@
           in libraryBuilder.library.dependencies) {
         if (!dependency.isImport) continue;
 
-        List<Combinator>? combinators;
+        List<CombinatorBuilder>? combinators;
 
         for (kernel.Combinator combinator in dependency.combinators) {
-          combinators ??= <Combinator>[];
+          combinators ??= <CombinatorBuilder>[];
 
           combinators.add(combinator.isShow
-              ? new Combinator.show(combinator.names, combinator.fileOffset,
-                  libraryBuilder.fileUri)
-              : new Combinator.hide(combinator.names, combinator.fileOffset,
-                  libraryBuilder.fileUri));
+              ? new CombinatorBuilder.show(combinator.names,
+                  combinator.fileOffset, libraryBuilder.fileUri)
+              : new CombinatorBuilder.hide(combinator.names,
+                  combinator.fileOffset, libraryBuilder.fileUri));
         }
 
         dartDocTestLibrary.addImport(
