[dart2js] Elide a number of interfaces.

Inlined KClosedWorldImpl into KClosedWorld
Inlined ResolutionWorldBuilderImpl into ResolutionWorldBuilder

Change-Id: Id88abac06f7cd279413ae56ea8b021b349009649
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/233655
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
diff --git a/pkg/compiler/lib/src/backend_strategy.dart b/pkg/compiler/lib/src/backend_strategy.dart
index a8f2d9f..a3ce46d 100644
--- a/pkg/compiler/lib/src/backend_strategy.dart
+++ b/pkg/compiler/lib/src/backend_strategy.dart
@@ -17,6 +17,7 @@
 import 'js_backend/inferred_data.dart';
 import 'js_emitter/code_emitter_task.dart';
 import 'js_model/locals.dart';
+import 'kernel/kernel_world.dart';
 import 'serialization/serialization.dart';
 import 'ssa/ssa.dart';
 import 'universe/codegen_world_builder.dart';
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index ba54779..8ff980a3 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -39,12 +39,14 @@
 import 'io/source_information.dart' show SourceInformation;
 import 'ir/modular.dart';
 import 'js_backend/backend.dart' show CodegenInputs;
+import 'js_backend/enqueuer.dart';
 import 'js_backend/inferred_data.dart';
 import 'js_model/js_strategy.dart';
 import 'js_model/js_world.dart';
 import 'js_model/locals.dart';
 import 'kernel/front_end_adapter.dart' show CompilerFileSystem;
 import 'kernel/kernel_strategy.dart';
+import 'kernel/kernel_world.dart';
 import 'kernel/loader.dart' show KernelLoaderTask, KernelResult;
 import 'null_compiler_output.dart' show NullCompilerOutput;
 import 'options.dart' show CompilerOptions;
@@ -56,7 +58,7 @@
 import 'universe/codegen_world_builder.dart';
 import 'universe/resolution_world_builder.dart';
 import 'universe/world_impact.dart' show WorldImpact, WorldImpactBuilderImpl;
-import 'world.dart' show JClosedWorld, KClosedWorld;
+import 'world.dart' show JClosedWorld;
 
 typedef MakeReporterFunction = CompilerDiagnosticReporter Function(
     Compiler compiler, CompilerOptions options);
@@ -499,7 +501,7 @@
         codegenResults.globalTypeInferenceResults;
     JClosedWorld closedWorld = globalInferenceResults.closedWorld;
     CodegenInputs codegenInputs = codegenResults.codegenInputs;
-    Enqueuer codegenEnqueuer = enqueuer.createCodegenEnqueuer(
+    CodegenEnqueuer codegenEnqueuer = enqueuer.createCodegenEnqueuer(
         closedWorld, globalInferenceResults, codegenInputs, codegenResults);
     _codegenWorldBuilder = codegenEnqueuer.worldBuilder;
 
diff --git a/pkg/compiler/lib/src/deferred_load/algorithm_state.dart b/pkg/compiler/lib/src/deferred_load/algorithm_state.dart
index 4aca919..5e1b914 100644
--- a/pkg/compiler/lib/src/deferred_load/algorithm_state.dart
+++ b/pkg/compiler/lib/src/deferred_load/algorithm_state.dart
@@ -11,7 +11,7 @@
 import '../compiler.dart' show Compiler;
 import '../elements/entities.dart';
 import '../kernel/element_map.dart';
-import '../world.dart' show KClosedWorld;
+import '../kernel/kernel_world.dart';
 
 /// Manages the state of the [EntityData] model. Every class, member, constant,
 /// etc, is wrapped in the deferred loading algorithm by an [EntityData] which
diff --git a/pkg/compiler/lib/src/deferred_load/deferred_load.dart b/pkg/compiler/lib/src/deferred_load/deferred_load.dart
index 405738c..4a5af37 100644
--- a/pkg/compiler/lib/src/deferred_load/deferred_load.dart
+++ b/pkg/compiler/lib/src/deferred_load/deferred_load.dart
@@ -286,8 +286,8 @@
 import '../elements/types.dart';
 import '../elements/entities.dart';
 import '../kernel/element_map.dart';
+import '../kernel/kernel_world.dart';
 import '../util/util.dart' show makeUnique;
-import '../world.dart' show KClosedWorld;
 
 class _DeferredLoadTaskMetrics implements Metrics {
   @override
diff --git a/pkg/compiler/lib/src/deferred_load/entity_data_info.dart b/pkg/compiler/lib/src/deferred_load/entity_data_info.dart
index b601c6c..6f6c33a 100644
--- a/pkg/compiler/lib/src/deferred_load/entity_data_info.dart
+++ b/pkg/compiler/lib/src/deferred_load/entity_data_info.dart
@@ -17,9 +17,9 @@
 import '../ir/util.dart';
 import '../kernel/kelements.dart' show KLocalFunction;
 import '../kernel/element_map.dart';
+import '../kernel/kernel_world.dart';
 import '../universe/use.dart';
 import '../universe/world_impact.dart' show WorldImpact, WorldImpactVisitorImpl;
-import '../world.dart' show KClosedWorld;
 
 /// [EntityDataInfo] is meta data about [EntityData] for a given compilation
 /// [Entity].
diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
index de9afc0..470e510 100644
--- a/pkg/compiler/lib/src/enqueue.dart
+++ b/pkg/compiler/lib/src/enqueue.dart
@@ -21,7 +21,6 @@
 import 'js_backend/enqueuer.dart';
 import 'universe/member_usage.dart';
 import 'universe/resolution_world_builder.dart';
-import 'universe/world_builder.dart';
 import 'universe/use.dart'
     show
         ConstantUse,
@@ -60,13 +59,17 @@
     return enqueuer;
   }
 
-  Enqueuer createCodegenEnqueuer(
+  CodegenEnqueuer createCodegenEnqueuer(
       JClosedWorld closedWorld,
       GlobalTypeInferenceResults globalInferenceResults,
       CodegenInputs codegenInputs,
       CodegenResults codegenResults) {
-    Enqueuer enqueuer = compiler.backendStrategy.createCodegenEnqueuer(this,
-        closedWorld, globalInferenceResults, codegenInputs, codegenResults)
+    CodegenEnqueuer enqueuer = compiler.backendStrategy.createCodegenEnqueuer(
+        this,
+        closedWorld,
+        globalInferenceResults,
+        codegenInputs,
+        codegenResults)
       ..onEmptyForTesting = compiler.onCodegenQueueEmptyForTesting;
     if (retainDataForTesting) {
       codegenEnqueuerForTesting = enqueuer;
@@ -142,7 +145,6 @@
   // side-effects.
   static bool skipEnqueuerCheckForTesting = false;
 
-  WorldBuilder get worldBuilder;
   WorldImpactVisitor get impactVisitor;
 
   /// Returns [:true:] if this enqueuer is the resolution enqueuer.
@@ -171,6 +173,8 @@
 
   Iterable<ClassEntity> get processedClasses;
 
+  Iterable<ClassEntity> get directlyInstantiatedClasses;
+
   CompilerTask get task;
   void checkClass(ClassEntity cls);
   void processStaticUse(MemberEntity member, StaticUse staticUse);
@@ -191,8 +195,7 @@
   bool checkEnqueuerConsistency(ElementEnvironment elementEnvironment) {
     task.measureSubtask('resolution.check', () {
       // Run through the classes and see if we need to enqueue more methods.
-      for (ClassEntity classElement
-          in worldBuilder.directlyInstantiatedClasses) {
+      for (ClassEntity classElement in directlyInstantiatedClasses) {
         for (ClassEntity currentClass = classElement;
             currentClass != null;
             currentClass = elementEnvironment.getSuperClass(currentClass)) {
@@ -214,7 +217,7 @@
 
   final Set<ClassEntity> _recentClasses = Setlet<ClassEntity>();
   bool _recentConstants = false;
-  final ResolutionEnqueuerWorldBuilder _worldBuilder;
+  final ResolutionWorldBuilder worldBuilder;
   WorkItemBuilder _workItemBuilder;
   final DiagnosticReporter _reporter;
   final AnnotationsData _annotationsData;
@@ -232,13 +235,14 @@
   void Function() onEmptyForTesting;
 
   ResolutionEnqueuer(this.task, this._reporter, this.listener,
-      this._worldBuilder, this._workItemBuilder, this._annotationsData,
+      this.worldBuilder, this._workItemBuilder, this._annotationsData,
       [this.name = 'resolution enqueuer']) {
     impactVisitor = EnqueuerImpactVisitor(this);
   }
 
   @override
-  ResolutionWorldBuilder get worldBuilder => _worldBuilder;
+  Iterable<ClassEntity> get directlyInstantiatedClasses =>
+      worldBuilder.directlyInstantiatedClasses;
 
   @override
   bool get queueIsEmpty => _queue.isEmpty;
@@ -251,14 +255,14 @@
   }
 
   @override
-  Iterable<ClassEntity> get processedClasses => _worldBuilder.processedClasses;
+  Iterable<ClassEntity> get processedClasses => worldBuilder.processedClasses;
 
   void _registerInstantiatedType(InterfaceType type,
       {ConstructorEntity constructor,
       bool nativeUsage = false,
       bool globalDependency = false}) {
     task.measureSubtask('resolution.typeUse', () {
-      _worldBuilder.registerTypeInstantiation(type, _applyClassUse,
+      worldBuilder.registerTypeInstantiation(type, _applyClassUse,
           constructor: constructor);
       listener.registerInstantiatedType(type,
           isGlobal: globalDependency, nativeUsage: nativeUsage);
@@ -274,7 +278,7 @@
 
   @override
   void checkClass(ClassEntity cls) {
-    _worldBuilder.processClassMembers(cls,
+    worldBuilder.processClassMembers(cls,
         (MemberEntity member, EnumSet<MemberUse> useSet) {
       if (useSet.isNotEmpty) {
         _reporter.internalError(member,
@@ -300,7 +304,7 @@
   void _applyClassUse(ClassEntity cls, EnumSet<ClassUse> useSet) {
     if (useSet.contains(ClassUse.INSTANTIATED)) {
       _recentClasses.add(cls);
-      _worldBuilder.processClassMembers(cls, _applyMemberUse);
+      worldBuilder.processClassMembers(cls, _applyMemberUse);
       // We only tell the backend once that [cls] was instantiated, so
       // any additional dependencies must be treated as global
       // dependencies.
@@ -314,14 +318,14 @@
   @override
   void processDynamicUse(DynamicUse dynamicUse) {
     task.measureSubtask('resolution.dynamicUse', () {
-      _worldBuilder.registerDynamicUse(dynamicUse, _applyMemberUse);
+      worldBuilder.registerDynamicUse(dynamicUse, _applyMemberUse);
     });
   }
 
   @override
   void processConstantUse(ConstantUse constantUse) {
     task.measureSubtask('resolution.constantUse', () {
-      if (_worldBuilder.registerConstantUse(constantUse)) {
+      if (worldBuilder.registerConstantUse(constantUse)) {
         applyImpact(listener.registerUsedConstant(constantUse.value));
         _recentConstants = true;
       }
@@ -331,7 +335,7 @@
   @override
   void processStaticUse(MemberEntity member, StaticUse staticUse) {
     task.measureSubtask('resolution.staticUse', () {
-      _worldBuilder.registerStaticUse(staticUse, _applyMemberUse);
+      worldBuilder.registerStaticUse(staticUse, _applyMemberUse);
       // TODO(johnniwinther): Add `ResolutionWorldBuilder.registerConstructorUse`
       // for these:
       switch (staticUse.kind) {
@@ -380,7 +384,7 @@
         break;
       case TypeUseKind.TYPE_LITERAL:
         if (type is TypeVariableType) {
-          _worldBuilder.registerTypeVariableTypeLiteral(type);
+          worldBuilder.registerTypeVariableTypeLiteral(type);
         }
         break;
       case TypeUseKind.RTI_VALUE:
@@ -396,17 +400,17 @@
   }
 
   void _registerIsCheck(DartType type) {
-    _worldBuilder.registerIsCheck(type);
+    worldBuilder.registerIsCheck(type);
   }
 
   void _registerNamedTypeVariableNewRti(TypeVariableType type) {
-    _worldBuilder.registerNamedTypeVariableNewRti(type);
+    worldBuilder.registerNamedTypeVariableNewRti(type);
   }
 
   void _registerClosurizedMember(MemberEntity element) {
     assert(element.isInstanceMember);
     applyImpact(listener.registerClosurizedMember(element));
-    _worldBuilder.registerClosurizedMember(element);
+    worldBuilder.registerClosurizedMember(element);
   }
 
   void _forEach(void f(WorkItem work)) {
@@ -414,9 +418,9 @@
       while (_queue.isNotEmpty) {
         // TODO(johnniwinther): Find an optimal process order.
         WorkItem work = _queue.removeLast();
-        if (!_worldBuilder.isMemberProcessed(work.element)) {
+        if (!worldBuilder.isMemberProcessed(work.element)) {
           f(work);
-          _worldBuilder.registerProcessedMember(work.element);
+          worldBuilder.registerProcessedMember(work.element);
         }
       }
       List<ClassEntity> recents = _recentClasses.toList(growable: false);
@@ -448,8 +452,7 @@
   String toString() => 'Enqueuer($name)';
 
   @override
-  Iterable<MemberEntity> get processedEntities =>
-      _worldBuilder.processedMembers;
+  Iterable<MemberEntity> get processedEntities => worldBuilder.processedMembers;
 
   @override
   bool get isResolutionQueue => true;
@@ -465,13 +468,13 @@
   /// Registers [entity] as processed by the resolution enqueuer. Used only for
   /// testing.
   void registerProcessedElementInternal(MemberEntity entity) {
-    _worldBuilder.registerProcessedMember(entity);
+    worldBuilder.registerProcessedMember(entity);
   }
 
   /// Create a [WorkItem] for [entity] and add it to the work list if it has not
   /// already been processed.
   void _addToWorkList(MemberEntity entity) {
-    if (_worldBuilder.isMemberProcessed(entity)) return;
+    if (worldBuilder.isMemberProcessed(entity)) return;
     WorkItem workItem = _workItemBuilder.createWorkItem(entity);
     if (workItem == null) return;
 
@@ -481,7 +484,7 @@
     }
 
     applyImpact(listener.registerUsedElement(entity));
-    _worldBuilder.registerUsedElement(entity);
+    worldBuilder.registerUsedElement(entity);
     _queue.add(workItem);
   }
 
diff --git a/pkg/compiler/lib/src/js_backend/enqueuer.dart b/pkg/compiler/lib/src/js_backend/enqueuer.dart
index e8abbfb..a80f764 100644
--- a/pkg/compiler/lib/src/js_backend/enqueuer.dart
+++ b/pkg/compiler/lib/src/js_backend/enqueuer.dart
@@ -33,7 +33,7 @@
   final String name;
   final Set<ClassEntity> _recentClasses = Setlet();
   bool _recentConstants = false;
-  final CodegenWorldBuilderImpl _worldBuilder;
+  final CodegenWorldBuilderImpl worldBuilder;
   final WorkItemBuilder _workItemBuilder;
 
   @override
@@ -56,14 +56,15 @@
   // applying additional impacts before re-emptying the queue.
   void Function() onEmptyForTesting;
 
-  CodegenEnqueuer(this.task, this._worldBuilder, this._workItemBuilder,
+  CodegenEnqueuer(this.task, this.worldBuilder, this._workItemBuilder,
       this.listener, this._annotationsData)
       : this.name = 'codegen enqueuer' {
     impactVisitor = EnqueuerImpactVisitor(this);
   }
 
   @override
-  CodegenWorldBuilder get worldBuilder => _worldBuilder;
+  Iterable<ClassEntity> get directlyInstantiatedClasses =>
+      worldBuilder.directlyInstantiatedClasses;
 
   @override
   bool get queueIsEmpty => _queue.isEmpty;
@@ -98,7 +99,7 @@
   void _registerInstantiatedType(InterfaceType type,
       {bool nativeUsage = false}) {
     task.measureSubtask('codegen.typeUse', () {
-      _worldBuilder.registerTypeInstantiation(type, _applyClassUse);
+      worldBuilder.registerTypeInstantiation(type, _applyClassUse);
       listener.registerInstantiatedType(type, nativeUsage: nativeUsage);
     });
   }
@@ -111,7 +112,7 @@
 
   @override
   void checkClass(ClassEntity cls) {
-    _worldBuilder.processClassMembers(cls,
+    worldBuilder.processClassMembers(cls,
         (MemberEntity member, EnumSet<MemberUse> useSet) {
       if (useSet.isNotEmpty) {
         failedAt(member,
@@ -124,7 +125,7 @@
   void _applyClassUse(ClassEntity cls, EnumSet<ClassUse> useSet) {
     if (useSet.contains(ClassUse.INSTANTIATED)) {
       _recentClasses.add(cls);
-      _worldBuilder.processClassMembers(cls, _applyMemberUse);
+      worldBuilder.processClassMembers(cls, _applyMemberUse);
       // We only tell the backend once that [cls] was instantiated, so
       // any additional dependencies must be treated as global
       // dependencies.
@@ -151,14 +152,14 @@
   @override
   void processDynamicUse(DynamicUse dynamicUse) {
     task.measureSubtask('codegen.dynamicUse', () {
-      _worldBuilder.registerDynamicUse(dynamicUse, _applyMemberUse);
+      worldBuilder.registerDynamicUse(dynamicUse, _applyMemberUse);
     });
   }
 
   @override
   void processStaticUse(MemberEntity member, StaticUse staticUse) {
     task.measureSubtask('codegen.staticUse', () {
-      _worldBuilder.registerStaticUse(staticUse, _applyMemberUse);
+      worldBuilder.registerStaticUse(staticUse, _applyMemberUse);
       switch (staticUse.kind) {
         case StaticUseKind.CONSTRUCTOR_INVOKE:
         case StaticUseKind.CONST_CONSTRUCTOR_INVOKE:
@@ -206,17 +207,17 @@
         break;
       case TypeUseKind.TYPE_LITERAL:
         if (type is TypeVariableType) {
-          _worldBuilder.registerTypeVariableTypeLiteral(type);
+          worldBuilder.registerTypeVariableTypeLiteral(type);
         }
         break;
       case TypeUseKind.RTI_VALUE:
-        _worldBuilder.registerConstTypeLiteral(type);
+        worldBuilder.registerConstTypeLiteral(type);
         break;
       case TypeUseKind.TYPE_ARGUMENT:
-        _worldBuilder.registerTypeArgument(type);
+        worldBuilder.registerTypeArgument(type);
         break;
       case TypeUseKind.CONSTRUCTOR_REFERENCE:
-        _worldBuilder.registerConstructorReference(type);
+        worldBuilder.registerConstructorReference(type);
         break;
       case TypeUseKind.CONST_INSTANTIATION:
         failedAt(CURRENT_ELEMENT_SPANNABLE, "Unexpected type use: $typeUse.");
@@ -230,7 +231,7 @@
   @override
   void processConstantUse(ConstantUse constantUse) {
     task.measureSubtask('codegen.constantUse', () {
-      if (_worldBuilder.registerConstantUse(constantUse)) {
+      if (worldBuilder.registerConstantUse(constantUse)) {
         applyImpact(listener.registerUsedConstant(constantUse.value));
         _recentConstants = true;
       }
@@ -238,11 +239,11 @@
   }
 
   void _registerIsCheck(DartType type) {
-    _worldBuilder.registerIsCheck(type);
+    worldBuilder.registerIsCheck(type);
   }
 
   void _registerNamedTypeVariableNewRti(TypeVariableType type) {
-    _worldBuilder.registerNamedTypeVariableNewRti(type);
+    worldBuilder.registerNamedTypeVariableNewRti(type);
   }
 
   void _registerClosurizedMember(FunctionEntity element) {
@@ -303,5 +304,5 @@
 
   @override
   Iterable<ClassEntity> get processedClasses =>
-      _worldBuilder.instantiatedClasses;
+      worldBuilder.instantiatedClasses;
 }
diff --git a/pkg/compiler/lib/src/js_backend/field_analysis.dart b/pkg/compiler/lib/src/js_backend/field_analysis.dart
index 4ff7751..0f3326c 100644
--- a/pkg/compiler/lib/src/js_backend/field_analysis.dart
+++ b/pkg/compiler/lib/src/js_backend/field_analysis.dart
@@ -270,8 +270,8 @@
     sink.end(tag);
   }
 
-  factory JFieldAnalysis.from(KClosedWorldImpl closedWorld, JsToFrontendMap map,
-      CompilerOptions options) {
+  factory JFieldAnalysis.from(
+      KClosedWorld closedWorld, JsToFrontendMap map, CompilerOptions options) {
     Map<FieldEntity, FieldAnalysisData> fieldData = {};
 
     bool canBeElided(FieldEntity field) {
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
index 253d438..2606826 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
@@ -12,6 +12,7 @@
 import '../elements/types.dart';
 import '../ir/runtime_type_analysis.dart';
 import '../kernel/kelements.dart';
+import '../kernel/kernel_world.dart';
 import '../options.dart';
 import '../serialization/serialization.dart';
 import '../universe/class_hierarchy.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index fa22c30..51028eb 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -41,6 +41,7 @@
 import '../js_emitter/js_emitter.dart' show CodeEmitterTask;
 import '../js/js.dart' as js;
 import '../kernel/kernel_strategy.dart';
+import '../kernel/kernel_world.dart';
 import '../native/behavior.dart';
 import '../native/enqueue.dart';
 import '../options.dart';
diff --git a/pkg/compiler/lib/src/js_model/js_world_builder.dart b/pkg/compiler/lib/src/js_model/js_world_builder.dart
index 6815146..fb5e0ef 100644
--- a/pkg/compiler/lib/src/js_model/js_world_builder.dart
+++ b/pkg/compiler/lib/src/js_model/js_world_builder.dart
@@ -24,6 +24,7 @@
 import '../js_backend/no_such_method_registry.dart';
 import '../js_backend/runtime_types_resolution.dart';
 import '../kernel/kelements.dart';
+import '../kernel/kernel_world.dart';
 import '../native/behavior.dart';
 import '../options.dart';
 import '../universe/class_hierarchy.dart';
@@ -31,7 +32,6 @@
 import '../universe/feature.dart';
 import '../universe/member_usage.dart';
 import '../universe/selector.dart';
-import '../world.dart';
 import 'closure.dart';
 import 'elements.dart';
 import 'element_map_impl.dart';
diff --git a/pkg/compiler/lib/src/kernel/kernel_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
index ef176a1..336ead7 100644
--- a/pkg/compiler/lib/src/kernel/kernel_strategy.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
@@ -187,7 +187,7 @@
             _nativeResolutionEnqueuer,
             _fieldAnalysis,
             compiler.deferredLoadTask),
-        ResolutionWorldBuilderImpl(
+        ResolutionWorldBuilder(
             _options,
             elementMap,
             elementEnvironment,
diff --git a/pkg/compiler/lib/src/kernel/kernel_world.dart b/pkg/compiler/lib/src/kernel/kernel_world.dart
index 14bbbff..7928607 100644
--- a/pkg/compiler/lib/src/kernel/kernel_world.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_world.dart
@@ -22,51 +22,27 @@
 
 import 'element_map_impl.dart';
 
-class KClosedWorldImpl implements KClosedWorld {
+/// The immutable result of the [ResolutionWorldBuilder].
+class KClosedWorld implements BuiltWorld {
   final KernelToElementMapImpl elementMap;
-
-  @override
   final KElementEnvironment elementEnvironment;
-
-  @override
   final DartTypes dartTypes;
-
-  @override
   final KCommonElements commonElements;
-
-  @override
   final NativeData nativeData;
-
-  @override
   final InterceptorData interceptorData;
-
-  @override
   final BackendUsage backendUsage;
-
-  @override
   final NoSuchMethodData noSuchMethodData;
-
-  @override
   final Map<ClassEntity, Set<ClassEntity>> mixinUses;
-
-  @override
   final Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses;
 
   // TODO(johnniwinther): Can this be derived from [ClassSet]s?
   final Set<ClassEntity> _implementedClasses;
-
-  @override
   final Iterable<MemberEntity> liveInstanceMembers;
 
-  @override
+  /// Members that are written either directly or through a setter selector.
   final Iterable<MemberEntity> assignedInstanceMembers;
-  @override
   final KFieldAnalysis fieldAnalysis;
-
-  @override
   final Iterable<ClassEntity> liveNativeClasses;
-
-  @override
   final Map<MemberEntity, MemberUsage> liveMemberUsage;
 
   @override
@@ -93,19 +69,23 @@
   @override
   final Set<Local> genericLocalFunctions;
 
-  @override
+  /// Set of live closurized members whose signatures reference type variables.
+  ///
+  /// A closurized method is considered live if the enclosing class has been
+  /// instantiated.
   final Set<FunctionEntity> closurizedMembersWithFreeTypeVariables;
 
-  @override
+  /// Set of (live) local functions (closures).
+  ///
+  /// A live function is one whose enclosing member function has been enqueued.
   final Iterable<Local> localFunctions;
 
   @override
   final Iterable<InterfaceType> instantiatedTypes;
 
-  @override
   RuntimeTypesNeed get rtiNeed => _rtiNeed;
 
-  KClosedWorldImpl(this.elementMap,
+  KClosedWorld(this.elementMap,
       {CompilerOptions options,
       this.elementEnvironment,
       this.dartTypes,
@@ -155,7 +135,7 @@
     return true;
   }
 
-  @override
+  /// Returns `true` if [cls] is implemented by an instantiated class.
   bool isImplemented(ClassEntity cls) {
     return _implementedClasses.contains(cls);
   }
@@ -175,7 +155,8 @@
     dynamicTypeArgumentDependencies.forEach(f);
   }
 
-  @override
+  /// Returns `true` if [member] has been marked as used (called, read, etc.) in
+  /// this world builder.
   bool isMemberUsed(MemberEntity member) => liveMemberUsage.containsKey(member);
 
   @override
diff --git a/pkg/compiler/lib/src/universe/codegen_world_builder.dart b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
index c41f8e3..1832cbc 100644
--- a/pkg/compiler/lib/src/universe/codegen_world_builder.dart
+++ b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
@@ -28,7 +28,7 @@
 /// World builder specific to codegen.
 ///
 /// This adds additional access to liveness of selectors and elements.
-abstract class CodegenWorldBuilder implements WorldBuilder {
+abstract class CodegenWorldBuilder {
   /// Register [constant] as needed for emission.
   void addCompileTimeConstantForEmission(ConstantValue constant);
 
@@ -99,7 +99,7 @@
   OneShotInterceptorData get oneShotInterceptorData;
 }
 
-class CodegenWorldBuilderImpl extends WorldBuilderBase
+class CodegenWorldBuilderImpl extends WorldBuilder
     implements CodegenWorldBuilder {
   final JClosedWorld _closedWorld;
   final OneShotInterceptorData _oneShotInterceptorData;
@@ -170,7 +170,6 @@
       .where((cls) => _processedClasses[cls].isInstantiated);
 
   // TODO(johnniwinther): Improve semantic precision.
-  @override
   Iterable<ClassEntity> get directlyInstantiatedClasses {
     return _directlyInstantiatedClasses;
   }
diff --git a/pkg/compiler/lib/src/universe/resolution_world_builder.dart b/pkg/compiler/lib/src/universe/resolution_world_builder.dart
index 3b3d0d37..2d04eae 100644
--- a/pkg/compiler/lib/src/universe/resolution_world_builder.dart
+++ b/pkg/compiler/lib/src/universe/resolution_world_builder.dart
@@ -23,7 +23,7 @@
 import '../options.dart';
 import '../util/enumset.dart';
 import '../util/util.dart';
-import '../world.dart' show KClosedWorld, OpenWorld;
+import '../world.dart' show World;
 import 'call_structure.dart';
 import 'class_hierarchy.dart' show ClassHierarchyBuilder, ClassQueries;
 import 'class_set.dart';
@@ -33,65 +33,6 @@
     show ConstantUse, DynamicUse, DynamicUseKind, StaticUse, StaticUseKind;
 import 'world_builder.dart';
 
-abstract class ResolutionWorldBuilder implements WorldBuilder, OpenWorld {
-  /// The closed world computed by this world builder.
-  ///
-  /// This is only available after the world builder has been closed.
-  KClosedWorld get closedWorldForTesting;
-
-  void registerClass(ClassEntity cls);
-}
-
-/// Extended [ResolutionWorldBuilder] interface used by the
-/// [ResolutionEnqueuer].
-abstract class ResolutionEnqueuerWorldBuilder extends ResolutionWorldBuilder {
-  /// Returns the classes registered as directly or indirectly instantiated.
-  Iterable<ClassEntity> get processedClasses;
-
-  /// Registers that [element] has been closurized.
-  void registerClosurizedMember(MemberEntity element);
-
-  /// Register [type] as (directly) instantiated.
-  // TODO(johnniwinther): Fully enforce the separation between exact, through
-  // subclass and through subtype instantiated types/classes.
-  // TODO(johnniwinther): Support unknown type arguments for generic types.
-  void registerTypeInstantiation(
-      InterfaceType type, ClassUsedCallback classUsed,
-      {ConstructorEntity constructor});
-
-  /// Computes usage for all members declared by [cls]. Calls [membersUsed] with
-  /// the usage changes for each member.
-  ///
-  /// If [checkEnqueuerConsistency] is `true` we check that no new member
-  /// usage can be found. This check is performed without changing the already
-  /// collected member usage.
-  void processClassMembers(ClassEntity cls, MemberUsedCallback memberUsed,
-      {bool checkEnqueuerConsistency = false});
-
-  /// Applies the [dynamicUse] to applicable instance members. Calls
-  /// [membersUsed] with the usage changes for each member.
-  void registerDynamicUse(DynamicUse dynamicUse, MemberUsedCallback memberUsed);
-
-  /// Applies the [staticUse] to applicable members. Calls [membersUsed] with
-  /// the usage changes for each member.
-  void registerStaticUse(StaticUse staticUse, MemberUsedCallback memberUsed);
-
-  /// Register the constant [use] with this world builder. Returns `true` if
-  /// the constant use was new to the world.
-  bool registerConstantUse(ConstantUse use);
-
-  bool isMemberProcessed(MemberEntity member);
-  void registerProcessedMember(MemberEntity member);
-  Iterable<MemberEntity> get processedMembers;
-
-  /// Registers that [type] is checked in this world builder.
-  void registerIsCheck(DartType type);
-
-  void registerNamedTypeVariableNewRti(TypeVariableType typeVariable);
-
-  void registerTypeVariableTypeLiteral(TypeVariableType typeVariable);
-}
-
 /// The type and kind of an instantiation registered through
 /// `ResolutionWorldBuilder.registerTypeInstantiation`.
 class Instance {
@@ -248,9 +189,7 @@
   }
 }
 
-/// Implementation of [ResolutionEnqueuerWorldBuilder].
-class ResolutionWorldBuilderImpl extends WorldBuilderBase
-    implements ResolutionEnqueuerWorldBuilder {
+class ResolutionWorldBuilder extends WorldBuilder implements World {
   /// Instantiation information for all classes with instantiated types.
   ///
   /// Invariant: Elements are declaration elements.
@@ -340,7 +279,7 @@
 
   final KernelToElementMapImpl _elementMap;
 
-  ResolutionWorldBuilderImpl(
+  ResolutionWorldBuilder(
       this._options,
       this._elementMap,
       this._elementEnvironment,
@@ -359,23 +298,22 @@
       this._classHierarchyBuilder,
       this._classQueries);
 
-  @override
+  /// Returns the classes registered as directly or indirectly instantiated.
   Iterable<ClassEntity> get processedClasses => _processedClasses.keys
       .where((cls) => _processedClasses[cls].isInstantiated);
 
-  @override
   bool isMemberProcessed(MemberEntity member) =>
       _processedMembers.contains(member);
 
-  @override
   void registerProcessedMember(MemberEntity member) {
     _processedMembers.add(member);
   }
 
-  @override
   Iterable<MemberEntity> get processedMembers => _processedMembers;
 
-  @override
+  /// The closed world computed by this world builder.
+  ///
+  /// This is only available after the world builder has been closed.
   KClosedWorld get closedWorldForTesting {
     if (!_closed) {
       failedAt(
@@ -385,7 +323,6 @@
   }
 
   // TODO(johnniwinther): Improve semantic precision.
-  @override
   Iterable<ClassEntity> get directlyInstantiatedClasses {
     Set<ClassEntity> classes = {};
     getInstantiationMap().forEach((ClassEntity cls, InstantiationInfo info) {
@@ -396,7 +333,7 @@
     return classes;
   }
 
-  @override
+  /// Registers that [element] has been closurized.
   void registerClosurizedMember(MemberEntity element) {
     FunctionType type = _elementEnvironment.getFunctionType(element);
     if (type.containsTypeVariables) {
@@ -404,10 +341,10 @@
     }
   }
 
+  /// Register [type] as (directly) instantiated.
   // TODO(johnniwinther): Fully enforce the separation between exact, through
   // subclass and through subtype instantiated types/classes.
   // TODO(johnniwinther): Support unknown type arguments for generic types.
-  @override
   void registerTypeInstantiation(
       InterfaceType type, ClassUsedCallback classUsed,
       {ConstructorEntity constructor}) {
@@ -495,7 +432,8 @@
     return _hasMatchingSelector(_invokedSetters[member.name], member);
   }
 
-  @override
+  /// Applies the [dynamicUse] to applicable instance members. Calls
+  /// [membersUsed] with the usage changes for each member.
   void registerDynamicUse(
       DynamicUse dynamicUse, MemberUsedCallback memberUsed) {
     Selector selector = dynamicUse.selector;
@@ -573,22 +511,23 @@
     return constraints.addReceiverConstraint(constraint);
   }
 
-  @override
+  /// Registers that [type] is checked in this world builder.
   void registerIsCheck(covariant DartType type) {
     _isChecks.add(type);
   }
 
-  @override
   void registerNamedTypeVariableNewRti(TypeVariableType type) {
     _namedTypeVariablesNewRti.add(type);
   }
 
-  @override
+  /// Register the constant [use] with this world builder. Returns `true` if
+  /// the constant use was new to the world.
   bool registerConstantUse(ConstantUse use) {
     return _constantValues.add(use.value);
   }
 
-  @override
+  /// Applies the [staticUse] to applicable members. Calls [membersUsed] with
+  /// the usage changes for each member.
   void registerStaticUse(StaticUse staticUse, MemberUsedCallback memberUsed) {
     if (staticUse.kind == StaticUseKind.CLOSURE) {
       Local localFunction = staticUse.element;
@@ -718,7 +657,12 @@
     }
   }
 
-  @override
+  /// Computes usage for all members declared by [cls]. Calls [membersUsed] with
+  /// the usage changes for each member.
+  ///
+  /// If [checkEnqueuerConsistency] is `true` we check that no new member
+  /// usage can be found. This check is performed without changing the already
+  /// collected member usage.
   void processClassMembers(ClassEntity cls, MemberUsedCallback memberUsed,
       {bool checkEnqueuerConsistency = false}) {
     _elementEnvironment.forEachClassMember(cls,
@@ -891,7 +835,6 @@
     }
   }
 
-  @override
   void registerUsedElement(MemberEntity element) {
     if (element.isInstanceMember && !element.isAbstract) {
       _liveInstanceMembers.add(element);
@@ -945,12 +888,23 @@
     return assignedInstanceMembers;
   }
 
-  @override
   void registerClass(ClassEntity cls) {
     _classHierarchyBuilder.registerClass(cls);
   }
 
-  @override
+  /// Returns `true` if [member] is inherited into a subtype of [type].
+  ///
+  /// For instance:
+  ///
+  ///     class A { m() {} }
+  ///     class B extends A implements I {}
+  ///     class C extends Object with A implements I {}
+  ///     abstract class I { m(); }
+  ///     abstract class J implements A { }
+  ///
+  /// Here `A.m` is inherited into `A`, `B`, and `C`. Because `B` and
+  /// `C` implement `I`, `isInheritedInSubtypeOf(A.m, I)` is true, but
+  /// `isInheritedInSubtypeOf(A.m, J)` is false.
   bool isInheritedIn(
       MemberEntity member, ClassEntity type, ClassRelation relation) {
     // TODO(johnniwinther): Use the [member] itself to avoid enqueueing members
@@ -979,7 +933,6 @@
     throw UnsupportedError("Unexpected ClassRelation $relation.");
   }
 
-  @override
   KClosedWorld closeWorld(DiagnosticReporter reporter) {
     Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses =
         populateHierarchyNodes();
@@ -1014,7 +967,7 @@
       }
     });
 
-    KClosedWorld closedWorld = KClosedWorldImpl(_elementMap,
+    KClosedWorld closedWorld = KClosedWorld(_elementMap,
         options: _options,
         elementEnvironment: _elementEnvironment,
         dartTypes: _dartTypes,
diff --git a/pkg/compiler/lib/src/universe/world_builder.dart b/pkg/compiler/lib/src/universe/world_builder.dart
index 9470571..d75a9e2 100644
--- a/pkg/compiler/lib/src/universe/world_builder.dart
+++ b/pkg/compiler/lib/src/universe/world_builder.dart
@@ -10,7 +10,8 @@
 import '../elements/types.dart';
 import '../ir/static_type.dart';
 import '../js_backend/native_data.dart' show NativeBasicData;
-import '../world.dart' show World, JClosedWorld, OpenWorld;
+import '../universe/resolution_world_builder.dart' show ResolutionWorldBuilder;
+import '../world.dart' show World;
 import 'selector.dart' show Selector;
 import 'use.dart' show DynamicUse, StaticUse;
 
@@ -99,8 +100,8 @@
   }
 
   @override
-  bool appliedUnnamed(
-      DynamicUse dynamicUse, MemberEntity member, covariant OpenWorld world) {
+  bool appliedUnnamed(DynamicUse dynamicUse, MemberEntity member,
+      covariant ResolutionWorldBuilder world) {
     Selector selector = dynamicUse.selector;
     StrongModeConstraint constraint = dynamicUse.receiverConstraint;
     return selector.appliesUnnamed(member) &&
@@ -184,7 +185,7 @@
 
   bool needsNoSuchMethodHandling(Selector selector, World world) => true;
 
-  bool canHit(MemberEntity element, Name name, OpenWorld world) {
+  bool canHit(MemberEntity element, Name name, ResolutionWorldBuilder world) {
     return world.isInheritedIn(element, cls, relation);
   }
 
@@ -207,19 +208,7 @@
   String toString() => 'StrongModeConstraint($cls,$relation)';
 }
 
-/// The [WorldBuilder] is an auxiliary class used in the process of computing
-/// the [JClosedWorld].
-// TODO(johnniwinther): Move common implementation to a [WorldBuilderBase] when
-// universes and worlds have been unified.
 abstract class WorldBuilder {
-  /// All directly instantiated classes, that is, classes with a generative
-  /// constructor that has been called directly and not only through a
-  /// super-call.
-  // TODO(johnniwinther): Improve semantic precision.
-  Iterable<ClassEntity> get directlyInstantiatedClasses;
-}
-
-abstract class WorldBuilderBase {
   final Map<Entity, Set<DartType>> staticTypeArgumentDependencies = {};
 
   final Map<Selector, Set<DartType>> dynamicTypeArgumentDependencies = {};
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index b5c4d4f..7a77d72 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -5,21 +5,14 @@
 library dart2js.world;
 
 import 'closure.dart';
-import 'common.dart';
-import 'common/elements.dart'
-    show
-        JCommonElements,
-        JElementEnvironment,
-        KCommonElements,
-        KElementEnvironment;
+import 'common/elements.dart' show JCommonElements, JElementEnvironment;
 import 'deferred_load/output_unit.dart';
 import 'elements/entities.dart';
 import 'elements/names.dart';
 import 'elements/types.dart';
 import 'inferrer/abstract_value_domain.dart';
-import 'ir/static_type.dart';
 import 'js_backend/annotations.dart';
-import 'js_backend/field_analysis.dart' show JFieldAnalysis, KFieldAnalysis;
+import 'js_backend/field_analysis.dart' show JFieldAnalysis;
 import 'js_backend/backend_usage.dart' show BackendUsage;
 import 'js_backend/interceptor_data.dart' show InterceptorData;
 import 'js_backend/native_data.dart' show NativeData;
@@ -224,28 +217,6 @@
   void registerExtractTypeArguments(ClassEntity interface);
 }
 
-abstract class OpenWorld implements World {
-  void registerUsedElement(MemberEntity element);
-
-  KClosedWorld closeWorld(DiagnosticReporter reporter);
-
-  /// Returns `true` if [member] is inherited into a subtype of [type].
-  ///
-  /// For instance:
-  ///
-  ///     class A { m() {} }
-  ///     class B extends A implements I {}
-  ///     class C extends Object with A implements I {}
-  ///     abstract class I { m(); }
-  ///     abstract class J implements A { }
-  ///
-  /// Here `A.m` is inherited into `A`, `B`, and `C`. Because `B` and
-  /// `C` implement `I`, `isInheritedInSubtypeOf(A.m, I)` is true, but
-  /// `isInheritedInSubtypeOf(A.m, J)` is false.
-  bool isInheritedIn(
-      MemberEntity member, ClassEntity type, ClassRelation relation);
-}
-
 /// A [BuiltWorld] is an immutable result of a [WorldBuilder].
 abstract class BuiltWorld {
   ClassHierarchy get classHierarchy;
@@ -298,52 +269,3 @@
   void forEachDynamicTypeArgument(
       void f(Selector selector, Set<DartType> typeArguments));
 }
-
-// TODO(johnniwinther): Rename this to `ResolutionWorld` or `KWorld`?
-// The immutable result of the [ResolutionWorldBuilder].
-abstract class KClosedWorld implements BuiltWorld {
-  DartTypes get dartTypes;
-  KFieldAnalysis get fieldAnalysis;
-  BackendUsage get backendUsage;
-  NativeData get nativeData;
-  InterceptorData get interceptorData;
-  KElementEnvironment get elementEnvironment;
-  KCommonElements get commonElements;
-
-  @override
-  ClassHierarchy get classHierarchy;
-
-  /// Returns `true` if [cls] is implemented by an instantiated class.
-  bool isImplemented(ClassEntity cls);
-
-  Iterable<MemberEntity> get liveInstanceMembers;
-  Map<ClassEntity, Set<ClassEntity>> get mixinUses;
-  Map<ClassEntity, Set<ClassEntity>> get typesImplementedBySubclasses;
-
-  /// Members that are written either directly or through a setter selector.
-  Iterable<MemberEntity> get assignedInstanceMembers;
-
-  Iterable<ClassEntity> get liveNativeClasses;
-  Map<MemberEntity, MemberUsage> get liveMemberUsage;
-  RuntimeTypesNeed get rtiNeed;
-  NoSuchMethodData get noSuchMethodData;
-
-  @override
-  AnnotationsData get annotationsData;
-
-  /// Set of live closurized members whose signatures reference type variables.
-  ///
-  /// A closurized method is considered live if the enclosing class has been
-  /// instantiated.
-  Iterable<FunctionEntity> get closurizedMembersWithFreeTypeVariables;
-
-  /// Set of (live) local functions (closures).
-  ///
-  /// A live function is one whose enclosing member function has been enqueued.
-  Iterable<Local> get localFunctions;
-
-  /// Returns `true` if [member] has been marked as used (called, read, etc.) in
-  /// this world builder.
-  // TODO(johnniwinther): Maybe this should be part of [ClosedWorld] (instead).
-  bool isMemberUsed(MemberEntity member);
-}
diff --git a/pkg/compiler/test/helpers/type_test_helper.dart b/pkg/compiler/test/helpers/type_test_helper.dart
index 5fdd343..570e368 100644
--- a/pkg/compiler/test/helpers/type_test_helper.dart
+++ b/pkg/compiler/test/helpers/type_test_helper.dart
@@ -15,8 +15,9 @@
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/kernel/kelements.dart';
 import 'package:compiler/src/kernel/kernel_strategy.dart';
+import 'package:compiler/src/kernel/kernel_world.dart';
 import 'package:compiler/src/options.dart';
-import 'package:compiler/src/world.dart' show JClosedWorld, KClosedWorld;
+import 'package:compiler/src/world.dart' show JClosedWorld;
 import 'memory_compiler.dart' as memory;
 
 extension DartTypeHelpers on DartType {
diff --git a/pkg/compiler/test/inlining/meta_annotations_test.dart b/pkg/compiler/test/inlining/meta_annotations_test.dart
index 0551ccb..e13070d 100644
--- a/pkg/compiler/test/inlining/meta_annotations_test.dart
+++ b/pkg/compiler/test/inlining/meta_annotations_test.dart
@@ -9,7 +9,7 @@
 import 'package:compiler/src/common/elements.dart';
 import 'package:compiler/src/compiler.dart';
 import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/world.dart' show KClosedWorld;
+import 'package:compiler/src/kernel/kernel_world.dart';
 import '../helpers/memory_compiler.dart';
 
 const Map<String, String> MEMORY_SOURCE_FILES = const {
diff --git a/pkg/compiler/test/member_usage/member_usage_test.dart b/pkg/compiler/test/member_usage/member_usage_test.dart
index ff367d6..0134f01 100644
--- a/pkg/compiler/test/member_usage/member_usage_test.dart
+++ b/pkg/compiler/test/member_usage/member_usage_test.dart
@@ -81,7 +81,7 @@
       Map<Id, ActualData<Features>> actualMap,
       {bool verbose: false}) {
     KernelFrontendStrategy frontendStrategy = compiler.frontendStrategy;
-    ResolutionWorldBuilderImpl resolutionWorldBuilder =
+    ResolutionWorldBuilder resolutionWorldBuilder =
         compiler.resolutionWorldBuilderForTesting;
     ir.Member node = frontendStrategy.elementMap.getMemberNode(member);
     Features features = new Features();
diff --git a/pkg/compiler/test/model/class_set_test.dart b/pkg/compiler/test/model/class_set_test.dart
index fd8526e..31e538e 100644
--- a/pkg/compiler/test/model/class_set_test.dart
+++ b/pkg/compiler/test/model/class_set_test.dart
@@ -11,6 +11,7 @@
 import 'package:expect/expect.dart';
 import 'package:async_helper/async_helper.dart';
 import 'package:compiler/src/elements/entities.dart' show ClassEntity;
+import 'package:compiler/src/kernel/kernel_world.dart';
 import 'package:compiler/src/universe/class_set.dart';
 import 'package:compiler/src/util/enumset.dart';
 import 'package:compiler/src/world.dart';
diff --git a/pkg/compiler/test/model/open_world_test.dart b/pkg/compiler/test/model/open_world_test.dart
index e694730..d098a5d 100644
--- a/pkg/compiler/test/model/open_world_test.dart
+++ b/pkg/compiler/test/model/open_world_test.dart
@@ -52,7 +52,7 @@
 
   CommonElements commonElements;
   NativeBasicData nativeBasicData;
-  ResolutionWorldBuilderImpl world;
+  ResolutionWorldBuilder world;
 
   List<ClassEntity> allClasses;
 
diff --git a/pkg/compiler/test/model/strong_mode_closed_world_test.dart b/pkg/compiler/test/model/strong_mode_closed_world_test.dart
index 76d847e..2b66300 100644
--- a/pkg/compiler/test/model/strong_mode_closed_world_test.dart
+++ b/pkg/compiler/test/model/strong_mode_closed_world_test.dart
@@ -9,7 +9,7 @@
 import 'package:compiler/src/compiler.dart';
 import 'package:compiler/src/common/elements.dart';
 import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/world.dart';
+import 'package:compiler/src/kernel/kernel_world.dart';
 import '../helpers/memory_compiler.dart';
 
 main() {
diff --git a/pkg/compiler/test/model/strong_mode_impact_test.dart b/pkg/compiler/test/model/strong_mode_impact_test.dart
index fc045cc..558f0af 100644
--- a/pkg/compiler/test/model/strong_mode_impact_test.dart
+++ b/pkg/compiler/test/model/strong_mode_impact_test.dart
@@ -12,7 +12,7 @@
 import 'package:compiler/src/common/elements.dart';
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/elements/types.dart';
-import 'package:compiler/src/world.dart';
+import 'package:compiler/src/kernel/kernel_world.dart';
 import 'package:compiler/src/universe/use.dart';
 import 'package:compiler/src/universe/world_impact.dart';
 import '../helpers/memory_compiler.dart';
diff --git a/pkg/compiler/test/model/subtypeset_test.dart b/pkg/compiler/test/model/subtypeset_test.dart
index f16f4c9..dca3abe 100644
--- a/pkg/compiler/test/model/subtypeset_test.dart
+++ b/pkg/compiler/test/model/subtypeset_test.dart
@@ -11,8 +11,8 @@
 import 'package:expect/expect.dart';
 import 'package:async_helper/async_helper.dart';
 import 'package:compiler/src/elements/entities.dart';
+import 'package:compiler/src/kernel/kernel_world.dart';
 import 'package:compiler/src/universe/class_set.dart';
-import 'package:compiler/src/world.dart';
 import '../helpers/type_test_helper.dart';
 
 void main() {