Rename ClosedWorld to JClosedWorld and merge it with ClosedWorldRefiner

Change-Id: I858695194fe4b0dffb7c85a93e2d6bcc04dd6229
Reviewed-on: https://dart-review.googlesource.com/58022
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
diff --git a/pkg/compiler/lib/src/backend_strategy.dart b/pkg/compiler/lib/src/backend_strategy.dart
index d47d1c9..0e29978 100644
--- a/pkg/compiler/lib/src/backend_strategy.dart
+++ b/pkg/compiler/lib/src/backend_strategy.dart
@@ -22,8 +22,8 @@
 /// Strategy pattern that defines the element model used in type inference
 /// and code generation.
 abstract class BackendStrategy {
-  /// Create the [ClosedWorldRefiner] for [closedWorld].
-  ClosedWorldRefiner createClosedWorldRefiner(KClosedWorld closedWorld);
+  /// Create the [JClosedWorld] from [closedWorld].
+  JClosedWorld createJClosedWorld(KClosedWorld closedWorld);
 
   /// Converts [data] to use backend entities instead of frontend entities.
   OutputUnitData convertOutputUnitData(OutputUnitData data);
@@ -38,11 +38,11 @@
   /// Creates the [CodegenWorldBuilder] used by the codegen enqueuer.
   CodegenWorldBuilder createCodegenWorldBuilder(
       NativeBasicData nativeBasicData,
-      ClosedWorld closedWorld,
+      JClosedWorld closedWorld,
       SelectorConstraintsStrategy selectorConstraintsStrategy);
 
   /// Creates the [WorkItemBuilder] used by the codegen enqueuer.
-  WorkItemBuilder createCodegenWorkItemBuilder(ClosedWorld closedWorld);
+  WorkItemBuilder createCodegenWorkItemBuilder(JClosedWorld closedWorld);
 
   /// Creates the [SsaBuilder] used for the element model.
   SsaBuilder createSsaBuilder(CompilerTask task, JavaScriptBackend backend,
@@ -55,6 +55,6 @@
   SourceSpan spanFromSpannable(Spannable spannable, Entity currentElement);
 
   /// Creates the [TypesInferrer] used by this strategy.
-  TypesInferrer createTypesInferrer(ClosedWorldRefiner closedWorldRefiner,
+  TypesInferrer createTypesInferrer(JClosedWorld closedWorld,
       {bool disableTypeInference: false});
 }
diff --git a/pkg/compiler/lib/src/closure.dart b/pkg/compiler/lib/src/closure.dart
index a4ad683..18cfdc3 100644
--- a/pkg/compiler/lib/src/closure.dart
+++ b/pkg/compiler/lib/src/closure.dart
@@ -6,17 +6,12 @@
 import 'common.dart';
 import 'elements/entities.dart';
 import 'elements/types.dart';
-import 'world.dart' show ClosedWorldRefiner;
 
 // TODO(johnniwinther,efortuna): Split [ClosureConversionTask] from
 // [ClosureDataLookup].
 abstract class ClosureConversionTask<T> extends CompilerTask
     implements ClosureDataLookup<T> {
   ClosureConversionTask(Measurer measurer) : super(measurer);
-
-  //void analyzeClosures();
-  void convertClosures(Iterable<MemberEntity> processedEntities,
-      ClosedWorldRefiner closedWorldRefiner);
 }
 
 /// Class that provides information for how closures are rewritten/represented
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index 2888f3c..4a8bc14 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -43,7 +43,7 @@
 import 'universe/use.dart' show StaticUse, TypeUse;
 import 'universe/world_impact.dart'
     show ImpactStrategy, WorldImpact, WorldImpactBuilderImpl;
-import 'world.dart' show ClosedWorld, ClosedWorldRefiner, KClosedWorld;
+import 'world.dart' show JClosedWorld, KClosedWorld;
 
 typedef CompilerDiagnosticReporter MakeReporterFunction(
     Compiler compiler, CompilerOptions options);
@@ -79,7 +79,7 @@
 
   Uri mainLibraryUri;
 
-  ClosedWorld backendClosedWorldForTesting;
+  JClosedWorld backendClosedWorldForTesting;
 
   DiagnosticReporter get reporter => _reporter;
   Map<Entity, WorldImpact> get impactCache => _impactCache;
@@ -371,15 +371,13 @@
         if (options.analyzeOnly) return;
         assert(mainFunction != null);
 
-        ClosedWorldRefiner closedWorldRefiner = closeResolution(mainFunction);
-        ClosedWorld closedWorld = closedWorldRefiner.closedWorld;
+        JClosedWorld closedWorld = closeResolution(mainFunction);
         backendClosedWorldForTesting = closedWorld;
         mainFunction = closedWorld.elementEnvironment.mainFunction;
 
         reporter.log('Inferring types...');
-        globalInference.runGlobalTypeInference(
-            mainFunction, closedWorld, closedWorldRefiner);
-        closedWorldRefiner.computeSideEffects();
+        globalInference.runGlobalTypeInference(mainFunction, closedWorld);
+        closedWorld.computeSideEffects();
 
         if (stopAfterTypeInference) return;
 
@@ -409,7 +407,7 @@
         checkQueues(resolutionEnqueuer, codegenEnqueuer);
       });
 
-  Enqueuer startCodegen(ClosedWorld closedWorld) {
+  Enqueuer startCodegen(JClosedWorld closedWorld) {
     Enqueuer codegenEnqueuer = enqueuer.createCodegenEnqueuer(closedWorld);
     _codegenWorldBuilder = codegenEnqueuer.worldBuilder;
     codegenEnqueuer.applyImpact(backend.onCodegenStart(
@@ -418,23 +416,19 @@
   }
 
   /// Perform the steps needed to fully end the resolution phase.
-  ClosedWorldRefiner closeResolution(FunctionEntity mainFunction) {
+  JClosedWorld closeResolution(FunctionEntity mainFunction) {
     phase = PHASE_DONE_RESOLVING;
 
     KClosedWorld closedWorld = resolutionWorldBuilder.closeWorld();
     OutputUnitData result = deferredLoadTask.run(mainFunction, closedWorld);
-    ClosedWorldRefiner closedWorldRefiner =
-        backendStrategy.createClosedWorldRefiner(closedWorld);
+    JClosedWorld closedWorldRefiner =
+        backendStrategy.createJClosedWorld(closedWorld);
     // Compute whole-program-knowledge that the backend needs. (This might
     // require the information computed in [world.closeWorld].)
     backend.onResolutionClosedWorld(closedWorldRefiner);
 
     backend.onDeferredLoadComplete(result);
 
-    // TODO(johnniwinther): Move this after rti computation but before
-    // reflection members computation, and (re-)close the world afterwards.
-    backendStrategy.closureDataLookup.convertClosures(
-        enqueuer.resolution.processedEntities, closedWorldRefiner);
     return closedWorldRefiner;
   }
 
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index e0b8077..15950a1 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -26,11 +26,11 @@
 import 'universe/world_builder.dart' show CodegenWorldBuilder;
 import 'universe/world_impact.dart'
     show ImpactUseCase, WorldImpact, WorldImpactVisitorImpl;
-import 'world.dart' show ClosedWorld;
+import 'world.dart' show JClosedWorld;
 
 class ElementInfoCollector {
   final Compiler compiler;
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
 
   ElementEnvironment get environment => closedWorld.elementEnvironment;
   CodegenWorldBuilder get codegenWorldBuilder => compiler.codegenWorldBuilder;
@@ -455,7 +455,7 @@
   /// Returns an iterable of [Selection]s that are used by [entity]. Each
   /// [Selection] contains an entity that is used and the selector that
   /// selected the entity.
-  Iterable<Selection> getRetaining(Entity entity, ClosedWorld closedWorld) {
+  Iterable<Selection> getRetaining(Entity entity, JClosedWorld closedWorld) {
     WorldImpact impact = impacts[entity];
     if (impact == null) return const <Selection>[];
 
@@ -540,7 +540,7 @@
     return sb.toString();
   }
 
-  void dumpInfo(ClosedWorld closedWorld) {
+  void dumpInfo(JClosedWorld closedWorld) {
     measure(() {
       infoCollector = new ElementInfoCollector(compiler, closedWorld)..run();
       StringBuffer jsonBuffer = new StringBuffer();
@@ -554,7 +554,7 @@
     });
   }
 
-  void dumpInfoJson(StringSink buffer, ClosedWorld closedWorld) {
+  void dumpInfoJson(StringSink buffer, JClosedWorld closedWorld) {
     JsonEncoder encoder = const JsonEncoder.withIndent('  ');
     Stopwatch stopwatch = new Stopwatch();
     stopwatch.start();
diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
index decc885..c4b5b90c 100644
--- a/pkg/compiler/lib/src/enqueue.dart
+++ b/pkg/compiler/lib/src/enqueue.dart
@@ -29,7 +29,7 @@
     show ImpactStrategy, ImpactUseCase, WorldImpact, WorldImpactVisitor;
 import 'util/enumset.dart';
 import 'util/util.dart' show Setlet;
-import 'world.dart' show ClosedWorld;
+import 'world.dart' show JClosedWorld;
 
 class EnqueueTask extends CompilerTask {
   ResolutionEnqueuer _resolution;
@@ -60,7 +60,7 @@
           ..onEmptyForTesting = compiler.onResolutionQueueEmptyForTesting;
   }
 
-  Enqueuer createCodegenEnqueuer(ClosedWorld closedWorld) {
+  Enqueuer createCodegenEnqueuer(JClosedWorld closedWorld) {
     return codegenEnqueuerForTesting = compiler.backend
         .createCodegenEnqueuer(this, compiler, closedWorld)
           ..onEmptyForTesting = compiler.onCodegenQueueEmptyForTesting;
diff --git a/pkg/compiler/lib/src/inferrer/builder_kernel.dart b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
index addb4ce..d8c13d6 100644
--- a/pkg/compiler/lib/src/inferrer/builder_kernel.dart
+++ b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
@@ -36,7 +36,7 @@
 /// is doing.
 class KernelTypeGraphBuilder extends ir.Visitor<TypeInformation> {
   final CompilerOptions _options;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final ClosureDataLookup<ir.Node> _closureDataLookup;
   final InferrerEngine<ir.Node> _inferrer;
   final TypeSystem<ir.Node> _types;
@@ -81,8 +81,7 @@
         // TODO(johnniwinther): Should side effects also be tracked for field
         // initializers?
         this._sideEffectsBuilder = _analyzedMember is FunctionEntity
-            ? _inferrer.closedWorldRefiner
-                .getSideEffectsBuilder(_analyzedMember)
+            ? _inferrer.closedWorld.getSideEffectsBuilder(_analyzedMember)
             : new SideEffectsBuilder.free(_analyzedMember),
         this._inGenerativeConstructor = _analyzedNode is ir.Constructor {
     if (_locals != null) return;
diff --git a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
index 799265d..77622dd 100644
--- a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
+++ b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
@@ -53,8 +53,7 @@
   ]);
 
   CompilerOptions get options;
-  ClosedWorld get closedWorld;
-  ClosedWorldRefiner get closedWorldRefiner;
+  JClosedWorld get closedWorld;
   DiagnosticReporter get reporter;
   AbstractValueDomain get abstractValueDomain =>
       closedWorld.abstractValueDomain;
@@ -267,10 +266,9 @@
   final DiagnosticReporter reporter;
   final CompilerOutput _compilerOutput;
 
-  /// The [ClosedWorld] on which inference reasoning is based.
-  final ClosedWorld closedWorld;
+  /// The [JClosedWorld] on which inference reasoning is based.
+  final JClosedWorld closedWorld;
 
-  final ClosedWorldRefiner closedWorldRefiner;
   final TypeSystem<T> types;
   final Map<T, TypeInformation> concreteTypes = new Map<T, TypeInformation>();
 
@@ -294,7 +292,6 @@
       this.reporter,
       this._compilerOutput,
       this.closedWorld,
-      this.closedWorldRefiner,
       this.noSuchMethodRegistry,
       this.mainElement,
       this.sorter,
@@ -345,8 +342,7 @@
     } else if (callee.isGetter && !selector.isGetter) {
       sideEffectsBuilder.setAllSideEffectsAndDependsOnSomething();
     } else {
-      sideEffectsBuilder
-          .addInput(closedWorldRefiner.getSideEffectsBuilder(callee));
+      sideEffectsBuilder.addInput(closedWorld.getSideEffectsBuilder(callee));
     }
   }
 
@@ -506,7 +502,7 @@
         tracer.run();
         if (!tracer.continueAnalyzing) {
           elements.forEach((FunctionEntity element) {
-            closedWorldRefiner.registerMightBePassedToApply(element);
+            closedWorld.registerMightBePassedToApply(element);
             if (debug.VERBOSE) {
               print("traced closure $element as ${true} (bail)");
             }
@@ -529,11 +525,11 @@
             workQueue.add(info);
           });
           if (tracer.tracedType.mightBePassedToFunctionApply) {
-            closedWorldRefiner.registerMightBePassedToApply(element);
+            closedWorld.registerMightBePassedToApply(element);
           }
           if (debug.VERBOSE) {
             print("traced closure $element as "
-                "${closedWorldRefiner
+                "${closedWorld
                 .getCurrentlyKnownMightBePassedToApply(element)}");
           }
         });
@@ -766,7 +762,7 @@
       }
       if (info is StaticCallSiteTypeInformation) {
         MemberEntity member = info.calledElement;
-        closedWorldRefiner.addFunctionCalledInLoop(member);
+        closedWorld.addFunctionCalledInLoop(member);
       } else if (info.mask != null &&
           !abstractValueDomain.containsAll(info.mask)) {
         // For instance methods, we only register a selector called in a
@@ -774,7 +770,7 @@
         // methods as being called from within a loop. This cuts down
         // on the code bloat.
         info.callees.forEach((MemberEntity element) {
-          closedWorldRefiner.addFunctionCalledInLoop(element);
+          closedWorld.addFunctionCalledInLoop(element);
         });
       }
     });
diff --git a/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart b/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart
index a5f708c..ef1f1bc 100644
--- a/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart
+++ b/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart
@@ -33,16 +33,10 @@
   final GlobalLocalsMap _globalLocalsMap;
   final ClosureDataLookup<ir.Node> _closureDataLookup;
 
-  KernelTypeGraphInferrer(
-      this._compiler,
-      this._elementMap,
-      this._globalLocalsMap,
-      this._closureDataLookup,
-      ClosedWorld closedWorld,
-      ClosedWorldRefiner closedWorldRefiner,
+  KernelTypeGraphInferrer(this._compiler, this._elementMap,
+      this._globalLocalsMap, this._closureDataLookup, JClosedWorld closedWorld,
       {bool disableTypeInference: false})
-      : super(closedWorld, closedWorldRefiner,
-            disableTypeInference: disableTypeInference);
+      : super(closedWorld, disableTypeInference: disableTypeInference);
 
   @override
   InferrerEngine<ir.Node> createInferrerEngineFor(FunctionEntity main) {
@@ -55,7 +49,6 @@
         _globalLocalsMap,
         _closureDataLookup,
         closedWorld,
-        closedWorldRefiner,
         _compiler.backend.noSuchMethodRegistry,
         main,
         _compiler.backendStrategy.sorter);
@@ -70,7 +63,7 @@
 class KernelGlobalTypeInferenceResults
     extends GlobalTypeInferenceResults<ir.Node> {
   KernelGlobalTypeInferenceResults(
-      TypesInferrer<ir.Node> inferrer, ClosedWorld closedWorld)
+      TypesInferrer<ir.Node> inferrer, JClosedWorld closedWorld)
       : super(inferrer, closedWorld);
 
   GlobalTypeInferenceMemberResult<ir.Node> createMemberResult(
@@ -105,8 +98,7 @@
       this._elementMap,
       this._globalLocalsMap,
       this._closureDataLookup,
-      ClosedWorld closedWorld,
-      ClosedWorldRefiner closedWorldRefiner,
+      JClosedWorld closedWorld,
       NoSuchMethodRegistry noSuchMethodRegistry,
       FunctionEntity mainElement,
       Sorter sorter)
@@ -116,7 +108,6 @@
             reporter,
             compilerOutput,
             closedWorld,
-            closedWorldRefiner,
             noSuchMethodRegistry,
             mainElement,
             sorter,
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
index d6482a3..e07ddc6 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
@@ -10,7 +10,7 @@
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
 import '../universe/selector.dart' show Selector;
-import '../world.dart' show ClosedWorld, ClosedWorldRefiner;
+import '../world.dart' show JClosedWorld;
 import 'inferrer_engine.dart';
 import 'type_graph_nodes.dart';
 
@@ -48,11 +48,9 @@
 abstract class TypeGraphInferrer<T> implements TypesInferrer<T> {
   InferrerEngine<T> inferrer;
   final bool _disableTypeInference;
-  final ClosedWorld closedWorld;
-  final ClosedWorldRefiner closedWorldRefiner;
+  final JClosedWorld closedWorld;
 
-  TypeGraphInferrer(this.closedWorld, this.closedWorldRefiner,
-      {bool disableTypeInference: false})
+  TypeGraphInferrer(this.closedWorld, {bool disableTypeInference: false})
       : this._disableTypeInference = disableTypeInference;
 
   String get name => 'Graph inferrer';
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
index 2353af8..ce1cc11 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
@@ -15,7 +15,7 @@
 import '../types/abstract_value_domain.dart';
 import '../universe/selector.dart' show Selector;
 import '../util/util.dart' show ImmutableEmptySet, Setlet;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'debug.dart' as debug;
 import 'locals_handler.dart' show ArgumentsTypes;
 import 'inferrer_engine.dart';
@@ -770,8 +770,7 @@
       giveUp(inferrer);
       return safeType(inferrer);
     }
-    if (inferrer.closedWorldRefiner
-        .getCurrentlyKnownMightBePassedToApply(_method)) {
+    if (inferrer.closedWorld.getCurrentlyKnownMightBePassedToApply(_method)) {
       giveUp(inferrer);
       return safeType(inferrer);
     }
@@ -1081,7 +1080,7 @@
    */
   TypeInformation handleIntrisifiedSelector(
       Selector selector, AbstractValue mask, InferrerEngine inferrer) {
-    ClosedWorld closedWorld = inferrer.closedWorld;
+    JClosedWorld closedWorld = inferrer.closedWorld;
     if (mask == null) return null;
     if (!inferrer.abstractValueDomain.isIntegerOrNull(mask)) {
       return null;
@@ -1177,7 +1176,7 @@
   }
 
   AbstractValue computeType(InferrerEngine inferrer) {
-    ClosedWorld closedWorld = inferrer.closedWorld;
+    JClosedWorld closedWorld = inferrer.closedWorld;
     AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
     Iterable<MemberEntity> oldTargets = _concreteTargets;
     AbstractValue typeMask = computeTypedSelector(inferrer);
@@ -2009,7 +2008,7 @@
 }
 
 AbstractValue _narrowType(
-    ClosedWorld closedWorld, AbstractValue type, DartType annotation,
+    JClosedWorld closedWorld, AbstractValue type, DartType annotation,
     {bool isNullable: true}) {
   AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
   AbstractValue otherType;
diff --git a/pkg/compiler/lib/src/inferrer/type_system.dart b/pkg/compiler/lib/src/inferrer/type_system.dart
index 672ebbe..b5c8895 100644
--- a/pkg/compiler/lib/src/inferrer/type_system.dart
+++ b/pkg/compiler/lib/src/inferrer/type_system.dart
@@ -46,7 +46,7 @@
  * The class [SimpleInferrerVisitor] will use when working on types.
  */
 class TypeSystem<T> {
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final TypeSystemStrategy<T> strategy;
 
   /// [parameterTypeInformations] and [memberTypeInformations] ordered by
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/constants.dart b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
index 501f7e3..5003c72b 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
@@ -7,21 +7,21 @@
 import '../../common.dart';
 import '../../constants/values.dart';
 import '../../js_backend/js_backend.dart' show SyntheticConstantKind;
-import '../../world.dart' show ClosedWorld;
+import '../../world.dart' show JClosedWorld;
 import 'masks.dart';
 
 /// Computes the [TypeMask] for the constant [value].
-TypeMask computeTypeMask(ClosedWorld closedWorld, ConstantValue value) {
+TypeMask computeTypeMask(JClosedWorld closedWorld, ConstantValue value) {
   return value.accept(const ConstantValueTypeMasks(), closedWorld);
 }
 
 class ConstantValueTypeMasks
-    extends ConstantValueVisitor<TypeMask, ClosedWorld> {
+    extends ConstantValueVisitor<TypeMask, JClosedWorld> {
   const ConstantValueTypeMasks();
 
   @override
   TypeMask visitConstructed(
-      ConstructedConstantValue constant, ClosedWorld closedWorld) {
+      ConstructedConstantValue constant, JClosedWorld closedWorld) {
     if (closedWorld.interceptorData.isInterceptedClass(constant.type.element)) {
       return closedWorld.abstractValueDomain.nonNullType;
     }
@@ -30,18 +30,18 @@
 
   @override
   TypeMask visitDeferred(
-      DeferredConstantValue constant, ClosedWorld closedWorld) {
+      DeferredConstantValue constant, JClosedWorld closedWorld) {
     return constant.referenced.accept(this, closedWorld);
   }
 
   @override
   TypeMask visitDeferredGlobal(
-      DeferredGlobalConstantValue constant, ClosedWorld closedWorld) {
+      DeferredGlobalConstantValue constant, JClosedWorld closedWorld) {
     return constant.referenced.accept(this, closedWorld);
   }
 
   @override
-  TypeMask visitDouble(DoubleConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitDouble(DoubleConstantValue constant, JClosedWorld closedWorld) {
     // We have to recognize double constants that are 'is int'.
     if (closedWorld.constantSystem.isInt(constant)) {
       if (constant.isMinusZero) {
@@ -56,7 +56,7 @@
 
   @override
   TypeMask visitSynthetic(
-      SyntheticConstantValue constant, ClosedWorld closedWorld) {
+      SyntheticConstantValue constant, JClosedWorld closedWorld) {
     switch (constant.valueKind) {
       case SyntheticConstantKind.DUMMY_INTERCEPTOR:
         return constant.payload;
@@ -73,24 +73,24 @@
   }
 
   @override
-  TypeMask visitBool(BoolConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitBool(BoolConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.boolType;
   }
 
   @override
   TypeMask visitFunction(
-      FunctionConstantValue constant, ClosedWorld closedWorld) {
+      FunctionConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.functionType;
   }
 
   @override
   TypeMask visitInstantiation(
-      InstantiationConstantValue constant, ClosedWorld closedWorld) {
+      InstantiationConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.functionType;
   }
 
   @override
-  TypeMask visitInt(IntConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitInt(IntConstantValue constant, JClosedWorld closedWorld) {
     if (constant.isUInt31()) return closedWorld.abstractValueDomain.uint31Type;
     if (constant.isUInt32()) return closedWorld.abstractValueDomain.uint32Type;
     if (constant.isPositive())
@@ -100,38 +100,38 @@
 
   @override
   TypeMask visitInterceptor(
-      InterceptorConstantValue constant, ClosedWorld closedWorld) {
+      InterceptorConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.nonNullType;
   }
 
   @override
-  TypeMask visitList(ListConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitList(ListConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.constListType;
   }
 
   @override
-  TypeMask visitMap(MapConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitMap(MapConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.constMapType;
   }
 
   @override
-  TypeMask visitNull(NullConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitNull(NullConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.nullType;
   }
 
   @override
   TypeMask visitNonConstant(
-      NonConstantValue constant, ClosedWorld closedWorld) {
+      NonConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.nullType;
   }
 
   @override
-  TypeMask visitString(StringConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitString(StringConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.stringType;
   }
 
   @override
-  TypeMask visitType(TypeConstantValue constant, ClosedWorld closedWorld) {
+  TypeMask visitType(TypeConstantValue constant, JClosedWorld closedWorld) {
     return closedWorld.abstractValueDomain.typeType;
   }
 }
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
index f389c66..9e35791 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
@@ -50,13 +50,13 @@
         length == other.length;
   }
 
-  TypeMask intersection(TypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersection(TypeMask other, JClosedWorld closedWorld) {
     TypeMask forwardIntersection = forwardTo.intersection(other, closedWorld);
     if (forwardIntersection.isEmptyOrNull) return forwardIntersection;
     return forwardIntersection.isNullable ? nullable() : nonNullable();
   }
 
-  TypeMask union(dynamic other, ClosedWorld closedWorld) {
+  TypeMask union(dynamic other, JClosedWorld closedWorld) {
     if (this == other) {
       return this;
     } else if (equalsDisregardNull(other)) {
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
index 3a620c4..d04e18a 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
@@ -56,13 +56,13 @@
             (k) => _typeMap.containsKey(k) && _typeMap[k] == other._typeMap[k]);
   }
 
-  TypeMask intersection(TypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersection(TypeMask other, JClosedWorld closedWorld) {
     TypeMask forwardIntersection = forwardTo.intersection(other, closedWorld);
     if (forwardIntersection.isEmptyOrNull) return forwardIntersection;
     return forwardIntersection.isNullable ? nullable() : nonNullable();
   }
 
-  TypeMask union(dynamic other, ClosedWorld closedWorld) {
+  TypeMask union(dynamic other, JClosedWorld closedWorld) {
     if (this == other) {
       return this;
     } else if (equalsDisregardNull(other)) {
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
index f83240a..644cfd2 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
@@ -50,7 +50,7 @@
    * [TypeMask.assertIsNormalized] with the factory's result returns `true`.
    */
   factory FlatTypeMask.normalized(
-      ClassEntity base, int flags, ClosedWorld world) {
+      ClassEntity base, int flags, JClosedWorld world) {
     if ((flags >> 1) == EMPTY || ((flags >> 1) == EXACT)) {
       return new FlatTypeMask.internal(base, flags);
     }
@@ -94,7 +94,7 @@
     return isNullable ? new FlatTypeMask.internal(base, flags & ~1) : this;
   }
 
-  bool contains(ClassEntity other, ClosedWorld closedWorld) {
+  bool contains(ClassEntity other, JClosedWorld closedWorld) {
     if (isEmptyOrNull) {
       return false;
     } else if (identical(base, other)) {
@@ -109,7 +109,7 @@
     }
   }
 
-  bool isSingleImplementationOf(ClassEntity cls, ClosedWorld closedWorld) {
+  bool isSingleImplementationOf(ClassEntity cls, JClosedWorld closedWorld) {
     // Special case basic types so that, for example, JSString is the
     // single implementation of String.
     // The general optimization is to realize there is only one class that
@@ -138,7 +138,7 @@
     return false;
   }
 
-  bool isInMask(TypeMask other, ClosedWorld closedWorld) {
+  bool isInMask(TypeMask other, JClosedWorld closedWorld) {
     if (isEmptyOrNull) return isNullable ? other.isNullable : true;
     // The empty type contains no classes.
     if (other.isEmptyOrNull) return false;
@@ -171,11 +171,11 @@
     return satisfies(otherBase, closedWorld);
   }
 
-  bool containsMask(TypeMask other, ClosedWorld closedWorld) {
+  bool containsMask(TypeMask other, JClosedWorld closedWorld) {
     return other.isInMask(this, closedWorld);
   }
 
-  bool containsOnlyInt(ClosedWorld closedWorld) {
+  bool containsOnlyInt(JClosedWorld closedWorld) {
     CommonElements commonElements = closedWorld.commonElements;
     return base == closedWorld.commonElements.intClass ||
         base == commonElements.jsIntClass ||
@@ -184,24 +184,24 @@
         base == commonElements.jsUInt32Class;
   }
 
-  bool containsOnlyDouble(ClosedWorld closedWorld) {
+  bool containsOnlyDouble(JClosedWorld closedWorld) {
     return base == closedWorld.commonElements.doubleClass ||
         base == closedWorld.commonElements.jsDoubleClass;
   }
 
-  bool containsOnlyNum(ClosedWorld closedWorld) {
+  bool containsOnlyNum(JClosedWorld closedWorld) {
     return containsOnlyInt(closedWorld) ||
         containsOnlyDouble(closedWorld) ||
         base == closedWorld.commonElements.numClass ||
         base == closedWorld.commonElements.jsNumberClass;
   }
 
-  bool containsOnlyBool(ClosedWorld closedWorld) {
+  bool containsOnlyBool(JClosedWorld closedWorld) {
     return base == closedWorld.commonElements.boolClass ||
         base == closedWorld.commonElements.jsBoolClass;
   }
 
-  bool containsOnlyString(ClosedWorld closedWorld) {
+  bool containsOnlyString(JClosedWorld closedWorld) {
     return base == closedWorld.commonElements.stringClass ||
         base == closedWorld.commonElements.jsStringClass;
   }
@@ -210,7 +210,7 @@
     return base == cls;
   }
 
-  bool satisfies(ClassEntity cls, ClosedWorld closedWorld) {
+  bool satisfies(ClassEntity cls, JClosedWorld closedWorld) {
     if (isEmptyOrNull) return false;
     if (closedWorld.isSubtypeOf(base, cls)) return true;
     return false;
@@ -218,7 +218,7 @@
 
   /// Returns the [Entity] if this type represents a single class, otherwise
   /// returns `null`.  This method is conservative.
-  ClassEntity singleClass(ClosedWorld closedWorld) {
+  ClassEntity singleClass(JClosedWorld closedWorld) {
     if (isEmptyOrNull) return null;
     if (isNullable) return null; // It is Null and some other class.
     if (isExact) {
@@ -234,12 +234,12 @@
   /**
    * Returns whether or not this type mask contains all types.
    */
-  bool containsAll(ClosedWorld closedWorld) {
+  bool containsAll(JClosedWorld closedWorld) {
     if (isEmptyOrNull || isExact) return false;
     return identical(base, closedWorld.commonElements.objectClass);
   }
 
-  TypeMask union(TypeMask other, ClosedWorld closedWorld) {
+  TypeMask union(TypeMask other, JClosedWorld closedWorld) {
     assert(other != null);
     assert(TypeMask.assertIsNormalized(this, closedWorld));
     assert(TypeMask.assertIsNormalized(other, closedWorld));
@@ -264,7 +264,7 @@
     }
   }
 
-  TypeMask unionSame(FlatTypeMask other, ClosedWorld closedWorld) {
+  TypeMask unionSame(FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base == other.base);
     assert(TypeMask.assertIsNormalized(this, closedWorld));
     assert(TypeMask.assertIsNormalized(other, closedWorld));
@@ -284,7 +284,7 @@
     }
   }
 
-  TypeMask unionStrictSubclass(FlatTypeMask other, ClosedWorld closedWorld) {
+  TypeMask unionStrictSubclass(FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base != other.base);
     assert(closedWorld.isSubclassOf(other.base, base));
     assert(TypeMask.assertIsNormalized(this, closedWorld));
@@ -311,7 +311,7 @@
         : this;
   }
 
-  TypeMask unionStrictSubtype(FlatTypeMask other, ClosedWorld closedWorld) {
+  TypeMask unionStrictSubtype(FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base != other.base);
     assert(!closedWorld.isSubclassOf(other.base, base));
     assert(closedWorld.isSubtypeOf(other.base, base));
@@ -328,7 +328,7 @@
         : this;
   }
 
-  TypeMask intersection(TypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersection(TypeMask other, JClosedWorld closedWorld) {
     assert(other != null);
     if (other is! FlatTypeMask) return other.intersection(this, closedWorld);
     assert(TypeMask.assertIsNormalized(this, closedWorld));
@@ -353,7 +353,7 @@
     }
   }
 
-  bool isDisjoint(TypeMask other, ClosedWorld closedWorld) {
+  bool isDisjoint(TypeMask other, JClosedWorld closedWorld) {
     if (other is! FlatTypeMask) return other.isDisjoint(this, closedWorld);
     FlatTypeMask flatOther = other;
 
@@ -379,7 +379,7 @@
   }
 
   static bool _isDisjointHelper(
-      FlatTypeMask a, FlatTypeMask b, ClosedWorld closedWorld) {
+      FlatTypeMask a, FlatTypeMask b, JClosedWorld closedWorld) {
     if (!a.isSubclass && b.isSubclass) {
       return _isDisjointHelper(b, a, closedWorld);
     }
@@ -394,7 +394,7 @@
     return true;
   }
 
-  TypeMask intersectionSame(FlatTypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersectionSame(FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base == other.base);
     // The two masks share the base type, so we must chose the most
     // constraining kind (the lowest) of the two. Only if both masks
@@ -413,7 +413,7 @@
   }
 
   TypeMask intersectionStrictSubclass(
-      FlatTypeMask other, ClosedWorld closedWorld) {
+      FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base != other.base);
     assert(closedWorld.isSubclassOf(other.base, base));
     // If this mask isn't at least a subclass mask, then the
@@ -433,7 +433,7 @@
   }
 
   TypeMask intersectionStrictSubtype(
-      FlatTypeMask other, ClosedWorld closedWorld) {
+      FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base != other.base);
     assert(closedWorld.isSubtypeOf(other.base, base));
     if (!isSubtype) return intersectionHelper(other, closedWorld);
@@ -450,14 +450,14 @@
     }
   }
 
-  TypeMask intersectionDisjoint(FlatTypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersectionDisjoint(FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base != other.base);
     assert(!closedWorld.isSubtypeOf(base, other.base));
     assert(!closedWorld.isSubtypeOf(other.base, base));
     return intersectionHelper(other, closedWorld);
   }
 
-  TypeMask intersectionHelper(FlatTypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersectionHelper(FlatTypeMask other, JClosedWorld closedWorld) {
     assert(base != other.base);
     assert(!closedWorld.isSubclassOf(base, other.base));
     assert(!closedWorld.isSubclassOf(other.base, base));
@@ -492,7 +492,7 @@
    * privacy is taken into account.
    */
   bool canHit(
-      MemberEntity element, Selector selector, ClosedWorld closedWorld) {
+      MemberEntity element, Selector selector, JClosedWorld closedWorld) {
     CommonElements commonElements = closedWorld.commonElements;
     assert(element.name == selector.name);
     if (isEmpty) return false;
@@ -528,7 +528,7 @@
   }
 
   bool needsNoSuchMethodHandling(
-      Selector selector, covariant ClosedWorld closedWorld) {
+      Selector selector, covariant JClosedWorld closedWorld) {
     // A call on an empty type mask is either dead code, or a call on
     // `null`.
     if (isEmptyOrNull) return false;
@@ -536,12 +536,12 @@
     // TODO(johnniwinther): A type mask cannot be abstract. Remove the need
     // for this noise (currently used for super-calls in inference and mirror
     // usage).
-    if (isExact && closedWorld.isAbstract(base)) return false;
+    if (isExact && base.isAbstract) return false;
 
     return closedWorld.needsNoSuchMethod(base, selector, _classQuery);
   }
 
-  MemberEntity locateSingleMember(Selector selector, ClosedWorld closedWorld) {
+  MemberEntity locateSingleMember(Selector selector, JClosedWorld closedWorld) {
     if (isEmptyOrNull) return null;
     if (closedWorld.includesClosureCall(selector, this)) return null;
     Iterable<MemberEntity> targets = closedWorld.locateMembers(selector, this);
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
index a24095d..9841e46 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
@@ -26,31 +26,31 @@
   bool get isValue => false;
   bool get isForwarding => true;
 
-  bool isInMask(TypeMask other, ClosedWorld closedWorld) {
+  bool isInMask(TypeMask other, JClosedWorld closedWorld) {
     return forwardTo.isInMask(other, closedWorld);
   }
 
-  bool containsMask(TypeMask other, ClosedWorld closedWorld) {
+  bool containsMask(TypeMask other, JClosedWorld closedWorld) {
     return forwardTo.containsMask(other, closedWorld);
   }
 
-  bool containsOnlyInt(ClosedWorld closedWorld) {
+  bool containsOnlyInt(JClosedWorld closedWorld) {
     return forwardTo.containsOnlyInt(closedWorld);
   }
 
-  bool containsOnlyDouble(ClosedWorld closedWorld) {
+  bool containsOnlyDouble(JClosedWorld closedWorld) {
     return forwardTo.containsOnlyDouble(closedWorld);
   }
 
-  bool containsOnlyNum(ClosedWorld closedWorld) {
+  bool containsOnlyNum(JClosedWorld closedWorld) {
     return forwardTo.containsOnlyNum(closedWorld);
   }
 
-  bool containsOnlyBool(ClosedWorld closedWorld) {
+  bool containsOnlyBool(JClosedWorld closedWorld) {
     return forwardTo.containsOnlyBool(closedWorld);
   }
 
-  bool containsOnlyString(ClosedWorld closedWorld) {
+  bool containsOnlyString(JClosedWorld closedWorld) {
     return forwardTo.containsOnlyString(closedWorld);
   }
 
@@ -58,23 +58,23 @@
     return forwardTo.containsOnly(cls);
   }
 
-  bool satisfies(ClassEntity cls, ClosedWorld closedWorld) {
+  bool satisfies(ClassEntity cls, JClosedWorld closedWorld) {
     return forwardTo.satisfies(cls, closedWorld);
   }
 
-  bool contains(ClassEntity cls, ClosedWorld closedWorld) {
+  bool contains(ClassEntity cls, JClosedWorld closedWorld) {
     return forwardTo.contains(cls, closedWorld);
   }
 
-  bool containsAll(ClosedWorld closedWorld) {
+  bool containsAll(JClosedWorld closedWorld) {
     return forwardTo.containsAll(closedWorld);
   }
 
-  ClassEntity singleClass(ClosedWorld closedWorld) {
+  ClassEntity singleClass(JClosedWorld closedWorld) {
     return forwardTo.singleClass(closedWorld);
   }
 
-  TypeMask union(other, ClosedWorld closedWorld) {
+  TypeMask union(other, JClosedWorld closedWorld) {
     if (this == other) {
       return this;
     } else if (equalsDisregardNull(other)) {
@@ -85,25 +85,25 @@
     return forwardTo.union(other, closedWorld);
   }
 
-  bool isDisjoint(TypeMask other, ClosedWorld closedWorld) {
+  bool isDisjoint(TypeMask other, JClosedWorld closedWorld) {
     return forwardTo.isDisjoint(other, closedWorld);
   }
 
-  TypeMask intersection(TypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersection(TypeMask other, JClosedWorld closedWorld) {
     return forwardTo.intersection(other, closedWorld);
   }
 
   bool needsNoSuchMethodHandling(
-      Selector selector, covariant ClosedWorld closedWorld) {
+      Selector selector, covariant JClosedWorld closedWorld) {
     return forwardTo.needsNoSuchMethodHandling(selector, closedWorld);
   }
 
   bool canHit(
-      MemberEntity element, Selector selector, ClosedWorld closedWorld) {
+      MemberEntity element, Selector selector, JClosedWorld closedWorld) {
     return forwardTo.canHit(element, selector, closedWorld);
   }
 
-  MemberEntity locateSingleMember(Selector selector, ClosedWorld closedWorld) {
+  MemberEntity locateSingleMember(Selector selector, JClosedWorld closedWorld) {
     return forwardTo.locateSingleMember(selector, closedWorld);
   }
 
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
index 7c47b4c..7feedff 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
@@ -53,13 +53,13 @@
         valueType == other.valueType;
   }
 
-  TypeMask intersection(TypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersection(TypeMask other, JClosedWorld closedWorld) {
     TypeMask forwardIntersection = forwardTo.intersection(other, closedWorld);
     if (forwardIntersection.isEmptyOrNull) return forwardIntersection;
     return forwardIntersection.isNullable ? nullable() : nonNullable();
   }
 
-  TypeMask union(dynamic other, ClosedWorld closedWorld) {
+  TypeMask union(dynamic other, JClosedWorld closedWorld) {
     if (this == other) {
       return this;
     } else if (equalsDisregardNull(other)) {
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
index ea12636..2b6ae66 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
@@ -14,7 +14,7 @@
 import '../../universe/world_builder.dart'
     show UniverseSelectorConstraints, SelectorConstraintsStrategy;
 import '../../util/util.dart';
-import '../../world.dart' show ClassQuery, ClosedWorld;
+import '../../world.dart' show ClassQuery, JClosedWorld;
 import '../type_graph_inferrer.dart' show TypeGraphInferrer;
 import 'constants.dart';
 
@@ -30,7 +30,7 @@
 class CommonMasks implements AbstractValueDomain {
   // TODO(sigmund): once we split out the backend common elements, depend
   // directly on those instead.
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
 
   CommonMasks(this._closedWorld);
 
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
index 357fc99..ee7d4b2 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
@@ -12,7 +12,7 @@
   Set<TypeMask> _masks;
 
   @override
-  bool applies(MemberEntity element, Selector selector, ClosedWorld world) {
+  bool applies(MemberEntity element, Selector selector, JClosedWorld world) {
     if (isAll) return true;
     if (_masks == null) return false;
     for (TypeMask mask in _masks) {
@@ -22,7 +22,7 @@
   }
 
   @override
-  bool needsNoSuchMethodHandling(Selector selector, ClosedWorld world) {
+  bool needsNoSuchMethodHandling(Selector selector, JClosedWorld world) {
     if (isAll) {
       TypeMask mask =
           new TypeMask.subclass(world.commonElements.objectClass, world);
@@ -63,7 +63,7 @@
   const TypeMaskStrategy();
 
   @override
-  AbstractValueDomain createDomain(ClosedWorld closedWorld) {
+  AbstractValueDomain createDomain(JClosedWorld closedWorld) {
     return new CommonMasks(closedWorld);
   }
 
@@ -82,8 +82,8 @@
   }
 
   @override
-  bool appliedUnnamed(
-      DynamicUse dynamicUse, MemberEntity member, covariant ClosedWorld world) {
+  bool appliedUnnamed(DynamicUse dynamicUse, MemberEntity member,
+      covariant JClosedWorld world) {
     Selector selector = dynamicUse.selector;
     TypeMask mask = dynamicUse.receiverConstraint;
     return selector.appliesUnnamed(member) &&
@@ -98,14 +98,14 @@
  */
 abstract class TypeMask implements AbstractValue {
   factory TypeMask(
-      ClassEntity base, int kind, bool isNullable, ClosedWorld closedWorld) {
+      ClassEntity base, int kind, bool isNullable, JClosedWorld closedWorld) {
     return new FlatTypeMask.normalized(
         base, (kind << 1) | (isNullable ? 1 : 0), closedWorld);
   }
 
   const factory TypeMask.empty() = FlatTypeMask.empty;
 
-  factory TypeMask.exact(ClassEntity base, ClosedWorld closedWorld) {
+  factory TypeMask.exact(ClassEntity base, JClosedWorld closedWorld) {
     assert(
         closedWorld.isInstantiated(base),
         failedAt(
@@ -115,12 +115,12 @@
     return new FlatTypeMask.exact(base);
   }
 
-  factory TypeMask.exactOrEmpty(ClassEntity base, ClosedWorld closedWorld) {
+  factory TypeMask.exactOrEmpty(ClassEntity base, JClosedWorld closedWorld) {
     if (closedWorld.isInstantiated(base)) return new FlatTypeMask.exact(base);
     return const TypeMask.empty();
   }
 
-  factory TypeMask.subclass(ClassEntity base, ClosedWorld closedWorld) {
+  factory TypeMask.subclass(ClassEntity base, JClosedWorld closedWorld) {
     assert(
         closedWorld.isInstantiated(base),
         failedAt(
@@ -137,7 +137,7 @@
     }
   }
 
-  factory TypeMask.subtype(ClassEntity base, ClosedWorld closedWorld) {
+  factory TypeMask.subtype(ClassEntity base, JClosedWorld closedWorld) {
     ClassEntity topmost = closedWorld.getLubOfInstantiatedSubtypes(base);
     if (topmost == null) {
       return new TypeMask.empty();
@@ -154,7 +154,7 @@
 
   const factory TypeMask.nonNullEmpty() = FlatTypeMask.nonNullEmpty;
 
-  factory TypeMask.nonNullExact(ClassEntity base, ClosedWorld closedWorld) {
+  factory TypeMask.nonNullExact(ClassEntity base, JClosedWorld closedWorld) {
     assert(
         closedWorld.isInstantiated(base),
         failedAt(
@@ -165,14 +165,14 @@
   }
 
   factory TypeMask.nonNullExactOrEmpty(
-      ClassEntity base, ClosedWorld closedWorld) {
+      ClassEntity base, JClosedWorld closedWorld) {
     if (closedWorld.isInstantiated(base)) {
       return new FlatTypeMask.nonNullExact(base);
     }
     return const TypeMask.nonNullEmpty();
   }
 
-  factory TypeMask.nonNullSubclass(ClassEntity base, ClosedWorld closedWorld) {
+  factory TypeMask.nonNullSubclass(ClassEntity base, JClosedWorld closedWorld) {
     assert(
         closedWorld.isInstantiated(base),
         failedAt(
@@ -189,7 +189,7 @@
     }
   }
 
-  factory TypeMask.nonNullSubtype(ClassEntity base, ClosedWorld closedWorld) {
+  factory TypeMask.nonNullSubtype(ClassEntity base, JClosedWorld closedWorld) {
     ClassEntity topmost = closedWorld.getLubOfInstantiatedSubtypes(base);
     if (topmost == null) {
       return new TypeMask.nonNullEmpty();
@@ -204,7 +204,7 @@
     }
   }
 
-  factory TypeMask.unionOf(Iterable<TypeMask> masks, ClosedWorld closedWorld) {
+  factory TypeMask.unionOf(Iterable<TypeMask> masks, JClosedWorld closedWorld) {
     return UnionTypeMask.unionOf(masks, closedWorld);
   }
 
@@ -226,14 +226,15 @@
    * subclasses exist. We also normalize exact to empty if the corresponding
    * baseclass was never instantiated.
    */
-  static bool assertIsNormalized(TypeMask mask, ClosedWorld closedWorld) {
+  static bool assertIsNormalized(TypeMask mask, JClosedWorld closedWorld) {
     String reason = getNotNormalizedReason(mask, closedWorld);
     assert(reason == null,
         failedAt(NO_LOCATION_SPANNABLE, '$mask is not normalized: $reason'));
     return true;
   }
 
-  static String getNotNormalizedReason(TypeMask mask, ClosedWorld closedWorld) {
+  static String getNotNormalizedReason(
+      TypeMask mask, JClosedWorld closedWorld) {
     mask = nonForwardingMask(mask);
     if (mask is FlatTypeMask) {
       if (mask.isEmptyOrNull) return null;
@@ -316,11 +317,11 @@
   /// Returns `true` if this mask holds encodes an exact value within a type.
   bool get isValue;
 
-  bool containsOnlyInt(ClosedWorld closedWorld);
-  bool containsOnlyDouble(ClosedWorld closedWorld);
-  bool containsOnlyNum(ClosedWorld closedWorld);
-  bool containsOnlyBool(ClosedWorld closedWorld);
-  bool containsOnlyString(ClosedWorld closedWorld);
+  bool containsOnlyInt(JClosedWorld closedWorld);
+  bool containsOnlyDouble(JClosedWorld closedWorld);
+  bool containsOnlyNum(JClosedWorld closedWorld);
+  bool containsOnlyBool(JClosedWorld closedWorld);
+  bool containsOnlyString(JClosedWorld closedWorld);
   bool containsOnly(ClassEntity cls);
 
   /**
@@ -337,7 +338,7 @@
    * Enable [UnionTypeMask.PERFORM_EXTRA_CONTAINS_CHECK] to be notified of
    * false negatives.
    */
-  bool isInMask(TypeMask other, ClosedWorld closedWorld);
+  bool isInMask(TypeMask other, JClosedWorld closedWorld);
 
   /**
    * If this returns `true`, [other] is guaranteed to be a subtype of this mask,
@@ -345,52 +346,53 @@
    * Enable [UnionTypeMask.PERFORM_EXTRA_CONTAINS_CHECK] to be notified of
    * false negatives.
    */
-  bool containsMask(TypeMask other, ClosedWorld closedWorld);
+  bool containsMask(TypeMask other, JClosedWorld closedWorld);
 
   /**
    * Returns whether this type mask is an instance of [cls].
    */
-  bool satisfies(ClassEntity cls, ClosedWorld closedWorld);
+  bool satisfies(ClassEntity cls, JClosedWorld closedWorld);
 
   /**
    * Returns whether or not this type mask contains the given class [cls].
    */
-  bool contains(ClassEntity cls, ClosedWorld closedWorld);
+  bool contains(ClassEntity cls, JClosedWorld closedWorld);
 
   /// Returns whether or not this type mask contains all types.
-  bool containsAll(ClosedWorld closedWorld);
+  bool containsAll(JClosedWorld closedWorld);
 
   /// Returns the [ClassEntity] if this type represents a single class,
   /// otherwise returns `null`.  This method is conservative.
-  ClassEntity singleClass(ClosedWorld closedWorld);
+  ClassEntity singleClass(JClosedWorld closedWorld);
 
   /**
    * Returns a type mask representing the union of [this] and [other].
    */
-  TypeMask union(TypeMask other, ClosedWorld closedWorld);
+  TypeMask union(TypeMask other, JClosedWorld closedWorld);
 
   /// Returns whether the intersection of this and [other] is empty.
-  bool isDisjoint(TypeMask other, ClosedWorld closedWorld);
+  bool isDisjoint(TypeMask other, JClosedWorld closedWorld);
 
   /**
    * Returns a type mask representing the intersection of [this] and [other].
    */
-  TypeMask intersection(TypeMask other, ClosedWorld closedWorld);
+  TypeMask intersection(TypeMask other, JClosedWorld closedWorld);
 
   /**
    * Returns whether [element] is a potential target when being
    * invoked on this type mask. [selector] is used to ensure library
    * privacy is taken into account.
    */
-  bool canHit(MemberEntity element, Selector selector, ClosedWorld closedWorld);
+  bool canHit(
+      MemberEntity element, Selector selector, JClosedWorld closedWorld);
 
   /// Returns whether this [TypeMask] applied to [selector] can hit a
   /// [noSuchMethod].
-  bool needsNoSuchMethodHandling(Selector selector, ClosedWorld world);
+  bool needsNoSuchMethodHandling(Selector selector, JClosedWorld world);
 
   /**
    * Returns the [element] that is known to always be hit at runtime
    * on this mask. Returns null if there is none.
    */
-  MemberEntity locateSingleMember(Selector selector, ClosedWorld closedWorld);
+  MemberEntity locateSingleMember(Selector selector, JClosedWorld closedWorld);
 }
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
index 178f878..6121c08 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
@@ -19,7 +19,7 @@
     assert(disjointMasks.every((TypeMask mask) => !mask.isUnion));
   }
 
-  static TypeMask unionOf(Iterable<TypeMask> masks, ClosedWorld closedWorld) {
+  static TypeMask unionOf(Iterable<TypeMask> masks, JClosedWorld closedWorld) {
     assert(
         masks.every((mask) => TypeMask.assertIsNormalized(mask, closedWorld)));
     List<FlatTypeMask> disjoint = <FlatTypeMask>[];
@@ -35,7 +35,7 @@
   }
 
   static void unionOfHelper(Iterable<TypeMask> masks,
-      List<FlatTypeMask> disjoint, ClosedWorld closedWorld) {
+      List<FlatTypeMask> disjoint, JClosedWorld closedWorld) {
     // TODO(johnniwinther): Impose an order on the mask to ensure subclass masks
     // are preferred to subtype masks.
     for (TypeMask mask in masks) {
@@ -87,7 +87,7 @@
     }
   }
 
-  static TypeMask flatten(List<FlatTypeMask> masks, ClosedWorld closedWorld) {
+  static TypeMask flatten(List<FlatTypeMask> masks, JClosedWorld closedWorld) {
     // TODO(johnniwinther): Move this computation to [ClosedWorld] and use the
     // class set structures.
     assert(masks.length > 1);
@@ -137,7 +137,7 @@
     return new TypeMask(bestElement, bestKind, isNullable, closedWorld);
   }
 
-  TypeMask union(dynamic other, ClosedWorld closedWorld) {
+  TypeMask union(dynamic other, JClosedWorld closedWorld) {
     other = TypeMask.nonForwardingMask(other);
     if (!other.isUnion && disjointMasks.contains(other)) return this;
 
@@ -151,7 +151,7 @@
     return new TypeMask.unionOf(newList, closedWorld);
   }
 
-  TypeMask intersection(dynamic other, ClosedWorld closedWorld) {
+  TypeMask intersection(dynamic other, JClosedWorld closedWorld) {
     other = TypeMask.nonForwardingMask(other);
     if (!other.isUnion && disjointMasks.contains(other)) return other;
     if (other.isUnion && this == other) return this;
@@ -173,7 +173,7 @@
     return new TypeMask.unionOf(intersections, closedWorld);
   }
 
-  bool isDisjoint(TypeMask other, ClosedWorld closedWorld) {
+  bool isDisjoint(TypeMask other, JClosedWorld closedWorld) {
     for (var current in disjointMasks) {
       if (!current.isDisjoint(other, closedWorld)) return false;
     }
@@ -216,7 +216,7 @@
    * - the cheap test matching against individual members of [disjointMasks]
    *   must have failed.
    */
-  bool slowContainsCheck(TypeMask other, ClosedWorld closedWorld) {
+  bool slowContainsCheck(TypeMask other, JClosedWorld closedWorld) {
     // Unions should never make it here.
     assert(!other.isUnion);
     // Ensure the cheap test fails.
@@ -245,7 +245,7 @@
     return members.every((ClassEntity cls) => this.contains(cls, closedWorld));
   }
 
-  bool isInMask(TypeMask other, ClosedWorld closedWorld) {
+  bool isInMask(TypeMask other, JClosedWorld closedWorld) {
     other = TypeMask.nonForwardingMask(other);
     if (isNullable && !other.isNullable) return false;
     if (other.isUnion) {
@@ -273,7 +273,7 @@
     return disjointMasks.every((mask) => mask.isInMask(other, closedWorld));
   }
 
-  bool containsMask(TypeMask other, ClosedWorld closedWorld) {
+  bool containsMask(TypeMask other, JClosedWorld closedWorld) {
     other = TypeMask.nonForwardingMask(other);
     if (other.isNullable && !isNullable) return false;
     if (other.isUnion) return other.isInMask(this, closedWorld);
@@ -288,25 +288,25 @@
     return contained;
   }
 
-  bool containsOnlyInt(ClosedWorld closedWorld) {
+  bool containsOnlyInt(JClosedWorld closedWorld) {
     return disjointMasks.every((mask) => mask.containsOnlyInt(closedWorld));
   }
 
-  bool containsOnlyDouble(ClosedWorld closedWorld) {
+  bool containsOnlyDouble(JClosedWorld closedWorld) {
     return disjointMasks.every((mask) => mask.containsOnlyDouble(closedWorld));
   }
 
-  bool containsOnlyNum(ClosedWorld closedWorld) {
+  bool containsOnlyNum(JClosedWorld closedWorld) {
     return disjointMasks.every((mask) {
       return mask.containsOnlyNum(closedWorld);
     });
   }
 
-  bool containsOnlyBool(ClosedWorld closedWorld) {
+  bool containsOnlyBool(JClosedWorld closedWorld) {
     return disjointMasks.every((mask) => mask.containsOnlyBool(closedWorld));
   }
 
-  bool containsOnlyString(ClosedWorld closedWorld) {
+  bool containsOnlyString(JClosedWorld closedWorld) {
     return disjointMasks.every((mask) => mask.containsOnlyString(closedWorld));
   }
 
@@ -314,31 +314,31 @@
     return disjointMasks.every((mask) => mask.containsOnly(element));
   }
 
-  bool satisfies(ClassEntity cls, ClosedWorld closedWorld) {
+  bool satisfies(ClassEntity cls, JClosedWorld closedWorld) {
     return disjointMasks.every((mask) => mask.satisfies(cls, closedWorld));
   }
 
-  bool contains(ClassEntity cls, ClosedWorld closedWorld) {
+  bool contains(ClassEntity cls, JClosedWorld closedWorld) {
     return disjointMasks.any((e) => e.contains(cls, closedWorld));
   }
 
-  bool containsAll(ClosedWorld closedWorld) {
+  bool containsAll(JClosedWorld closedWorld) {
     return disjointMasks.any((mask) => mask.containsAll(closedWorld));
   }
 
-  ClassEntity singleClass(ClosedWorld closedWorld) => null;
+  ClassEntity singleClass(JClosedWorld closedWorld) => null;
 
-  bool needsNoSuchMethodHandling(Selector selector, ClosedWorld closedWorld) {
+  bool needsNoSuchMethodHandling(Selector selector, JClosedWorld closedWorld) {
     return disjointMasks
         .any((e) => e.needsNoSuchMethodHandling(selector, closedWorld));
   }
 
   bool canHit(
-      MemberEntity element, Selector selector, ClosedWorld closedWorld) {
+      MemberEntity element, Selector selector, JClosedWorld closedWorld) {
     return disjointMasks.any((e) => e.canHit(element, selector, closedWorld));
   }
 
-  MemberEntity locateSingleMember(Selector selector, ClosedWorld closedWorld) {
+  MemberEntity locateSingleMember(Selector selector, JClosedWorld closedWorld) {
     MemberEntity candidate;
     for (FlatTypeMask mask in disjointMasks) {
       MemberEntity current = mask.locateSingleMember(selector, closedWorld);
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
index 8d4cc44..ebeda52 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
@@ -27,7 +27,7 @@
     return super.equalsDisregardNull(other) && value == other.value;
   }
 
-  TypeMask intersection(TypeMask other, ClosedWorld closedWorld) {
+  TypeMask intersection(TypeMask other, JClosedWorld closedWorld) {
     TypeMask forwardIntersection = forwardTo.intersection(other, closedWorld);
     if (forwardIntersection.isEmptyOrNull) return forwardIntersection;
     return forwardIntersection.isNullable ? nullable() : nonNullable();
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index 8f366c0..c06c5f0 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -46,7 +46,7 @@
 import '../universe/world_impact.dart'
     show ImpactStrategy, ImpactUseCase, WorldImpact, WorldImpactVisitor;
 import '../util/util.dart';
-import '../world.dart' show ClosedWorld, ClosedWorldRefiner;
+import '../world.dart' show JClosedWorld;
 import 'annotations.dart' as optimizerHints;
 import 'backend_impact.dart';
 import 'backend_usage.dart';
@@ -70,7 +70,7 @@
   void onCodegenStart();
 
   /// Generates JavaScript code for `work.element`.
-  jsAst.Fun compile(CodegenWorkItem work, ClosedWorld closedWorld);
+  jsAst.Fun compile(CodegenWorkItem work, JClosedWorld closedWorld);
 
   Iterable get tasks;
 }
@@ -494,7 +494,7 @@
   }
 
   Namer determineNamer(
-      ClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder) {
+      JClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder) {
     return compiler.options.enableMinification
         ? compiler.options.useFrequencyNamer
             ? new FrequencyBasedNamer(closedWorld, codegenWorldBuilder)
@@ -546,8 +546,8 @@
   }
 
   /// Called when the closed world from resolution has been computed.
-  void onResolutionClosedWorld(ClosedWorldRefiner closedWorldRefiner) {
-    processAnnotations(closedWorldRefiner);
+  void onResolutionClosedWorld(JClosedWorld closedWorld) {
+    processAnnotations(closedWorld);
   }
 
   void onDeferredLoadComplete(OutputUnitData data) {
@@ -635,7 +635,7 @@
 
   /// Creates an [Enqueuer] for code generation specific to this backend.
   CodegenEnqueuer createCodegenEnqueuer(
-      CompilerTask task, Compiler compiler, ClosedWorld closedWorld) {
+      CompilerTask task, Compiler compiler, JClosedWorld closedWorld) {
     ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
     CommonElements commonElements = closedWorld.commonElements;
     BackendImpacts impacts =
@@ -675,7 +675,7 @@
   static bool cacheCodegenImpactForTesting = false;
   Map<MemberEntity, WorldImpact> codegenImpactsForTesting;
 
-  WorldImpact codegen(CodegenWorkItem work, ClosedWorld closedWorld) {
+  WorldImpact codegen(CodegenWorkItem work, JClosedWorld closedWorld) {
     MemberEntity element = work.element;
     if (compiler.elementHasCompileTimeError(element)) {
       DiagnosticMessage message =
@@ -730,7 +730,7 @@
   }
 
   /// Generates the output and returns the total size of the generated code.
-  int assembleProgram(ClosedWorld closedWorld) {
+  int assembleProgram(JClosedWorld closedWorld) {
     int programSize = emitter.assembleProgram(namer, closedWorld);
     closedWorld.noSuchMethodData.emitDiagnostic(reporter);
     return programSize;
@@ -785,7 +785,7 @@
 
   /// Called when the compiler starts running the codegen enqueuer. The
   /// [WorldImpact] of enabled backend features is returned.
-  WorldImpact onCodegenStart(ClosedWorld closedWorld,
+  WorldImpact onCodegenStart(JClosedWorld closedWorld,
       CodegenWorldBuilder codegenWorldBuilder, Sorter sorter) {
     functionCompiler.onCodegenStart();
     _oneShotInterceptorData = new OneShotInterceptorData(
@@ -842,23 +842,20 @@
   /// Process backend specific annotations.
   // TODO(johnniwinther): Merge this with [AnnotationProcessor] and use
   // [ElementEnvironment.getMemberMetadata] in [AnnotationProcessor].
-  void processAnnotations(ClosedWorldRefiner closedWorldRefiner) {
-    ClosedWorld closedWorld = closedWorldRefiner.closedWorld;
+  void processAnnotations(JClosedWorld closedWorld) {
     // These methods are overwritten with generated versions.
     inlineCache.markAsNonInlinable(
         closedWorld.commonElements.getInterceptorMethod,
         insideLoop: true);
     for (MemberEntity entity in closedWorld.processedMembers) {
-      _processMemberAnnotations(closedWorld.elementEnvironment,
-          closedWorld.commonElements, entity, closedWorldRefiner);
+      _processMemberAnnotations(closedWorld, entity);
     }
   }
 
   void _processMemberAnnotations(
-      ElementEnvironment elementEnvironment,
-      CommonElements commonElements,
-      MemberEntity element,
-      ClosedWorldRefiner closedWorldRefiner) {
+      JClosedWorld closedWorld, MemberEntity element) {
+    ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
+    CommonElements commonElements = closedWorld.commonElements;
     bool hasNoInline = false;
     bool hasForceInline = false;
 
@@ -930,14 +927,14 @@
           reporter.reportHintMessage(
               method, MessageKind.GENERIC, {'text': "Cannot throw"});
         }
-        closedWorldRefiner.registerCannotThrow(method);
+        closedWorld.registerCannotThrow(method);
       } else if (cls == commonElements.noSideEffectsClass) {
         hasNoSideEffects = true;
         if (VERBOSE_OPTIMIZER_HINTS) {
           reporter.reportHintMessage(
               method, MessageKind.GENERIC, {'text': "Has no side effects"});
         }
-        closedWorldRefiner.registerSideEffectsFree(method);
+        closedWorld.registerSideEffectsFree(method);
       }
     }
     if (hasForceInline && hasNoInline) {
diff --git a/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart b/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart
index cbb30a5..f7e8984 100644
--- a/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart
+++ b/pkg/compiler/lib/src/js_backend/field_naming_mixin.dart
@@ -116,7 +116,7 @@
   }
 
   factory _FieldNamingScope.forClass(
-      ClassEntity cls, ClosedWorld world, _FieldNamingRegistry registry) {
+      ClassEntity cls, JClosedWorld world, _FieldNamingRegistry registry) {
     _FieldNamingScope result = registry.scopes[cls];
     if (result != null) return result;
 
diff --git a/pkg/compiler/lib/src/js_backend/frequency_namer.dart b/pkg/compiler/lib/src/js_backend/frequency_namer.dart
index 9ce989c..343d440 100644
--- a/pkg/compiler/lib/src/js_backend/frequency_namer.dart
+++ b/pkg/compiler/lib/src/js_backend/frequency_namer.dart
@@ -30,7 +30,7 @@
       _staticsPropertyName ??= getFreshName(instanceScope, 'static');
 
   FrequencyBasedNamer(
-      ClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder)
+      JClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder)
       : super(closedWorld, codegenWorldBuilder) {
     fieldRegistry = new _FieldNamingRegistry(this);
   }
diff --git a/pkg/compiler/lib/src/js_backend/interceptor_data.dart b/pkg/compiler/lib/src/js_backend/interceptor_data.dart
index 925d846..3ef09f3 100644
--- a/pkg/compiler/lib/src/js_backend/interceptor_data.dart
+++ b/pkg/compiler/lib/src/js_backend/interceptor_data.dart
@@ -11,7 +11,7 @@
 import '../js/js.dart' as jsAst;
 import '../types/abstract_value_domain.dart';
 import '../universe/selector.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'namer.dart';
 import 'native_data.dart';
 
@@ -25,7 +25,7 @@
   bool isInterceptedName(String name);
   bool isInterceptedSelector(Selector selector);
   bool isInterceptedMixinSelector(
-      Selector selector, AbstractValue mask, ClosedWorld closedWorld);
+      Selector selector, AbstractValue mask, JClosedWorld closedWorld);
   Iterable<ClassEntity> get interceptedClasses;
   bool isMixedIntoInterceptedClass(ClassEntity element);
 
@@ -33,12 +33,12 @@
   ///
   /// Returns an empty set if there is no class. Do not modify the returned set.
   Set<ClassEntity> getInterceptedClassesOn(
-      String name, ClosedWorld closedWorld);
+      String name, JClosedWorld closedWorld);
 
   /// Whether the compiler can use the native `instanceof` check to test for
   /// instances of [type]. This is true for types that are not used as mixins or
   /// interfaces.
-  bool mayGenerateInstanceofCheck(DartType type, ClosedWorld closedWorld);
+  bool mayGenerateInstanceofCheck(DartType type, JClosedWorld closedWorld);
 }
 
 abstract class InterceptorDataBuilder {
@@ -117,7 +117,7 @@
   /// into an intercepted class.  These selectors are not eligible for the
   /// 'dummy explicit receiver' optimization.
   bool isInterceptedMixinSelector(
-      Selector selector, AbstractValue mask, ClosedWorld closedWorld) {
+      Selector selector, AbstractValue mask, JClosedWorld closedWorld) {
     Set<MemberEntity> elements =
         _interceptedMixinElements.putIfAbsent(selector.name, () {
       Set<MemberEntity> elements = interceptedMembers[selector.name];
@@ -153,7 +153,7 @@
   ///
   /// Returns an empty set if there is no class. Do not modify the returned set.
   Set<ClassEntity> getInterceptedClassesOn(
-      String name, ClosedWorld closedWorld) {
+      String name, JClosedWorld closedWorld) {
     Set<MemberEntity> intercepted = interceptedMembers[name];
     if (intercepted == null) return _noClasses;
     return _interceptedClassesCache.putIfAbsent(name, () {
@@ -178,7 +178,7 @@
   }
 
   Set<ClassEntity> nativeSubclassesOfMixin(
-      ClassEntity mixin, ClosedWorld closedWorld) {
+      ClassEntity mixin, JClosedWorld closedWorld) {
     Iterable<ClassEntity> uses = closedWorld.mixinUsesOf(mixin);
     Set<ClassEntity> result = null;
     for (ClassEntity use in uses) {
@@ -203,7 +203,7 @@
   bool isMixedIntoInterceptedClass(ClassEntity element) =>
       classesMixedIntoInterceptedClasses.contains(element);
 
-  bool mayGenerateInstanceofCheck(DartType type, ClosedWorld closedWorld) {
+  bool mayGenerateInstanceofCheck(DartType type, JClosedWorld closedWorld) {
     // We can use an instanceof check for raw types that have no subclass that
     // is mixed-in or in an implements clause.
 
@@ -312,7 +312,7 @@
       _specializedGetInterceptors[name];
 
   jsAst.Name registerOneShotInterceptor(
-      Selector selector, Namer namer, ClosedWorld closedWorld) {
+      Selector selector, Namer namer, JClosedWorld closedWorld) {
     Set<ClassEntity> classes =
         _interceptorData.getInterceptedClassesOn(selector.name, closedWorld);
     jsAst.Name name = namer.nameForGetOneShotInterceptor(selector, classes);
diff --git a/pkg/compiler/lib/src/js_backend/minify_namer.dart b/pkg/compiler/lib/src/js_backend/minify_namer.dart
index 723bca7..49078b9 100644
--- a/pkg/compiler/lib/src/js_backend/minify_namer.dart
+++ b/pkg/compiler/lib/src/js_backend/minify_namer.dart
@@ -12,7 +12,7 @@
         _MinifiedFieldNamer,
         _MinifyConstructorBodyNamer,
         _MinifiedOneShotInterceptorNamer {
-  MinifyNamer(ClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder)
+  MinifyNamer(JClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder)
       : super(closedWorld, codegenWorldBuilder) {
     reserveBackendNames();
     fieldRegistry = new _FieldNamingRegistry(this);
diff --git a/pkg/compiler/lib/src/js_backend/namer.dart b/pkg/compiler/lib/src/js_backend/namer.dart
index ee47e3e..0b4d5db 100644
--- a/pkg/compiler/lib/src/js_backend/namer.dart
+++ b/pkg/compiler/lib/src/js_backend/namer.dart
@@ -27,7 +27,7 @@
 import '../universe/selector.dart' show Selector, SelectorKind;
 import '../universe/world_builder.dart' show CodegenWorldBuilder;
 import '../util/util.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'backend.dart';
 import 'constant_system_javascript.dart';
 import 'native_data.dart';
@@ -492,7 +492,7 @@
   static final RegExp IDENTIFIER = new RegExp(r'^[A-Za-z_$][A-Za-z0-9_$]*$');
   static final RegExp NON_IDENTIFIER_CHAR = new RegExp(r'[^A-Za-z_0-9$]');
 
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final CodegenWorldBuilder _codegenWorldBuilder;
 
   RuntimeTypesEncoder _rtiEncoder;
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types.dart b/pkg/compiler/lib/src/js_backend/runtime_types.dart
index 886651f..d637cb1 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types.dart
@@ -15,7 +15,7 @@
 import '../options.dart';
 import '../universe/selector.dart';
 import '../universe/world_builder.dart';
-import '../world.dart' show ClosedWorld, KClosedWorld;
+import '../world.dart' show JClosedWorld, KClosedWorld;
 import 'backend_usage.dart';
 import 'namer.dart';
 import 'native_data.dart';
@@ -202,7 +202,7 @@
 }
 
 class TrivialRuntimeTypesChecksBuilder implements RuntimeTypesChecksBuilder {
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final TrivialRuntimeTypesSubstitutions _substitutions;
   bool rtiChecksBuilderClosed = false;
 
@@ -267,7 +267,7 @@
 
 abstract class RuntimeTypesSubstitutionsMixin
     implements RuntimeTypesSubstitutions {
-  ClosedWorld get _closedWorld;
+  JClosedWorld get _closedWorld;
   TypeChecks get _requiredChecks;
 
   ElementEnvironment get _elementEnvironment => _closedWorld.elementEnvironment;
@@ -585,7 +585,7 @@
 }
 
 class TrivialRuntimeTypesSubstitutions extends RuntimeTypesSubstitutionsMixin {
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   TypeChecks _requiredChecks;
 
   TrivialRuntimeTypesSubstitutions(this._closedWorld);
@@ -1650,7 +1650,7 @@
 class RuntimeTypesImpl extends _RuntimeTypesBase
     with RuntimeTypesSubstitutionsMixin
     implements RuntimeTypesChecksBuilder {
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
 
   // The set of type arguments tested against type variable bounds.
   final Set<DartType> checkedTypeArguments = new Set<DartType>();
diff --git a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
index 3d74a3e..93f1a0a 100644
--- a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
@@ -15,7 +15,7 @@
 import '../universe/selector.dart' show Selector;
 import '../universe/world_builder.dart'
     show CodegenWorldBuilder, SelectorConstraints;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 import 'code_emitter_task.dart';
 import 'model.dart';
@@ -23,7 +23,7 @@
 class ClassStubGenerator {
   final Namer _namer;
   final CodegenWorldBuilder _worldBuilder;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final bool enableMinification;
   final Emitter _emitter;
   final CommonElements _commonElements;
diff --git a/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart b/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
index 00bfaf7..b8d5263 100644
--- a/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
+++ b/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
@@ -15,7 +15,7 @@
 import '../js/js.dart' as jsAst;
 import '../js_backend/js_backend.dart' show JavaScriptBackend, Namer;
 import '../universe/world_builder.dart' show CodegenWorldBuilder;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'full_emitter/emitter.dart' as full_js_emitter;
 import 'program_builder/program_builder.dart';
 import 'startup_emitter/emitter.dart' as startup_js_emitter;
@@ -155,7 +155,7 @@
   }
 
   /// Creates the [Emitter] for this task.
-  void createEmitter(Namer namer, ClosedWorld closedWorld,
+  void createEmitter(Namer namer, JClosedWorld closedWorld,
       CodegenWorldBuilder codegenWorldBuilder, Sorter sorter) {
     measure(() {
       _nativeEmitter = new NativeEmitter(this, closedWorld, codegenWorldBuilder,
@@ -169,7 +169,7 @@
     });
   }
 
-  int assembleProgram(Namer namer, ClosedWorld closedWorld) {
+  int assembleProgram(Namer namer, JClosedWorld closedWorld) {
     return measure(() {
       _finalizeRti();
       ProgramBuilder programBuilder = new ProgramBuilder(
@@ -216,7 +216,7 @@
 
   /// Create the [Emitter] for the emitter [task] that uses the given [namer].
   Emitter createEmitter(CodeEmitterTask task, Namer namer,
-      ClosedWorld closedWorld, Sorter sorter);
+      JClosedWorld closedWorld, Sorter sorter);
 }
 
 abstract class Emitter {
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
index 3a54cf6..a888d94 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
@@ -12,13 +12,13 @@
 import '../../js/js.dart' as jsAst;
 import '../../js/js.dart' show js;
 import '../../js_backend/js_backend.dart' show CompoundName, Namer;
-import '../../world.dart' show ClosedWorld;
+import '../../world.dart' show JClosedWorld;
 import '../js_emitter.dart' hide Emitter, EmitterFactory;
 import '../model.dart';
 import 'emitter.dart';
 
 class ClassEmitter extends CodeEmitterHelper {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
 
   ClassEmitter(this.closedWorld);
 
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
index bdc35cd..34a538d 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
@@ -29,7 +29,7 @@
 import '../../universe/call_structure.dart' show CallStructure;
 import '../../universe/world_builder.dart' show CodegenWorldBuilder;
 import '../../util/uri_extras.dart' show relativize;
-import '../../world.dart' show ClosedWorld;
+import '../../world.dart' show JClosedWorld;
 import '../constant_ordering.dart' show ConstantOrdering;
 import '../headers.dart';
 import '../js_emitter.dart' hide Emitter, EmitterFactory;
@@ -65,7 +65,7 @@
 
   @override
   Emitter createEmitter(CodeEmitterTask task, Namer namer,
-      ClosedWorld closedWorld, Sorter sorter) {
+      JClosedWorld closedWorld, Sorter sorter) {
     return new Emitter(
         task.compiler, namer, closedWorld, generateSourceMap, task, sorter);
   }
@@ -74,7 +74,7 @@
 class Emitter extends js_emitter.EmitterBase {
   final Compiler compiler;
   final CodeEmitterTask task;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
 
   // The following fields will be set to copies of the program-builder's
   // collector.
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart
index dab39d9..dc2f3c3 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/interceptor_emitter.dart
@@ -8,13 +8,13 @@
 import '../../elements/entities.dart';
 import '../../js/js.dart' as jsAst;
 import '../../js/js.dart' show js;
-import '../../world.dart' show ClosedWorld;
+import '../../world.dart' show JClosedWorld;
 import '../js_emitter.dart' hide Emitter, EmitterFactory;
 import '../model.dart';
 import 'emitter.dart';
 
 class InterceptorEmitter extends CodeEmitterHelper {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final Set<jsAst.Name> interceptorInvocationNames = new Set<jsAst.Name>();
 
   InterceptorEmitter(this.closedWorld);
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart
index 48af9c9..5e15f2a 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/nsm_emitter.dart
@@ -11,13 +11,13 @@
 import '../../universe/selector.dart' show Selector;
 import 'package:front_end/src/fasta/scanner/characters.dart'
     show $$, $A, $HASH, $Z, $a, $z;
-import '../../world.dart' show ClosedWorld;
+import '../../world.dart' show JClosedWorld;
 import '../js_emitter.dart' hide Emitter, EmitterFactory;
 import '../model.dart';
 import 'emitter.dart';
 
 class NsmEmitter extends CodeEmitterHelper {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final List<Selector> trivialNsmHandlers = <Selector>[];
 
   NsmEmitter(this.closedWorld);
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart
index f5a6d47..b5492b7 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/setup_program_builder.dart
@@ -32,7 +32,7 @@
     JavaScriptBackend backend,
     Namer namer,
     Emitter emitter,
-    ClosedWorld closedWorld) {
+    JClosedWorld closedWorld) {
   jsAst.Expression typeInformationAccess =
       emitter.generateEmbeddedGlobalAccess(embeddedNames.TYPE_INFORMATION);
   jsAst.Expression staticsAccess =
diff --git a/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart
index 477ced0..2804e12 100644
--- a/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart
@@ -15,7 +15,7 @@
 import '../universe/selector.dart' show Selector;
 import '../universe/world_builder.dart'
     show CodegenWorldBuilder, SelectorConstraints;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 import 'model.dart';
 
@@ -27,7 +27,7 @@
   final CommonElements _commonElements;
   final Namer _namer;
   final CodegenWorldBuilder _codegenWorldBuilder;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   // ignore: UNUSED_FIELD
   final SourceInformationStrategy _sourceInformationStrategy;
 
diff --git a/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
index b589950..f5d7ab1 100644
--- a/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart
@@ -21,7 +21,7 @@
 import '../options.dart';
 import '../universe/selector.dart' show Selector;
 import '../universe/world_builder.dart' show CodegenWorldBuilder;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 import 'code_emitter_task.dart' show CodeEmitterTask, Emitter;
 
@@ -34,7 +34,7 @@
   final OneShotInterceptorData _oneShotInterceptorData;
   final CustomElementsCodegenAnalysis _customElementsCodegenAnalysis;
   final CodegenWorldBuilder _codegenWorldBuilder;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
 
   InterceptorStubGenerator(
       this._options,
diff --git a/pkg/compiler/lib/src/js_emitter/native_emitter.dart b/pkg/compiler/lib/src/js_emitter/native_emitter.dart
index 12110ab..b931c3b 100644
--- a/pkg/compiler/lib/src/js_emitter/native_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/native_emitter.dart
@@ -14,14 +14,14 @@
 import '../js_backend/native_data.dart';
 import '../native/enqueue.dart' show NativeCodegenEnqueuer;
 import '../universe/world_builder.dart' show CodegenWorldBuilder;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 import 'code_emitter_task.dart' show CodeEmitterTask;
 import 'model.dart';
 
 class NativeEmitter {
   final CodeEmitterTask _emitterTask;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final CodegenWorldBuilder _worldBuilder;
   final NativeCodegenEnqueuer _nativeCodegenEnqueuer;
 
diff --git a/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
index 187729f..4b173c6 100644
--- a/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart
@@ -18,7 +18,7 @@
 import '../universe/selector.dart' show Selector;
 import '../universe/world_builder.dart'
     show CodegenWorldBuilder, SelectorConstraints;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 import 'model.dart';
 
@@ -33,7 +33,7 @@
   final NativeData _nativeData;
   final InterceptorData _interceptorData;
   final CodegenWorldBuilder _codegenWorldBuilder;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final SourceInformationStrategy _sourceInformationStrategy;
 
   ParameterStubGenerator(
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
index 615835e..4b4b1c4 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart
@@ -23,7 +23,7 @@
   final NativeData _nativeData;
   final InterceptorData _interceptorData;
   final OneShotInterceptorData _oneShotInterceptorData;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final Set<ClassEntity> _rtiNeededClasses;
   final Map<MemberEntity, js.Expression> _generatedCode;
   final Sorter _sorter;
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart b/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
index 7415a08..440fecd 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
@@ -32,7 +32,7 @@
   final CodegenWorldBuilder _codegenWorldBuilder;
   final NativeData _nativeData;
   final Namer _namer;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
 
   FieldVisitor(
       this._options,
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
index 905c3bd..22ca61f 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
@@ -36,7 +36,7 @@
 import '../../universe/selector.dart' show Selector;
 import '../../universe/world_builder.dart'
     show CodegenWorldBuilder, SelectorConstraints;
-import '../../world.dart' show ClosedWorld;
+import '../../world.dart' show JClosedWorld;
 import '../js_emitter.dart'
     show
         ClassStubGenerator,
@@ -82,7 +82,7 @@
   final Map<MemberEntity, js.Expression> _generatedCode;
   final Namer _namer;
   final CodeEmitterTask _task;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final SourceInformationStrategy _sourceInformationStrategy;
 
   /// The [Sorter] used for ordering elements in the generated JavaScript.
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart
index 29fb797..0e3e5a4 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart
@@ -14,7 +14,7 @@
 import '../../elements/entities.dart';
 import '../../js/js.dart' as js;
 import '../../js_backend/js_backend.dart' show JavaScriptBackend, Namer;
-import '../../world.dart' show ClosedWorld;
+import '../../world.dart' show JClosedWorld;
 import '../js_emitter.dart' show CodeEmitterTask, NativeEmitter;
 import '../js_emitter.dart' as emitterTask show EmitterBase, EmitterFactory;
 import '../model.dart';
@@ -32,7 +32,7 @@
 
   @override
   Emitter createEmitter(CodeEmitterTask task, Namer namer,
-      ClosedWorld closedWorld, Sorter sorter) {
+      JClosedWorld closedWorld, Sorter sorter) {
     return new Emitter(task.compiler, namer, task.nativeEmitter, closedWorld,
         sorter, task, generateSourceMap);
   }
@@ -40,7 +40,7 @@
 
 class Emitter extends emitterTask.EmitterBase {
   final Compiler _compiler;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final Namer namer;
   final ModelEmitter _emitter;
 
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
index 7f655d1..72ea813 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
@@ -534,7 +534,7 @@
   final JavaScriptBackend backend;
   final ConstantEmitter constantEmitter;
   final ModelEmitter modelEmitter;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
 
   FragmentEmitter(this.compiler, this.namer, this.backend, this.constantEmitter,
       this.modelEmitter, this._closedWorld);
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
index 9c3beac..f57321e 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart
@@ -57,7 +57,7 @@
   ConstantEmitter constantEmitter;
   final NativeEmitter nativeEmitter;
   final bool shouldGenerateSourceMap;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final ConstantOrdering _constantOrdering;
 
   // The full code that is written to each hunk part-file.
diff --git a/pkg/compiler/lib/src/js_model/closure.dart b/pkg/compiler/lib/src/js_model/closure.dart
index 9334b52..b1c32aa 100644
--- a/pkg/compiler/lib/src/js_model/closure.dart
+++ b/pkg/compiler/lib/src/js_model/closure.dart
@@ -17,7 +17,6 @@
 import '../options.dart';
 import '../ssa/type_builder.dart';
 import '../universe/selector.dart';
-import '../world.dart';
 import 'elements.dart';
 import 'closure_visitors.dart';
 import 'locals.dart';
@@ -99,16 +98,6 @@
       Measurer measurer, this._elementMap, this._globalLocalsMap, this._options)
       : super(measurer);
 
-  /// The combined steps of generating our intermediate representation of
-  /// closures that need to be rewritten and generating the element model.
-  /// Ultimately these two steps will be split apart with the second step
-  /// happening later in compilation just before codegen. These steps are
-  /// combined here currently to provide a consistent interface to the rest of
-  /// the compiler until we are ready to separate these phases.
-  @override
-  void convertClosures(Iterable<MemberEntity> processedEntities,
-      ClosedWorldRefiner closedWorldRefiner) {}
-
   void _updateScopeBasedOnRtiNeed(KernelScopeInfo scope, ClosureRtiNeed rtiNeed,
       MemberEntity outermostEntity) {
     bool includeForRti(Set<VariableUse> useSet) {
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index cd8b00f..fac95b8 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -69,7 +69,7 @@
   GlobalLocalsMap get globalLocalsMapForTesting => _globalLocalsMap;
 
   @override
-  ClosedWorldRefiner createClosedWorldRefiner(KClosedWorld closedWorld) {
+  JClosedWorld createJClosedWorld(KClosedWorld closedWorld) {
     KernelFrontEndStrategy strategy = _compiler.frontendStrategy;
     _elementMap = new JsKernelToElementMap(
         _compiler.reporter,
@@ -191,14 +191,14 @@
   }
 
   @override
-  WorkItemBuilder createCodegenWorkItemBuilder(ClosedWorld closedWorld) {
+  WorkItemBuilder createCodegenWorkItemBuilder(JClosedWorld closedWorld) {
     return new KernelCodegenWorkItemBuilder(_compiler.backend, closedWorld);
   }
 
   @override
   CodegenWorldBuilder createCodegenWorldBuilder(
       NativeBasicData nativeBasicData,
-      ClosedWorld closedWorld,
+      JClosedWorld closedWorld,
       SelectorConstraintsStrategy selectorConstraintsStrategy) {
     return new KernelCodegenWorldBuilder(
         elementMap,
@@ -215,10 +215,10 @@
   }
 
   @override
-  TypesInferrer createTypesInferrer(ClosedWorldRefiner closedWorldRefiner,
+  TypesInferrer createTypesInferrer(JClosedWorld closedWorld,
       {bool disableTypeInference: false}) {
     return new KernelTypeGraphInferrer(_compiler, _elementMap, _globalLocalsMap,
-        _closureDataLookup, closedWorldRefiner.closedWorld, closedWorldRefiner,
+        _closureDataLookup, closedWorld,
         disableTypeInference: disableTypeInference);
   }
 }
@@ -651,9 +651,6 @@
   }
 
   @override
-  ClosedWorld get closedWorld => this;
-
-  @override
   AbstractValueDomain get abstractValueDomain {
     return _abstractValueDomain;
   }
diff --git a/pkg/compiler/lib/src/kernel/element_map.dart b/pkg/compiler/lib/src/kernel/element_map.dart
index 7c90a63..a293039 100644
--- a/pkg/compiler/lib/src/kernel/element_map.dart
+++ b/pkg/compiler/lib/src/kernel/element_map.dart
@@ -418,7 +418,7 @@
 
   /// Returns the returned type annotation in the [nativeBehavior].
   AbstractValue typeFromNativeBehavior(
-      native.NativeBehavior nativeBehavior, ClosedWorld closedWorld);
+      native.NativeBehavior nativeBehavior, JClosedWorld closedWorld);
 }
 
 /// Map from kernel IR nodes to local entities.
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 0029cf4..f6812f4 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -2130,7 +2130,7 @@
   /// of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassHierarchyNode getClassHierarchyNode(ClassEntity cls) {
     return _classHierarchyNodes[cls];
   }
@@ -2139,7 +2139,7 @@
   /// relations of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassSet getClassSet(ClassEntity cls) {
     return _classSets[cls];
   }
diff --git a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
index f3b7c59..b77533f 100644
--- a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
@@ -43,7 +43,7 @@
 
 class KernelCodegenWorkItemBuilder implements WorkItemBuilder {
   final JavaScriptBackend _backend;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
 
   KernelCodegenWorkItemBuilder(this._backend, this._closedWorld);
 
@@ -67,7 +67,7 @@
 
 class KernelCodegenWorkItem extends CodegenWorkItem {
   final JavaScriptBackend _backend;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final MemberEntity element;
   final CodegenRegistry registry;
 
@@ -92,7 +92,7 @@
       this.task, this._compiler, this._elementMap, this._globalLocalsMap);
 
   @override
-  HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) {
+  HGraph build(CodegenWorkItem work, JClosedWorld closedWorld) {
     return task.measure(() {
       KernelSsaGraphBuilder builder = new KernelSsaGraphBuilder(
           work.element,
@@ -193,7 +193,7 @@
   }
 
   AbstractValue typeFromNativeBehavior(
-      NativeBehavior nativeBehavior, ClosedWorld closedWorld) {
+      NativeBehavior nativeBehavior, JClosedWorld closedWorld) {
     return AbstractValueFactory.fromNativeBehavior(nativeBehavior, closedWorld);
   }
 }
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index 4868207..aed9b6c 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -69,7 +69,7 @@
   final MemberEntity targetElement;
   final MemberEntity initialTargetElement;
 
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final CodegenWorldBuilder _worldBuilder;
   final CodegenRegistry registry;
   final ClosureDataLookup closureDataLookup;
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index 671f01b..3d08315 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -33,7 +33,7 @@
 import '../universe/selector.dart' show Selector;
 import '../universe/use.dart'
     show ConstantUse, ConstrainedDynamicUse, StaticUse, TypeUse;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'codegen_helpers.dart';
 import 'nodes.dart';
 import 'variable_allocator.dart';
@@ -71,7 +71,7 @@
   }
 
   js.Expression generateCode(
-      CodegenWorkItem work, HGraph graph, ClosedWorld closedWorld) {
+      CodegenWorkItem work, HGraph graph, JClosedWorld closedWorld) {
     if (work.element.isField) {
       return generateLazyInitializer(work, graph, closedWorld);
     } else {
@@ -80,7 +80,7 @@
   }
 
   js.Expression generateLazyInitializer(
-      CodegenWorkItem work, HGraph graph, ClosedWorld closedWorld) {
+      CodegenWorkItem work, HGraph graph, JClosedWorld closedWorld) {
     return measure(() {
       backend.tracer.traceGraph("codegen", graph);
       SourceInformation sourceInformation = sourceInformationFactory
@@ -105,7 +105,7 @@
   }
 
   js.Expression generateMethod(
-      CodegenWorkItem work, HGraph graph, ClosedWorld closedWorld) {
+      CodegenWorkItem work, HGraph graph, JClosedWorld closedWorld) {
     return measure(() {
       FunctionEntity element = work.element;
       if (element.asyncMarker != AsyncMarker.SYNC) {
@@ -163,7 +163,7 @@
   final RuntimeTypesEncoder _rtiEncoder;
   final Namer _namer;
   final SuperMemberData _superMemberData;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final CodegenWorkItem _work;
 
   final Set<HInstruction> generateAtUseSite;
diff --git a/pkg/compiler/lib/src/ssa/codegen_helpers.dart b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
index d3905d1..ca08263 100644
--- a/pkg/compiler/lib/src/ssa/codegen_helpers.dart
+++ b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
@@ -9,7 +9,7 @@
 import '../options.dart';
 import '../types/abstract_value_domain.dart';
 import '../universe/selector.dart' show Selector;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'nodes.dart';
 
 /**
@@ -17,7 +17,7 @@
  * Caches codegen information on nodes.
  */
 class SsaInstructionSelection extends HBaseVisitor {
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final InterceptorData _interceptorData;
   HGraph graph;
 
diff --git a/pkg/compiler/lib/src/ssa/graph_builder.dart b/pkg/compiler/lib/src/ssa/graph_builder.dart
index 2a6830c..e67eeb4 100644
--- a/pkg/compiler/lib/src/ssa/graph_builder.dart
+++ b/pkg/compiler/lib/src/ssa/graph_builder.dart
@@ -25,7 +25,7 @@
 import '../options.dart';
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'jump_handler.dart';
 import 'locals_handler.dart';
 import 'nodes.dart';
@@ -53,7 +53,7 @@
 
   CodegenRegistry get registry;
 
-  ClosedWorld get closedWorld;
+  JClosedWorld get closedWorld;
 
   AbstractValueDomain get abstractValueDomain =>
       closedWorld.abstractValueDomain;
diff --git a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
index 6d297c5..a9be144 100644
--- a/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
+++ b/pkg/compiler/lib/src/ssa/interceptor_simplifier.dart
@@ -8,7 +8,7 @@
 import '../js_backend/interceptor_data.dart';
 import '../types/abstract_value_domain.dart';
 import '../universe/selector.dart' show Selector;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'nodes.dart';
 import 'optimize.dart';
 
@@ -35,7 +35,7 @@
 class SsaSimplifyInterceptors extends HBaseVisitor
     implements OptimizationPhase {
   final String name = "SsaSimplifyInterceptors";
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final ClassEntity _enclosingClass;
   HGraph _graph;
 
diff --git a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
index 5801f3f..43e9c67 100644
--- a/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
+++ b/pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart
@@ -12,7 +12,7 @@
 import '../types/types.dart';
 import '../universe/call_structure.dart';
 import '../universe/selector.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'nodes.dart';
 import 'types.dart';
 
@@ -29,7 +29,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return AbstractValueFactory.inferredTypeForSelector(
         instruction.selector, instruction.mask, results);
   }
@@ -40,7 +40,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return null;
   }
 
@@ -122,7 +122,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction receiver = instruction.inputs[1];
     HInstruction index = instruction.inputs[2];
     if (!receiver.isMutableIndexable(closedWorld.abstractValueDomain))
@@ -151,7 +151,7 @@
       HInstruction receiver,
       HInstruction value,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     // Handle typed arrays by recognizing the exact implementation of `[]=` and
     // checking if [value] has the appropriate type.
     if (instruction.element != null) {
@@ -184,7 +184,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (!instruction.inputs[1]
         .isIndexablePrimitive(closedWorld.abstractValueDomain)) return null;
     if (!instruction.inputs[2].isInteger(closedWorld.abstractValueDomain) &&
@@ -212,7 +212,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     // All bitwise operations on primitive types either produce an
     // integer or throw an error.
     if (instruction.inputs[1]
@@ -229,7 +229,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction input = instruction.inputs[1];
     if (input.isNumber(closedWorld.abstractValueDomain)) {
       return new HBitNot(
@@ -253,7 +253,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction operand = instruction.inputs[1];
     if (operand.isNumberOrNull(closedWorld.abstractValueDomain)) {
       // We have integer subclasses that represent ranges, so widen any int
@@ -276,7 +276,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction input = instruction.inputs[1];
     if (input.isNumber(closedWorld.abstractValueDomain)) {
       return new HNegate(
@@ -300,7 +300,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction input = instruction.inputs[1];
     if (input.isNumberOrNull(closedWorld.abstractValueDomain)) {
       return closedWorld.abstractValueDomain.excludeNull(input.instructionType);
@@ -315,7 +315,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction input = instruction.inputs[1];
     if (input.isNumber(closedWorld.abstractValueDomain)) {
       return new HAbs(
@@ -335,7 +335,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (left.isIntegerOrNull(closedWorld.abstractValueDomain) &&
@@ -353,7 +353,7 @@
         .computeTypeFromInputTypes(instruction, results, options, closedWorld);
   }
 
-  bool isBuiltin(HInvokeDynamic instruction, ClosedWorld closedWorld) {
+  bool isBuiltin(HInvokeDynamic instruction, JClosedWorld closedWorld) {
     return instruction.inputs[1].isNumber(closedWorld.abstractValueDomain) &&
         instruction.inputs[2].isNumber(closedWorld.abstractValueDomain);
   }
@@ -364,7 +364,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (isBuiltin(instruction, closedWorld)) {
       HInstruction builtin =
           newBuiltinVariant(instruction, results, options, closedWorld);
@@ -378,14 +378,14 @@
   }
 
   bool inputsArePositiveIntegers(
-      HInstruction instruction, ClosedWorld closedWorld) {
+      HInstruction instruction, JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     return left.isPositiveIntegerOrNull(closedWorld.abstractValueDomain) &&
         right.isPositiveIntegerOrNull(closedWorld.abstractValueDomain);
   }
 
-  bool inputsAreUInt31(HInstruction instruction, ClosedWorld closedWorld) {
+  bool inputsAreUInt31(HInstruction instruction, JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     return left.isUInt31(closedWorld.abstractValueDomain) &&
@@ -396,7 +396,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld);
+      JClosedWorld closedWorld);
 }
 
 class AddSpecializer extends BinaryArithmeticSpecializer {
@@ -406,7 +406,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (inputsAreUInt31(instruction, closedWorld)) {
       return closedWorld.abstractValueDomain.uint32Type;
     }
@@ -425,7 +425,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HAdd(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -445,7 +445,7 @@
       HInstruction instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     if (left.isNumberOrNull(closedWorld.abstractValueDomain)) {
       return closedWorld.abstractValueDomain.doubleType;
@@ -458,7 +458,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HDivide(instruction.inputs[1], instruction.inputs[2],
         instruction.selector, closedWorld.abstractValueDomain.doubleType);
   }
@@ -471,7 +471,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (inputsArePositiveIntegers(instruction, closedWorld)) {
       return closedWorld.abstractValueDomain.positiveIntType;
     }
@@ -487,7 +487,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     // Modulo cannot be mapped to the native operator (different semantics).
 
     // We can use HRemainder if both inputs are non-negative and the receiver
@@ -557,7 +557,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (inputsArePositiveIntegers(instruction, closedWorld)) {
       return closedWorld.abstractValueDomain.positiveIntType;
     }
@@ -573,7 +573,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HRemainder(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -593,7 +593,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (inputsArePositiveIntegers(instruction, closedWorld)) {
       return closedWorld.abstractValueDomain.positiveIntType;
     }
@@ -605,7 +605,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HMultiply(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -625,7 +625,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HSubtract(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -645,7 +645,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (hasUint31Result(instruction, closedWorld)) {
       return closedWorld.abstractValueDomain.uint31Type;
     }
@@ -672,7 +672,7 @@
     return count >= BigInt.two;
   }
 
-  bool hasUint31Result(HInstruction instruction, ClosedWorld closedWorld) {
+  bool hasUint31Result(HInstruction instruction, JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (right.isPositiveInteger(closedWorld.abstractValueDomain)) {
@@ -693,7 +693,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction right = instruction.inputs[2];
     if (isBuiltin(instruction, closedWorld)) {
       if (right.isPositiveInteger(closedWorld.abstractValueDomain) &&
@@ -715,7 +715,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HTruncatingDivide(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -731,7 +731,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     // All bitwise operations on primitive types either produce an
     // integer or throw an error.
     HInstruction left = instruction.inputs[1];
@@ -764,7 +764,7 @@
     return false;
   }
 
-  bool isPositive(HInstruction instruction, ClosedWorld closedWorld) {
+  bool isPositive(HInstruction instruction, JClosedWorld closedWorld) {
     // TODO: We should use the value range analysis. Currently, ranges
     // are discarded just after the analysis.
     return instruction.isPositiveInteger(closedWorld.abstractValueDomain);
@@ -784,7 +784,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (left.isNumber(closedWorld.abstractValueDomain)) {
@@ -807,7 +807,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HShiftLeft(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -823,7 +823,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     if (left.isUInt32(closedWorld.abstractValueDomain))
       return left.instructionType;
@@ -837,7 +837,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (left.isNumber(closedWorld.abstractValueDomain)) {
@@ -867,7 +867,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HShiftRight(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -891,7 +891,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (left.isUInt31(closedWorld.abstractValueDomain) &&
@@ -906,7 +906,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HBitOr(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -926,7 +926,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (left.isPrimitiveOrNull(closedWorld.abstractValueDomain) &&
@@ -942,7 +942,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HBitAnd(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -962,7 +962,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (left.isUInt31(closedWorld.abstractValueDomain) &&
@@ -977,7 +977,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     return new HBitXor(
         instruction.inputs[1],
         instruction.inputs[2],
@@ -993,7 +993,7 @@
       HInvokeDynamic instruction,
       GlobalTypeInferenceResults results,
       CompilerOptions options,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     if (instruction.inputs[1]
         .isPrimitiveOrNull(closedWorld.abstractValueDomain)) {
       return closedWorld.abstractValueDomain.boolType;
@@ -1008,7 +1008,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     if (left.isNumber(closedWorld.abstractValueDomain) &&
@@ -1019,7 +1019,7 @@
   }
 
   HInstruction newBuiltinVariant(
-      HInvokeDynamic instruction, ClosedWorld closedWorld);
+      HInvokeDynamic instruction, JClosedWorld closedWorld);
 }
 
 class EqualsSpecializer extends RelationalSpecializer {
@@ -1031,7 +1031,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction left = instruction.inputs[1];
     HInstruction right = instruction.inputs[2];
     AbstractValue instructionType = left.instructionType;
@@ -1060,7 +1060,7 @@
   }
 
   HInstruction newBuiltinVariant(
-      HInvokeDynamic instruction, ClosedWorld closedWorld) {
+      HInvokeDynamic instruction, JClosedWorld closedWorld) {
     return new HIdentity(instruction.inputs[1], instruction.inputs[2],
         instruction.selector, closedWorld.abstractValueDomain.boolType);
   }
@@ -1074,7 +1074,7 @@
   }
 
   HInstruction newBuiltinVariant(
-      HInvokeDynamic instruction, ClosedWorld closedWorld) {
+      HInvokeDynamic instruction, JClosedWorld closedWorld) {
     return new HLess(instruction.inputs[1], instruction.inputs[2],
         instruction.selector, closedWorld.abstractValueDomain.boolType);
   }
@@ -1088,7 +1088,7 @@
   }
 
   HInstruction newBuiltinVariant(
-      HInvokeDynamic instruction, ClosedWorld closedWorld) {
+      HInvokeDynamic instruction, JClosedWorld closedWorld) {
     return new HGreater(instruction.inputs[1], instruction.inputs[2],
         instruction.selector, closedWorld.abstractValueDomain.boolType);
   }
@@ -1102,7 +1102,7 @@
   }
 
   HInstruction newBuiltinVariant(
-      HInvokeDynamic instruction, ClosedWorld closedWorld) {
+      HInvokeDynamic instruction, JClosedWorld closedWorld) {
     return new HGreaterEqual(instruction.inputs[1], instruction.inputs[2],
         instruction.selector, closedWorld.abstractValueDomain.boolType);
   }
@@ -1116,7 +1116,7 @@
   }
 
   HInstruction newBuiltinVariant(
-      HInvokeDynamic instruction, ClosedWorld closedWorld) {
+      HInvokeDynamic instruction, JClosedWorld closedWorld) {
     return new HLessEqual(instruction.inputs[1], instruction.inputs[2],
         instruction.selector, closedWorld.abstractValueDomain.boolType);
   }
@@ -1135,7 +1135,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     // TODO(sra): Implement a builtin HCodeUnitAt instruction and the same index
     // bounds checking optimizations as for HIndex.
     HInstruction receiver = instruction.getDartReceiver(closedWorld);
@@ -1163,7 +1163,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction receiver = instruction.getDartReceiver(closedWorld);
     // `compareTo` has no side-effect (other than throwing) and can be GVN'ed
     // for some known types.
@@ -1195,7 +1195,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction receiver = instruction.getDartReceiver(closedWorld);
     if (receiver.isStringOrNull(closedWorld.abstractValueDomain)) {
       // String.xxx does not have any side effect (other than throwing), and it
@@ -1223,7 +1223,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction receiver = instruction.getDartReceiver(closedWorld);
     HInstruction pattern = instruction.inputs[2];
     if (receiver.isStringOrNull(closedWorld.abstractValueDomain) &&
@@ -1249,7 +1249,7 @@
       GlobalTypeInferenceResults results,
       CompilerOptions options,
       CommonElements commonElements,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     HInstruction receiver = instruction.getDartReceiver(closedWorld);
     if (receiver.isNumberOrNull(closedWorld.abstractValueDomain)) {
       // Even if there is no builtin equivalent instruction, we know the
diff --git a/pkg/compiler/lib/src/ssa/locals_handler.dart b/pkg/compiler/lib/src/ssa/locals_handler.dart
index 1bfef1f..f0a914c 100644
--- a/pkg/compiler/lib/src/ssa/locals_handler.dart
+++ b/pkg/compiler/lib/src/ssa/locals_handler.dart
@@ -13,7 +13,7 @@
 import '../js_model/locals.dart' show JLocal;
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 import 'graph_builder.dart';
 import 'nodes.dart';
@@ -65,7 +65,7 @@
   LocalsHandler(this.builder, this.executableContext, this.memberContext,
       this.instanceType, this._nativeData, this._interceptorData);
 
-  ClosedWorld get closedWorld => builder.closedWorld;
+  JClosedWorld get closedWorld => builder.closedWorld;
 
   AbstractValueDomain get _abstractValueDomain =>
       closedWorld.abstractValueDomain;
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index d2ded3a..59ac3b2 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -21,7 +21,7 @@
 import '../universe/selector.dart' show Selector;
 import '../universe/side_effects.dart' show SideEffects;
 import '../util/util.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'invoke_dynamic_specializers.dart';
 import 'validate.dart';
 
@@ -262,7 +262,7 @@
     return result;
   }
 
-  HConstant addConstant(ConstantValue constant, ClosedWorld closedWorld,
+  HConstant addConstant(ConstantValue constant, JClosedWorld closedWorld,
       {SourceInformation sourceInformation}) {
     HConstant result = constants[constant];
     // TODO(johnniwinther): Support source information per constant reference.
@@ -289,44 +289,44 @@
       OutputUnit unit,
       SourceInformation sourceInformation,
       Compiler compiler,
-      ClosedWorld closedWorld) {
+      JClosedWorld closedWorld) {
     ConstantValue wrapper = new DeferredGlobalConstantValue(constant, unit);
     compiler.backend.outputUnitData.registerConstantDeferredUse(wrapper, unit);
     return addConstant(wrapper, closedWorld,
         sourceInformation: sourceInformation);
   }
 
-  HConstant addConstantInt(int i, ClosedWorld closedWorld) {
+  HConstant addConstantInt(int i, JClosedWorld closedWorld) {
     return addConstant(
         closedWorld.constantSystem.createIntFromInt(i), closedWorld);
   }
 
-  HConstant addConstantDouble(double d, ClosedWorld closedWorld) {
+  HConstant addConstantDouble(double d, JClosedWorld closedWorld) {
     return addConstant(closedWorld.constantSystem.createDouble(d), closedWorld);
   }
 
-  HConstant addConstantString(String str, ClosedWorld closedWorld) {
+  HConstant addConstantString(String str, JClosedWorld closedWorld) {
     return addConstant(
         closedWorld.constantSystem.createString(str), closedWorld);
   }
 
-  HConstant addConstantStringFromName(js.Name name, ClosedWorld closedWorld) {
+  HConstant addConstantStringFromName(js.Name name, JClosedWorld closedWorld) {
     return addConstant(
         new SyntheticConstantValue(
             SyntheticConstantKind.NAME, js.quoteName(name)),
         closedWorld);
   }
 
-  HConstant addConstantBool(bool value, ClosedWorld closedWorld) {
+  HConstant addConstantBool(bool value, JClosedWorld closedWorld) {
     return addConstant(
         closedWorld.constantSystem.createBool(value), closedWorld);
   }
 
-  HConstant addConstantNull(ClosedWorld closedWorld) {
+  HConstant addConstantNull(JClosedWorld closedWorld) {
     return addConstant(closedWorld.constantSystem.createNull(), closedWorld);
   }
 
-  HConstant addConstantUnreachable(ClosedWorld closedWorld) {
+  HConstant addConstantUnreachable(JClosedWorld closedWorld) {
     // A constant with an empty type used as the HInstruction of an expression
     // in an unreachable context.
     return addConstant(
@@ -1102,7 +1102,7 @@
   AbstractValue instructionType;
 
   Selector get selector => null;
-  HInstruction getDartReceiver(ClosedWorld closedWorld) => null;
+  HInstruction getDartReceiver(JClosedWorld closedWorld) => null;
   bool onlyThrowsNSM() => false;
 
   bool isInBasicBlock() => block != null;
@@ -1234,7 +1234,7 @@
   bool isConstantFalse() => false;
   bool isConstantTrue() => false;
 
-  bool isInterceptor(ClosedWorld closedWorld) => false;
+  bool isInterceptor(JClosedWorld closedWorld) => false;
 
   bool isValid() {
     HValidator validator = new HValidator();
@@ -1260,7 +1260,7 @@
     return false;
   }
 
-  HInstruction convertType(ClosedWorld closedWorld, DartType type, int kind) {
+  HInstruction convertType(JClosedWorld closedWorld, DartType type, int kind) {
     if (type == null) return this;
     type = type.unaliased;
     // Only the builder knows how to create [HTypeConversion]
@@ -1443,7 +1443,7 @@
   HInstruction get value => inputs[0];
 
   @override
-  HInstruction convertType(ClosedWorld closedWorld, DartType type, int kind) {
+  HInstruction convertType(JClosedWorld closedWorld, DartType type, int kind) {
     HInstruction converted = value.convertType(closedWorld, type, kind);
     if (converted == value) return this;
     HTypeConversion conversion = converted;
@@ -1628,7 +1628,7 @@
   }
   toString() => 'invoke dynamic: selector=$selector, mask=$mask';
   HInstruction get receiver => inputs[0];
-  HInstruction getDartReceiver(ClosedWorld closedWorld) {
+  HInstruction getDartReceiver(JClosedWorld closedWorld) {
     return isCallOnInterceptor(closedWorld) ? inputs[1] : inputs[0];
   }
 
@@ -1638,7 +1638,7 @@
   /**
    * Returns whether this call is on an interceptor object.
    */
-  bool isCallOnInterceptor(ClosedWorld closedWorld) {
+  bool isCallOnInterceptor(JClosedWorld closedWorld) {
     return isInterceptedCall && receiver.isInterceptor(closedWorld);
   }
 
@@ -1797,14 +1797,14 @@
   }
 
   HInstruction get receiver => inputs[0];
-  HInstruction getDartReceiver(ClosedWorld closedWorld) {
+  HInstruction getDartReceiver(JClosedWorld closedWorld) {
     return isCallOnInterceptor(closedWorld) ? inputs[1] : inputs[0];
   }
 
   /**
    * Returns whether this call is on an interceptor object.
    */
-  bool isCallOnInterceptor(ClosedWorld closedWorld) {
+  bool isCallOnInterceptor(JClosedWorld closedWorld) {
     return isInterceptedCall && receiver.isInterceptor(closedWorld);
   }
 
@@ -1879,7 +1879,7 @@
     }
   }
 
-  bool isInterceptor(ClosedWorld closedWorld) {
+  bool isInterceptor(JClosedWorld closedWorld) {
     if (sourceElement == null) return false;
     // In case of a closure inside an interceptor class, [:this:] is
     // stored in the generated closure class, and accessed through a
@@ -1894,7 +1894,7 @@
 
   bool canThrow(AbstractValueDomain domain) => receiver.canBeNull(domain);
 
-  HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver;
+  HInstruction getDartReceiver(JClosedWorld closedWorld) => receiver;
   bool onlyThrowsNSM() => true;
   bool get isNullCheck => element == null;
 
@@ -1917,7 +1917,7 @@
 
   bool canThrow(AbstractValueDomain domain) => receiver.canBeNull(domain);
 
-  HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver;
+  HInstruction getDartReceiver(JClosedWorld closedWorld) => receiver;
   bool onlyThrowsNSM() => true;
 
   HInstruction get value => inputs[1];
@@ -1945,7 +1945,7 @@
 
   bool canThrow(AbstractValueDomain domain) => receiver.canBeNull(domain);
 
-  HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver;
+  HInstruction getDartReceiver(JClosedWorld closedWorld) => receiver;
   bool onlyThrowsNSM() => true;
 
   accept(HVisitor visitor) => visitor.visitGetLength(this);
@@ -1998,7 +1998,7 @@
 
   bool canThrow(AbstractValueDomain domain) => receiver.canBeNull(domain);
 
-  HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver;
+  HInstruction getDartReceiver(JClosedWorld closedWorld) => receiver;
   bool onlyThrowsNSM() => true;
 
   HInstruction get value => inputs[1];
@@ -2510,7 +2510,7 @@
   bool isConstantFalse() => constant.isFalse;
   bool isConstantTrue() => constant.isTrue;
 
-  bool isInterceptor(ClosedWorld closedWorld) => constant.isInterceptor;
+  bool isInterceptor(JClosedWorld closedWorld) => constant.isInterceptor;
 
   // Maybe avoid this if the literal is big?
   bool isCodeMotionInvariant() => true;
@@ -2581,7 +2581,7 @@
 
   bool isCodeMotionInvariant() => true;
 
-  bool isInterceptor(ClosedWorld closedWorld) {
+  bool isInterceptor(JClosedWorld closedWorld) {
     return closedWorld.interceptorData
         .isInterceptedClass(sourceElement.enclosingClass);
   }
@@ -2797,7 +2797,7 @@
     inputs.add(constant);
   }
 
-  bool isInterceptor(ClosedWorld closedWorld) => true;
+  bool isInterceptor(JClosedWorld closedWorld) => true;
 
   int typeCode() => HInstruction.INTERCEPTOR_TYPECODE;
   bool typeEquals(other) => other is HInterceptor;
@@ -2833,7 +2833,7 @@
     assert(inputs[0].isNull(domain));
     assert(selector.callStructure.typeArgumentCount == typeArguments.length);
   }
-  bool isCallOnInterceptor(ClosedWorld closedWorld) => true;
+  bool isCallOnInterceptor(JClosedWorld closedWorld) => true;
 
   String toString() => 'one shot interceptor: selector=$selector, mask=$mask';
   accept(HVisitor visitor) => visitor.visitOneShotInterceptor(this);
@@ -2913,7 +2913,7 @@
   // TODO(27272): Make HIndex dependent on bounds checking.
   bool get isMovable => false;
 
-  HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver;
+  HInstruction getDartReceiver(JClosedWorld closedWorld) => receiver;
   bool onlyThrowsNSM() => true;
   bool canThrow(AbstractValueDomain domain) => receiver.canBeNull(domain);
 
@@ -2946,7 +2946,7 @@
   // TODO(27272): Make HIndex dependent on bounds checking.
   bool get isMovable => false;
 
-  HInstruction getDartReceiver(ClosedWorld closedWorld) => receiver;
+  HInstruction getDartReceiver(JClosedWorld closedWorld) => receiver;
   bool onlyThrowsNSM() => true;
   bool canThrow(AbstractValueDomain domain) => receiver.canBeNull(domain);
 }
@@ -3134,7 +3134,7 @@
 
   HInstruction get checkedInput => super.checkedInput;
 
-  HInstruction convertType(ClosedWorld closedWorld, DartType type, int kind) {
+  HInstruction convertType(JClosedWorld closedWorld, DartType type, int kind) {
     if (typeExpression == type) {
       // Don't omit a boolean conversion (which doesn't allow `null`) unless
       // this type conversion is already a boolean conversion.
@@ -3170,7 +3170,7 @@
         receiverTypeCheckSelector == other.receiverTypeCheckSelector;
   }
 
-  bool isRedundant(ClosedWorld closedWorld) {
+  bool isRedundant(JClosedWorld closedWorld) {
     AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
     DartType type = typeExpression;
     if (type != null) {
@@ -3248,7 +3248,7 @@
         instructionType == other.instructionType;
   }
 
-  bool isRedundant(ClosedWorld closedWorld) {
+  bool isRedundant(JClosedWorld closedWorld) {
     AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
     if (abstractValueDomain.containsAll(knownType)) return false;
     AbstractValue inputType = checkedInput.instructionType;
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index 3c3d569..f8313e8 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -23,7 +23,7 @@
 import '../universe/side_effects.dart' show SideEffects;
 import '../universe/use.dart' show StaticUse;
 import '../util/util.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'interceptor_simplifier.dart';
 import 'nodes.dart';
 import 'types.dart';
@@ -53,7 +53,7 @@
 
   RuntimeTypesSubstitutions get _rtiSubstitutions => _backend.rtiSubstitutions;
 
-  void optimize(CodegenWorkItem work, HGraph graph, ClosedWorld closedWorld) {
+  void optimize(CodegenWorkItem work, HGraph graph, JClosedWorld closedWorld) {
     void runPhase(OptimizationPhase phase) {
       measureSubtask(phase.name, () => phase.visitGraph(graph));
       _backend.tracer.traceGraph(phase.name, graph);
@@ -155,7 +155,7 @@
 /// cannot change.  The current implementation is conservative for the purpose
 /// of identifying gvn-able lengths and mis-identifies some unions of fixed
 /// length indexables (see TODO) as not fixed length.
-bool isFixedLength(mask, ClosedWorld closedWorld) {
+bool isFixedLength(mask, JClosedWorld closedWorld) {
   if (mask.isContainer && mask.length != null) {
     // A container on which we have inferred the length.
     return true;
@@ -185,7 +185,7 @@
   final GlobalTypeInferenceResults _globalInferenceResults;
   final CompilerOptions _options;
   final RuntimeTypesSubstitutions _rtiSubstitutions;
-  final ClosedWorld _closedWorld;
+  final JClosedWorld _closedWorld;
   final CodegenRegistry _registry;
   HGraph _graph;
 
@@ -1502,7 +1502,7 @@
 class SsaCheckInserter extends HBaseVisitor implements OptimizationPhase {
   final Set<HInstruction> boundsChecked;
   final bool trustPrimitives;
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final String name = "SsaCheckInserter";
   HGraph graph;
 
@@ -1588,7 +1588,7 @@
 class SsaDeadCodeEliminator extends HGraphVisitor implements OptimizationPhase {
   final String name = "SsaDeadCodeEliminator";
 
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final SsaOptimizerTask optimizer;
   HGraph _graph;
   SsaLiveBlockAnalyzer analyzer;
@@ -1934,7 +1934,7 @@
   final Set<HBasicBlock> live = new Set<HBasicBlock>();
   final List<HBasicBlock> worklist = <HBasicBlock>[];
   final SsaOptimizerTask optimizer;
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
 
   SsaLiveBlockAnalyzer(this.graph, this.closedWorld, this.optimizer);
 
@@ -2442,7 +2442,7 @@
 class SsaTypeConversionInserter extends HBaseVisitor
     implements OptimizationPhase {
   final String name = "SsaTypeconversionInserter";
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
 
   SsaTypeConversionInserter(this.closedWorld);
 
@@ -2585,7 +2585,7 @@
  */
 class SsaLoadElimination extends HBaseVisitor implements OptimizationPhase {
   final Compiler compiler;
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final String name = "SsaLoadElimination";
   MemorySet memorySet;
   List<MemorySet> memories;
@@ -2843,7 +2843,7 @@
 /// confuse aliasing.  Values stored into a memory place keep the type
 /// refinements to help further optimizations.
 class MemorySet {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
 
   /// Maps a field to a map of receivers to their current field values.
   ///
diff --git a/pkg/compiler/lib/src/ssa/ssa.dart b/pkg/compiler/lib/src/ssa/ssa.dart
index f757a85..c006997 100644
--- a/pkg/compiler/lib/src/ssa/ssa.dart
+++ b/pkg/compiler/lib/src/ssa/ssa.dart
@@ -13,7 +13,7 @@
 import '../js_backend/backend.dart' show JavaScriptBackend, FunctionCompiler;
 import '../universe/call_structure.dart';
 import '../universe/use.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 import 'codegen.dart';
 import 'nodes.dart';
@@ -38,7 +38,7 @@
 
   /// Generates JavaScript code for `work.element`.
   /// Using the ssa builder, optimizer and codegenerator.
-  js.Fun compile(CodegenWorkItem work, ClosedWorld closedWorld) {
+  js.Fun compile(CodegenWorkItem work, JClosedWorld closedWorld) {
     HGraph graph = _builder.build(work, closedWorld);
     if (graph == null) return null;
     optimizer.optimize(work, graph, closedWorld);
@@ -68,7 +68,7 @@
 abstract class SsaBuilder {
   /// Creates the [HGraph] for [work] or returns `null` if no code is needed
   /// for [work].
-  HGraph build(CodegenWorkItem work, ClosedWorld closedWorld);
+  HGraph build(CodegenWorkItem work, JClosedWorld closedWorld);
 }
 
 class SsaBuilderTask extends CompilerTask {
@@ -88,7 +88,7 @@
 
   /// Creates the [HGraph] for [work] or returns `null` if no code is needed
   /// for [work].
-  HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) {
+  HGraph build(CodegenWorkItem work, JClosedWorld closedWorld) {
     return _builder.build(work, closedWorld);
   }
 }
@@ -105,8 +105,8 @@
   ///
   /// If the field is constant, no code is needed for the field and the method
   /// returns `true`.
-  bool handleConstantField(
-      MemberEntity element, CodegenRegistry registry, ClosedWorld closedWorld) {
+  bool handleConstantField(MemberEntity element, CodegenRegistry registry,
+      JClosedWorld closedWorld) {
     if (element.isField) {
       ConstantValue initialValue = getFieldInitialConstantValue(element);
       if (initialValue != null) {
diff --git a/pkg/compiler/lib/src/ssa/ssa_tracer.dart b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
index 413c044..f72cc6b 100644
--- a/pkg/compiler/lib/src/ssa/ssa_tracer.dart
+++ b/pkg/compiler/lib/src/ssa/ssa_tracer.dart
@@ -9,7 +9,7 @@
 import '../js_backend/namer.dart' show Namer;
 import '../types/abstract_value_domain.dart';
 import '../tracer.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'nodes.dart';
 
 /**
@@ -18,7 +18,7 @@
  * to enable it.
  */
 class HTracer extends HGraphVisitor with TracerUtil {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final Namer namer;
   final OutputSink output;
 
@@ -113,7 +113,7 @@
 }
 
 class HInstructionStringifier implements HVisitor<String> {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final Namer namer;
   final HBasicBlock currentBlock;
 
diff --git a/pkg/compiler/lib/src/ssa/types.dart b/pkg/compiler/lib/src/ssa/types.dart
index 6e7ee44..f9b3752 100644
--- a/pkg/compiler/lib/src/ssa/types.dart
+++ b/pkg/compiler/lib/src/ssa/types.dart
@@ -8,7 +8,7 @@
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
 import '../universe/selector.dart' show Selector;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 
 class AbstractValueFactory {
   static AbstractValue inferredReturnTypeForElement(
@@ -36,7 +36,7 @@
   }
 
   static AbstractValue fromNativeBehavior(
-      native.NativeBehavior nativeBehavior, ClosedWorld closedWorld) {
+      native.NativeBehavior nativeBehavior, JClosedWorld closedWorld) {
     AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
     var typesReturned = nativeBehavior.typesReturned;
     if (typesReturned.isEmpty) return abstractValueDomain.dynamicType;
diff --git a/pkg/compiler/lib/src/ssa/types_propagation.dart b/pkg/compiler/lib/src/ssa/types_propagation.dart
index 00d06ae..14d25b9 100644
--- a/pkg/compiler/lib/src/ssa/types_propagation.dart
+++ b/pkg/compiler/lib/src/ssa/types_propagation.dart
@@ -8,7 +8,7 @@
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
 import '../universe/selector.dart' show Selector;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'nodes.dart';
 import 'optimize.dart';
 
@@ -37,7 +37,7 @@
   final GlobalTypeInferenceResults results;
   final CompilerOptions options;
   final CommonElements commonElements;
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   String get name => 'SsaTypePropagator';
 
   SsaTypePropagator(
diff --git a/pkg/compiler/lib/src/ssa/value_range_analyzer.dart b/pkg/compiler/lib/src/ssa/value_range_analyzer.dart
index 71f4e24..0038d5b 100644
--- a/pkg/compiler/lib/src/ssa/value_range_analyzer.dart
+++ b/pkg/compiler/lib/src/ssa/value_range_analyzer.dart
@@ -5,7 +5,7 @@
 import '../constant_system_dart.dart';
 import '../constants/constant_system.dart';
 import '../constants/values.dart';
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show JClosedWorld;
 import 'nodes.dart';
 import 'optimize.dart';
 
@@ -600,13 +600,13 @@
    */
   final Map<HInstruction, Range> ranges = new Map<HInstruction, Range>();
 
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final ValueRangeInfo info;
   final SsaOptimizerTask optimizer;
 
   HGraph graph;
 
-  SsaValueRangeAnalyzer(ClosedWorld closedWorld, this.optimizer)
+  SsaValueRangeAnalyzer(JClosedWorld closedWorld, this.optimizer)
       : info = new ValueRangeInfo(closedWorld.constantSystem),
         this.closedWorld = closedWorld;
 
@@ -1064,7 +1064,7 @@
  * Tries to find a range for the update instruction of a loop phi.
  */
 class LoopUpdateRecognizer extends HBaseVisitor {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final Map<HInstruction, Range> ranges;
   final ValueRangeInfo info;
   LoopUpdateRecognizer(this.closedWorld, this.ranges, this.info);
diff --git a/pkg/compiler/lib/src/tracer.dart b/pkg/compiler/lib/src/tracer.dart
index cdebb1c..9a8f51c 100644
--- a/pkg/compiler/lib/src/tracer.dart
+++ b/pkg/compiler/lib/src/tracer.dart
@@ -9,7 +9,7 @@
 import 'ssa/nodes.dart' as ssa show HGraph;
 import 'ssa/ssa_tracer.dart' show HTracer;
 import 'util/util.dart' show Indentation;
-import 'world.dart' show ClosedWorld;
+import 'world.dart' show JClosedWorld;
 
 /**
  * If non-null, we only trace methods whose name match the regexp defined by the
@@ -27,7 +27,7 @@
  * readable by IR Hydra.
  */
 class Tracer extends TracerUtil {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final Namer namer;
   bool traceActive = false;
   final api.OutputSink output;
diff --git a/pkg/compiler/lib/src/types/abstract_value_domain.dart b/pkg/compiler/lib/src/types/abstract_value_domain.dart
index 1cc8e7a..37ff14d 100644
--- a/pkg/compiler/lib/src/types/abstract_value_domain.dart
+++ b/pkg/compiler/lib/src/types/abstract_value_domain.dart
@@ -16,7 +16,7 @@
 /// inference.
 abstract class AbstractValueStrategy {
   /// Creates the abstract value domain for [closedWorld].
-  AbstractValueDomain createDomain(ClosedWorld closedWorld);
+  AbstractValueDomain createDomain(JClosedWorld closedWorld);
 
   /// Creates the [SelectorConstraintsStrategy] used by the backend enqueuer.
   SelectorConstraintsStrategy createSelectorStrategy();
diff --git a/pkg/compiler/lib/src/types/types.dart b/pkg/compiler/lib/src/types/types.dart
index 704157c..a182ee7 100644
--- a/pkg/compiler/lib/src/types/types.dart
+++ b/pkg/compiler/lib/src/types/types.dart
@@ -10,7 +10,7 @@
 import '../elements/entities.dart';
 import '../inferrer/type_graph_inferrer.dart' show TypeGraphInferrer;
 import '../universe/selector.dart' show Selector;
-import '../world.dart' show ClosedWorld, ClosedWorldRefiner;
+import '../world.dart' show JClosedWorld;
 import 'abstract_value_domain.dart';
 
 /// Results about a single element (e.g. a method, parameter, or field)
@@ -188,7 +188,7 @@
 abstract class GlobalTypeInferenceResults<T> {
   // TODO(sigmund): store relevant data & drop reference to inference engine.
   final TypeGraphInferrer<T> _inferrer;
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final Map<MemberEntity, GlobalTypeInferenceMemberResult<T>> _memberResults =
       <MemberEntity, GlobalTypeInferenceMemberResult<T>>{};
   final Map<Local, GlobalTypeInferenceParameterResult<T>> _parameterResults =
@@ -258,11 +258,11 @@
         super(compiler.measurer);
 
   /// Runs the global type-inference algorithm once.
-  void runGlobalTypeInference(FunctionEntity mainElement,
-      ClosedWorld closedWorld, ClosedWorldRefiner closedWorldRefiner) {
+  void runGlobalTypeInference(
+      FunctionEntity mainElement, JClosedWorld closedWorld) {
     measure(() {
       typesInferrerInternal ??= compiler.backendStrategy.createTypesInferrer(
-          closedWorldRefiner,
+          closedWorld,
           disableTypeInference: compiler.disableTypeInference);
       typesInferrerInternal.analyzeMain(mainElement);
       typesInferrerInternal.clear();
diff --git a/pkg/compiler/lib/src/universe/codegen_world_builder.dart b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
index 8301869..bd9dca0 100644
--- a/pkg/compiler/lib/src/universe/codegen_world_builder.dart
+++ b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
@@ -45,9 +45,9 @@
   ConstantValue getConstantFieldInitializer(covariant FieldEntity field);
 
   /// Returns `true` if [member] is invoked as a setter.
-  bool hasInvokedSetter(MemberEntity member, ClosedWorld world);
+  bool hasInvokedSetter(MemberEntity member, JClosedWorld world);
 
-  bool hasInvokedGetter(MemberEntity member, ClosedWorld world);
+  bool hasInvokedGetter(MemberEntity member, JClosedWorld world);
 
   Map<Selector, SelectorConstraints> invocationsByName(String name);
 
@@ -83,7 +83,7 @@
     implements CodegenWorldBuilder {
   final ElementEnvironment _elementEnvironment;
   final NativeBasicData _nativeBasicData;
-  final ClosedWorld _world;
+  final JClosedWorld _world;
 
   /// The set of all directly instantiated classes, that is, classes with a
   /// generative constructor that has been called directly and not only through
@@ -222,7 +222,7 @@
   }
 
   bool _hasMatchingSelector(Map<Selector, SelectorConstraints> selectors,
-      MemberEntity member, ClosedWorld world) {
+      MemberEntity member, JClosedWorld world) {
     if (selectors == null) return false;
     for (Selector selector in selectors.keys) {
       if (selector.appliesUnnamed(member)) {
@@ -235,16 +235,16 @@
     return false;
   }
 
-  bool hasInvocation(MemberEntity member, ClosedWorld world) {
+  bool hasInvocation(MemberEntity member, JClosedWorld world) {
     return _hasMatchingSelector(_invokedNames[member.name], member, world);
   }
 
-  bool hasInvokedGetter(MemberEntity member, ClosedWorld world) {
+  bool hasInvokedGetter(MemberEntity member, JClosedWorld world) {
     return _hasMatchingSelector(_invokedGetters[member.name], member, world) ||
         member.isFunction && methodsNeedingSuperGetter.contains(member);
   }
 
-  bool hasInvokedSetter(MemberEntity member, ClosedWorld world) {
+  bool hasInvokedSetter(MemberEntity member, JClosedWorld world) {
     return _hasMatchingSelector(_invokedSetters[member.name], member, world);
   }
 
@@ -647,7 +647,7 @@
       this._globalLocalsMap,
       ElementEnvironment elementEnvironment,
       NativeBasicData nativeBasicData,
-      ClosedWorld world,
+      JClosedWorld world,
       SelectorConstraintsStrategy selectorConstraintsStrategy)
       : super(elementEnvironment, nativeBasicData, world,
             selectorConstraintsStrategy);
diff --git a/pkg/compiler/lib/src/universe/world_builder.dart b/pkg/compiler/lib/src/universe/world_builder.dart
index 0210724..088849b 100644
--- a/pkg/compiler/lib/src/universe/world_builder.dart
+++ b/pkg/compiler/lib/src/universe/world_builder.dart
@@ -25,7 +25,7 @@
 import '../universe/class_set.dart';
 import '../util/enumset.dart';
 import '../util/util.dart';
-import '../world.dart' show World, ClosedWorld, KClosedWorld, OpenWorld;
+import '../world.dart' show World, JClosedWorld, KClosedWorld, OpenWorld;
 import 'class_hierarchy_builder.dart' show ClassHierarchyBuilder, ClassQueries;
 import 'selector.dart' show Selector;
 import 'use.dart'
@@ -249,7 +249,7 @@
 }
 
 /// The [WorldBuilder] is an auxiliary class used in the process of computing
-/// the [ClosedWorld].
+/// the [JClosedWorld].
 // TODO(johnniwinther): Move common implementation to a [WorldBuilderBase] when
 // universes and worlds have been unified.
 abstract class WorldBuilder {
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index a80698f..4dde4f2 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -29,10 +29,10 @@
 import 'universe/side_effects.dart' show SideEffects, SideEffectsBuilder;
 import 'universe/world_builder.dart';
 
-/// Common superinterface for [OpenWorld] and [ClosedWorld].
+/// Common superinterface for [OpenWorld] and [JClosedWorld].
 abstract class World {}
 
-/// The [ClosedWorld] represents the information known about a program when
+/// The [JClosedWorld] represents the information known about a program when
 /// compiling with closed-world semantics.
 ///
 /// Given the entrypoint of an application, we can track what's reachable from
@@ -40,7 +40,8 @@
 /// JavaScript types are touched, what language features are used, and so on.
 /// This precise knowledge about what's live in the program is later used in
 /// optimizations and other compiler decisions during code generation.
-abstract class ClosedWorld implements World {
+// TODO(johnniwinther): Maybe this should just be called the JWorld.
+abstract class JClosedWorld implements World {
   BackendUsage get backendUsage;
 
   NativeData get nativeData;
@@ -93,10 +94,6 @@
   /// subclass.
   bool isIndirectlyInstantiated(ClassEntity cls);
 
-  /// Returns `true` if [cls] is abstract and thus can only be instantiated
-  /// through subclasses.
-  bool isAbstract(ClassEntity cls);
-
   /// Returns `true` if [cls] is implemented by an instantiated class.
   bool isImplemented(ClassEntity cls);
 
@@ -270,14 +267,14 @@
   /// of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassHierarchyNode getClassHierarchyNode(ClassEntity cls);
 
   /// Returns [ClassSet] for [cls] used to model the extends and implements
   /// relations of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassSet getClassSet(ClassEntity cls);
 
   /// Returns `true` if the field [element] is known to be effectively final.
@@ -345,13 +342,6 @@
   ///
   /// If [cls] is provided, the dump will contain only classes related to [cls].
   String dump([ClassEntity cls]);
-}
-
-/// Interface for computing side effects and uses of elements. This is used
-/// during type inference to compute the [ClosedWorld] for code generation.
-abstract class ClosedWorldRefiner {
-  /// The closed world being refined.
-  ClosedWorld get closedWorld;
 
   /// Registers the executing of [element] as without side effects.
   void registerSideEffectsFree(FunctionEntity element);
@@ -422,7 +412,7 @@
   SUBTYPE,
 }
 
-abstract class ClosedWorldBase implements ClosedWorld, ClosedWorldRefiner {
+abstract class ClosedWorldBase implements JClosedWorld {
   final ConstantSystem constantSystem;
   final NativeData nativeData;
   final InterceptorData interceptorData;
@@ -544,9 +534,6 @@
     return node != null && node.isIndirectlyInstantiated;
   }
 
-  @override
-  bool isAbstract(ClassEntity cls) => cls.isAbstract;
-
   /// Returns `true` if [cls] is implemented by an instantiated class.
   bool isImplemented(ClassEntity cls) {
     return _implementedClasses.contains(cls);
@@ -967,7 +954,7 @@
   /// of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassHierarchyNode getClassHierarchyNode(ClassEntity cls) {
     return _classHierarchyNodes[cls];
   }
@@ -976,7 +963,7 @@
   /// relations of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassSet getClassSet(ClassEntity cls) {
     return _classSets[cls];
   }
@@ -1250,14 +1237,14 @@
   /// of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassHierarchyNode getClassHierarchyNode(ClassEntity cls);
 
   /// Returns [ClassSet] for [cls] used to model the extends and implements
   /// relations of known classes.
   ///
   /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [ClosedWorld].
+  /// methods defined in [JClosedWorld].
   ClassSet getClassSet(ClassEntity cls);
   Iterable<MemberEntity> get liveInstanceMembers;
   Map<ClassEntity, Set<ClassEntity>> get mixinUses;
diff --git a/tests/compiler/dart2js/codegen/expect_annotations_test.dart b/tests/compiler/dart2js/codegen/expect_annotations_test.dart
index 600c8a4..2b0cbfb 100644
--- a/tests/compiler/dart2js/codegen/expect_annotations_test.dart
+++ b/tests/compiler/dart2js/codegen/expect_annotations_test.dart
@@ -9,7 +9,7 @@
 import 'package:compiler/src/inferrer/typemasks/masks.dart';
 import 'package:compiler/src/js_backend/annotations.dart' as optimizerHints;
 import 'package:compiler/src/types/types.dart';
-import 'package:compiler/src/world.dart' show ClosedWorld;
+import 'package:compiler/src/world.dart' show JClosedWorld;
 import '../inference/type_mask_test_helper.dart';
 import '../memory_compiler.dart';
 
@@ -59,7 +59,7 @@
   CompilationResult result =
       await runCompiler(memorySourceFiles: MEMORY_SOURCE_FILES);
   Compiler compiler = result.compiler;
-  ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+  JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
   Expect.isFalse(compiler.compilationFailed, 'Unsuccessful compilation');
   Expect.isNotNull(closedWorld.commonElements.expectNoInlineClass,
       'NoInlineClass is unresolved.');
diff --git a/tests/compiler/dart2js/codegen/jsarray_indexof_test.dart b/tests/compiler/dart2js/codegen/jsarray_indexof_test.dart
index c6d31ac..2c2b74d 100644
--- a/tests/compiler/dart2js/codegen/jsarray_indexof_test.dart
+++ b/tests/compiler/dart2js/codegen/jsarray_indexof_test.dart
@@ -48,7 +48,7 @@
       memorySourceFiles: {'main.dart': source}, options: options);
   Expect.isTrue(result.isSuccess);
   Compiler compiler = result.compiler;
-  ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+  JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
   MemberEntity jsArrayIndexOf =
       findClassMember(closedWorld, 'JSArray', 'indexOf');
   ProgramLookup programLookup = new ProgramLookup(result.compiler);
diff --git a/tests/compiler/dart2js/compiler_helper.dart b/tests/compiler/dart2js/compiler_helper.dart
index 619871d..d0fabb9 100644
--- a/tests/compiler/dart2js/compiler_helper.dart
+++ b/tests/compiler/dart2js/compiler_helper.dart
@@ -80,7 +80,7 @@
       outputProvider: outputCollector);
   Expect.isTrue(result.isSuccess);
   Compiler compiler = result.compiler;
-  ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+  JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   LibraryEntity mainLibrary = elementEnvironment.mainLibrary;
   FunctionEntity element =
diff --git a/tests/compiler/dart2js/end_to_end/exit_code_test.dart b/tests/compiler/dart2js/end_to_end/exit_code_test.dart
index f12e914..5b10bee 100644
--- a/tests/compiler/dart2js/end_to_end/exit_code_test.dart
+++ b/tests/compiler/dart2js/end_to_end/exit_code_test.dart
@@ -112,7 +112,7 @@
             useNewSourceInfo: compiler.options.useNewSourceInfo);
 
   @override
-  WorldImpact codegen(CodegenWorkItem work, ClosedWorld closedWorld) {
+  WorldImpact codegen(CodegenWorkItem work, JClosedWorld closedWorld) {
     compiler.test('Compiler.codegen');
     return super.codegen(work, closedWorld);
   }
diff --git a/tests/compiler/dart2js/generic_methods/generic_method_test.dart b/tests/compiler/dart2js/generic_methods/generic_method_test.dart
index cbe8247..e907015 100644
--- a/tests/compiler/dart2js/generic_methods/generic_method_test.dart
+++ b/tests/compiler/dart2js/generic_methods/generic_method_test.dart
@@ -182,7 +182,7 @@
       Flags.strongMode,
       Flags.disableRtiOptimization,
     ], expectedOutput: OUTPUT, printJs: args.contains('-v'));
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
 
     void checkMethod(String methodName,
diff --git a/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart b/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart
index 6d2478b..4933012 100644
--- a/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart
+++ b/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart
@@ -69,7 +69,7 @@
         options: [Flags.strongMode, Flags.omitImplicitChecks]);
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     ProgramLookup programLookup = new ProgramLookup(compiler);
 
     void checkStubs(ClassEntity element, List<String> expectedStubs) {
diff --git a/tests/compiler/dart2js/helpers/element_lookup.dart b/tests/compiler/dart2js/helpers/element_lookup.dart
index 4ebe13a..6d24abe 100644
--- a/tests/compiler/dart2js/helpers/element_lookup.dart
+++ b/tests/compiler/dart2js/helpers/element_lookup.dart
@@ -5,9 +5,9 @@
 import 'package:compiler/src/common_elements.dart' show ElementEnvironment;
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/elements/types.dart';
-import 'package:compiler/src/world.dart' show ClosedWorld;
+import 'package:compiler/src/world.dart' show JClosedWorld;
 
-ClassEntity findClass(ClosedWorld closedWorld, String name) {
+ClassEntity findClass(JClosedWorld closedWorld, String name) {
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   ClassEntity cls =
       elementEnvironment.lookupClass(elementEnvironment.mainLibrary, name);
@@ -22,7 +22,7 @@
 }
 
 MemberEntity findClassMember(
-    ClosedWorld closedWorld, String className, String memberName) {
+    JClosedWorld closedWorld, String className, String memberName) {
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   ClassEntity cls = findClass(closedWorld, className);
   assert(cls != null, "Class '$className' not found.");
@@ -31,7 +31,7 @@
   return member;
 }
 
-MemberEntity findMember(ClosedWorld closedWorld, String name) {
+MemberEntity findMember(JClosedWorld closedWorld, String name) {
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   MemberEntity member = elementEnvironment.lookupLibraryMember(
       elementEnvironment.mainLibrary, name);
@@ -41,12 +41,12 @@
   return member;
 }
 
-FunctionType findFunctionType(ClosedWorld closedWorld, String name) {
+FunctionType findFunctionType(JClosedWorld closedWorld, String name) {
   FunctionEntity function = findMember(closedWorld, name);
   return closedWorld.elementEnvironment.getFunctionType(function);
 }
 
-DartType findFieldType(ClosedWorld closedWorld, String name) {
+DartType findFieldType(JClosedWorld closedWorld, String name) {
   FieldEntity field = findMember(closedWorld, name);
   return closedWorld.elementEnvironment.getFieldType(field);
 }
diff --git a/tests/compiler/dart2js/inference/load_deferred_library_test.dart b/tests/compiler/dart2js/inference/load_deferred_library_test.dart
index 7cb4515..0db1d83 100644
--- a/tests/compiler/dart2js/inference/load_deferred_library_test.dart
+++ b/tests/compiler/dart2js/inference/load_deferred_library_test.dart
@@ -45,7 +45,7 @@
       memorySourceFiles: {'main.dart': source}, options: options);
   Expect.isTrue(result.isSuccess);
   Compiler compiler = result.compiler;
-  ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+  JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
   AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   LibraryEntity helperLibrary =
diff --git a/tests/compiler/dart2js/inference/map_tracer_test.dart b/tests/compiler/dart2js/inference/map_tracer_test.dart
index b7cab09..e383eab 100644
--- a/tests/compiler/dart2js/inference/map_tracer_test.dart
+++ b/tests/compiler/dart2js/inference/map_tracer_test.dart
@@ -233,7 +233,7 @@
   TypeMask keyType, valueType;
   TypeGraphInferrer typesInferrer =
       compiler.globalInference.typesInferrerInternal;
-  ClosedWorld closedWorld = typesInferrer.closedWorld;
+  JClosedWorld closedWorld = typesInferrer.closedWorld;
   AbstractValueDomain commonMasks = closedWorld.abstractValueDomain;
   TypeMask emptyType = new TypeMask.nonNullEmpty();
   MemberEntity aKey = findMember(closedWorld, 'aKey');
diff --git a/tests/compiler/dart2js/inference/side_effects_test.dart b/tests/compiler/dart2js/inference/side_effects_test.dart
index e60006d..05f713e 100644
--- a/tests/compiler/dart2js/inference/side_effects_test.dart
+++ b/tests/compiler/dart2js/inference/side_effects_test.dart
@@ -28,7 +28,7 @@
 }
 
 abstract class ComputeValueMixin<T> {
-  ClosedWorld get closedWorld;
+  JClosedWorld get closedWorld;
 
   String getMemberValue(MemberEntity member) {
     if (member is FunctionEntity) {
@@ -59,7 +59,7 @@
 /// AST visitor for computing side effects data for a member.
 class SideEffectsIrComputer extends IrDataExtractor
     with ComputeValueMixin<ir.Node> {
-  final ClosedWorld closedWorld;
+  final JClosedWorld closedWorld;
   final KernelToElementMapForBuilding _elementMap;
   final ClosureDataLookup<ir.Node> _closureDataLookup;
 
diff --git a/tests/compiler/dart2js/inference/type_combination_test.dart b/tests/compiler/dart2js/inference/type_combination_test.dart
index 17c6e73..23702fd 100644
--- a/tests/compiler/dart2js/inference/type_combination_test.dart
+++ b/tests/compiler/dart2js/inference/type_combination_test.dart
@@ -104,7 +104,7 @@
   }
 }
 
-void testUnion(ClosedWorld closedWorld) {
+void testUnion(JClosedWorld closedWorld) {
   RuleSet ruleSet = new RuleSet(
       'union', (t1, t2) => simplify(t1.union(t2, closedWorld), closedWorld));
   rule(type1, type2, result) => ruleSet.rule(type1, type2, result);
@@ -415,7 +415,7 @@
   ruleSet.validateCoverage();
 }
 
-void testIntersection(ClosedWorld closedWorld) {
+void testIntersection(JClosedWorld closedWorld) {
   RuleSet ruleSet =
       new RuleSet('intersection', (t1, t2) => t1.intersection(t2, closedWorld));
   rule(type1, type2, result) => ruleSet.rule(type1, type2, result);
@@ -730,7 +730,7 @@
   ruleSet.validateCoverage();
 }
 
-void testRegressions(ClosedWorld closedWorld) {
+void testRegressions(JClosedWorld closedWorld) {
   TypeMask nonNullPotentialString =
       new TypeMask.nonNullSubtype(patternClass, closedWorld);
   Expect.equals(potentialString,
@@ -758,7 +758,7 @@
   }, beforeRun: (compiler) => compiler.stopAfterTypeInference = true);
   Expect.isTrue(result.isSuccess);
   Compiler compiler = result.compiler;
-  ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+  JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
   CommonElements commonElements = closedWorld.commonElements;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
 
diff --git a/tests/compiler/dart2js/inference/type_mask2_test.dart b/tests/compiler/dart2js/inference/type_mask2_test.dart
index 5ce382b..200f245 100644
--- a/tests/compiler/dart2js/inference/type_mask2_test.dart
+++ b/tests/compiler/dart2js/inference/type_mask2_test.dart
@@ -9,7 +9,7 @@
 import 'package:async_helper/async_helper.dart';
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/inferrer/typemasks/masks.dart';
-import 'package:compiler/src/world.dart' show ClosedWorld;
+import 'package:compiler/src/world.dart' show JClosedWorld;
 import '../type_test_helper.dart';
 
 isCheckedMode() {
@@ -35,7 +35,7 @@
   });
 }
 
-checkMasks(ClosedWorld closedWorld, List<ClassEntity> allClasses,
+checkMasks(JClosedWorld closedWorld, List<ClassEntity> allClasses,
     List<FlatTypeMask> masks,
     {FlatTypeMask result,
     List<FlatTypeMask> disjointMasks,
@@ -107,7 +107,7 @@
       }
       """, testBackendWorld: true);
 
-  ClosedWorld closedWorld = env.jClosedWorld;
+  JClosedWorld closedWorld = env.jClosedWorld;
 
   ClassEntity Object_ = env.getElement("Object");
   ClassEntity A = env.getElement("A");
@@ -216,7 +216,7 @@
       }
       """,
       testBackendWorld: true);
-  ClosedWorld closedWorld = env.jClosedWorld;
+  JClosedWorld closedWorld = env.jClosedWorld;
 
   ClassEntity Object_ = env.getElement("Object");
   ClassEntity String_ = env.getElement("String");
diff --git a/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart b/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart
index a1471f4..c3dd1a9 100644
--- a/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart
+++ b/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart
@@ -44,7 +44,7 @@
         await runCompiler(memorySourceFiles: {'main.dart': CODE});
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld world = compiler.backendClosedWorldForTesting;
+    JClosedWorld world = compiler.backendClosedWorldForTesting;
     ElementEnvironment elementEnvironment = world.elementEnvironment;
 
     /// Checks the expectation of `isDisjoint` for two mask. Also checks that
diff --git a/tests/compiler/dart2js/inference/type_mask_test.dart b/tests/compiler/dart2js/inference/type_mask_test.dart
index 159c971..c22d721 100644
--- a/tests/compiler/dart2js/inference/type_mask_test.dart
+++ b/tests/compiler/dart2js/inference/type_mask_test.dart
@@ -27,7 +27,7 @@
         await runCompiler(memorySourceFiles: {'main.dart': CODE});
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
 
     dynamic classA =
diff --git a/tests/compiler/dart2js/inference/type_mask_test_helper.dart b/tests/compiler/dart2js/inference/type_mask_test_helper.dart
index cbaa56f..025d218 100644
--- a/tests/compiler/dart2js/inference/type_mask_test_helper.dart
+++ b/tests/compiler/dart2js/inference/type_mask_test_helper.dart
@@ -5,11 +5,11 @@
 library type_mask_test_helper;
 
 import 'package:compiler/src/inferrer/typemasks/masks.dart';
-import 'package:compiler/src/world.dart' show ClosedWorld;
+import 'package:compiler/src/world.dart' show JClosedWorld;
 
 export 'package:compiler/src/types/types.dart';
 
-TypeMask simplify(TypeMask mask, ClosedWorld closedWorld) {
+TypeMask simplify(TypeMask mask, JClosedWorld closedWorld) {
   if (mask is ForwardingTypeMask) {
     return simplify(mask.forwardTo, closedWorld);
   } else if (mask is UnionTypeMask) {
@@ -19,7 +19,7 @@
   }
 }
 
-TypeMask interceptorOrComparable(ClosedWorld closedWorld,
+TypeMask interceptorOrComparable(JClosedWorld closedWorld,
     {bool nullable: false}) {
   // TODO(johnniwinther): The mock libraries are missing 'Comparable' and
   // therefore consider the union of for instance 'String' and 'num' to be
diff --git a/tests/compiler/dart2js/inference/union_type_test.dart b/tests/compiler/dart2js/inference/union_type_test.dart
index 2f2a73b..a34dceb 100644
--- a/tests/compiler/dart2js/inference/union_type_test.dart
+++ b/tests/compiler/dart2js/inference/union_type_test.dart
@@ -19,7 +19,7 @@
         new B();
       }
       """, testBackendWorld: true);
-    ClosedWorld world = env.jClosedWorld;
+    JClosedWorld world = env.jClosedWorld;
     FlatTypeMask mask1 = new FlatTypeMask.exact(env.getClass('A'));
     FlatTypeMask mask2 = new FlatTypeMask.exact(env.getClass('B'));
     UnionTypeMask union1 = mask1.nonNullable().union(mask2, world);
diff --git a/tests/compiler/dart2js/jsinterop/world_test.dart b/tests/compiler/dart2js/jsinterop/world_test.dart
index a691e29..c47be24 100644
--- a/tests/compiler/dart2js/jsinterop/world_test.dart
+++ b/tests/compiler/dart2js/jsinterop/world_test.dart
@@ -94,7 +94,7 @@
       return cls;
     }
 
-    ClosedWorld world = compiler.backendClosedWorldForTesting;
+    JClosedWorld world = compiler.backendClosedWorldForTesting;
     ElementEnvironment elementEnvironment = world.elementEnvironment;
     ClassEntity Object_ = registerClass(world.commonElements.objectClass);
     ClassEntity Interceptor =
diff --git a/tests/compiler/dart2js/model/class_set_test.dart b/tests/compiler/dart2js/model/class_set_test.dart
index abe99dd..af328ef 100644
--- a/tests/compiler/dart2js/model/class_set_test.dart
+++ b/tests/compiler/dart2js/model/class_set_test.dart
@@ -603,7 +603,7 @@
       """,
       options: strongMode ? [Flags.strongMode] : [],
       testBackendWorld: true);
-  ClosedWorld world = env.jClosedWorld;
+  JClosedWorld world = env.jClosedWorld;
 
   ClassEntity functionClass = world.commonElements.functionClass;
   ClassEntity closureClass = world.commonElements.closureClass;
diff --git a/tests/compiler/dart2js/model/enqueuer_test.dart b/tests/compiler/dart2js/model/enqueuer_test.dart
index 865d3d6..6407ea4 100644
--- a/tests/compiler/dart2js/model/enqueuer_test.dart
+++ b/tests/compiler/dart2js/model/enqueuer_test.dart
@@ -260,7 +260,7 @@
   };
   compiler.onCodegenQueueEmptyForTesting = () {
     Enqueuer enqueuer = compiler.enqueuer.codegenEnqueuerForTesting;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     ElementEnvironment elementEnvironment =
         compiler.backendClosedWorldForTesting.elementEnvironment;
     checkInvariant(enqueuer, elementEnvironment);
diff --git a/tests/compiler/dart2js/model/forwarding_stub_test.dart b/tests/compiler/dart2js/model/forwarding_stub_test.dart
index ed86ed3..234f97b 100644
--- a/tests/compiler/dart2js/model/forwarding_stub_test.dart
+++ b/tests/compiler/dart2js/model/forwarding_stub_test.dart
@@ -30,7 +30,7 @@
         memorySourceFiles: {'main.dart': source}, options: [Flags.strongMode]));
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
     ClassEntity cls =
         elementEnvironment.lookupClass(elementEnvironment.mainLibrary, 'Class');
diff --git a/tests/compiler/dart2js/model/world_test.dart b/tests/compiler/dart2js/model/world_test.dart
index 3c2754c..3abdd5d 100644
--- a/tests/compiler/dart2js/model/world_test.dart
+++ b/tests/compiler/dart2js/model/world_test.dart
@@ -10,7 +10,7 @@
 import 'package:compiler/src/common_elements.dart';
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/universe/class_set.dart';
-import 'package:compiler/src/world.dart' show ClassQuery, ClosedWorld;
+import 'package:compiler/src/world.dart' show ClassQuery, JClosedWorld;
 import '../type_test_helper.dart';
 
 void main() {
@@ -52,7 +52,7 @@
         new html.Worker('');
       }
       """, testBackendWorld: true);
-  ClosedWorld closedWorld = env.jClosedWorld;
+  JClosedWorld closedWorld = env.jClosedWorld;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
 
   ClassEntity Object_ = env.getElement("Object");
@@ -243,7 +243,7 @@
         new H4();
       }
       """, testBackendWorld: true);
-  ClosedWorld closedWorld = env.jClosedWorld;
+  JClosedWorld closedWorld = env.jClosedWorld;
 
   check(String name, {bool hasStrictSubtype, bool hasOnlySubclasses}) {
     ClassEntity cls = env.getElement(name);
@@ -320,7 +320,7 @@
       }
       """,
       testBackendWorld: true);
-  ClosedWorld closedWorld = env.jClosedWorld;
+  JClosedWorld closedWorld = env.jClosedWorld;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   LibraryEntity dart_html = elementEnvironment.lookupLibrary(Uris.dart_html);
 
@@ -545,7 +545,7 @@
       }
       """,
       testBackendWorld: true);
-  ClosedWorld closedWorld = env.jClosedWorld;
+  JClosedWorld closedWorld = env.jClosedWorld;
 
   ClassEntity A = env.getElement("A");
   ClassEntity B = env.getElement("B");
diff --git a/tests/compiler/dart2js/needs_no_such_method_test.dart b/tests/compiler/dart2js/needs_no_such_method_test.dart
index fc9dbaa..68c216b 100644
--- a/tests/compiler/dart2js/needs_no_such_method_test.dart
+++ b/tests/compiler/dart2js/needs_no_such_method_test.dart
@@ -9,7 +9,7 @@
 import 'package:compiler/src/elements/names.dart';
 import 'package:compiler/src/universe/call_structure.dart';
 import 'package:compiler/src/universe/selector.dart';
-import 'package:compiler/src/world.dart' show ClosedWorld, ClassQuery;
+import 'package:compiler/src/world.dart' show JClosedWorld, ClassQuery;
 import 'type_test_helper.dart';
 
 void main() {
@@ -33,7 +33,7 @@
 
 testClassSets() async {
   Selector foo, bar, baz;
-  ClosedWorld closedWorld;
+  JClosedWorld closedWorld;
   ClassEntity superclass, subclass, subtype;
   String testMode;
 
diff --git a/tests/compiler/dart2js/no_such_method_enabled_test.dart b/tests/compiler/dart2js/no_such_method_enabled_test.dart
index 1142b92..f16b55b 100644
--- a/tests/compiler/dart2js/no_such_method_enabled_test.dart
+++ b/tests/compiler/dart2js/no_such_method_enabled_test.dart
@@ -229,7 +229,7 @@
   NoSuchMethodResolver resolver = registry.internalResolverForTesting;
   FunctionEntity ObjectNSM = frontendEnvironment.lookupClassMember(
       compiler.frontendStrategy.commonElements.objectClass, 'noSuchMethod');
-  ClosedWorld backendClosedWorld = compiler.backendClosedWorldForTesting;
+  JClosedWorld backendClosedWorld = compiler.backendClosedWorldForTesting;
   ElementEnvironment backendEnvironment = backendClosedWorld.elementEnvironment;
   NoSuchMethodDataImpl data = backendClosedWorld.noSuchMethodData;
 
diff --git a/tests/compiler/dart2js/receiver_type_test.dart b/tests/compiler/dart2js/receiver_type_test.dart
index 4bfd0e6..50b8fc3 100644
--- a/tests/compiler/dart2js/receiver_type_test.dart
+++ b/tests/compiler/dart2js/receiver_type_test.dart
@@ -44,7 +44,7 @@
     'C': '[exact=C]',
   };
 
-  ClosedWorld closedWorld = env.jClosedWorld;
+  JClosedWorld closedWorld = env.jClosedWorld;
   int closureCount = 0;
   Selector callSelector = new Selector.callClosure(0);
   closedWorld.forEachStrictSubclassOf(closedWorld.commonElements.objectClass,
diff --git a/tests/compiler/dart2js/rti/backend_type_helper_test.dart b/tests/compiler/dart2js/rti/backend_type_helper_test.dart
index 2549436..6bccaa8 100644
--- a/tests/compiler/dart2js/rti/backend_type_helper_test.dart
+++ b/tests/compiler/dart2js/rti/backend_type_helper_test.dart
@@ -19,7 +19,7 @@
         entryPoint: Platform.script.resolve('data/subtype_named_args.dart'));
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     ProgramLookup programLookup = new ProgramLookup(compiler);
 
     List<ClassEntity> found = <ClassEntity>[];
diff --git a/tests/compiler/dart2js/rti/disable_rti_test.dart b/tests/compiler/dart2js/rti/disable_rti_test.dart
index c420f57..a199849 100644
--- a/tests/compiler/dart2js/rti/disable_rti_test.dart
+++ b/tests/compiler/dart2js/rti/disable_rti_test.dart
@@ -62,7 +62,7 @@
         options: [Flags.disableRtiOptimization, Flags.disableInlining]);
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
     RuntimeTypesNeed rtiNeed = closedWorld.rtiNeed;
     ProgramLookup programLookup = new ProgramLookup(compiler);
diff --git a/tests/compiler/dart2js/rti/factory_call_test.dart b/tests/compiler/dart2js/rti/factory_call_test.dart
index 9d3f08f..5c0628e 100644
--- a/tests/compiler/dart2js/rti/factory_call_test.dart
+++ b/tests/compiler/dart2js/rti/factory_call_test.dart
@@ -43,7 +43,7 @@
         memorySourceFiles: {'main.dart': code}, options: [Flags.strongMode]);
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     RuntimeTypesNeed rtiNeed = closedWorld.rtiNeed;
     ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
     ProgramLookup programLookup = new ProgramLookup(compiler);
diff --git a/tests/compiler/dart2js/rti/instance_call_test.dart b/tests/compiler/dart2js/rti/instance_call_test.dart
index 337bae0..9d220f9 100644
--- a/tests/compiler/dart2js/rti/instance_call_test.dart
+++ b/tests/compiler/dart2js/rti/instance_call_test.dart
@@ -103,7 +103,7 @@
         options: [Flags.strongMode, Flags.omitImplicitChecks]);
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
     RuntimeTypesNeed rtiNeed = closedWorld.rtiNeed;
     ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
     ProgramLookup programLookup = new ProgramLookup(compiler);
diff --git a/tests/compiler/dart2js/rti/type_representation_test.dart b/tests/compiler/dart2js/rti/type_representation_test.dart
index 167ab47..ffb6fbd 100644
--- a/tests/compiler/dart2js/rti/type_representation_test.dart
+++ b/tests/compiler/dart2js/rti/type_representation_test.dart
@@ -109,7 +109,7 @@
     return stringify(name);
   }
 
-  ClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+  JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   String func = backend.namer.functionTypeTag;
   String ret = backend.namer.functionTypeReturnTypeTag;
diff --git a/tests/compiler/dart2js/type_test_helper.dart b/tests/compiler/dart2js/type_test_helper.dart
index 142da6d..1aed7af 100644
--- a/tests/compiler/dart2js/type_test_helper.dart
+++ b/tests/compiler/dart2js/type_test_helper.dart
@@ -13,7 +13,7 @@
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/frontend_strategy.dart';
 import 'package:compiler/src/kernel/kernel_strategy.dart';
-import 'package:compiler/src/world.dart' show ClosedWorld, KClosedWorld;
+import 'package:compiler/src/world.dart' show JClosedWorld, KClosedWorld;
 import 'memory_compiler.dart' as memory;
 
 DartType instantiate(ClassEntity element, List<DartType> arguments) {
@@ -193,7 +193,7 @@
     return types.isPotentialSubtype(T, S);
   }
 
-  ClosedWorld get jClosedWorld {
+  JClosedWorld get jClosedWorld {
     assert(testBackendWorld);
     return compiler.backendClosedWorldForTesting;
   }