| Index: pkg/compiler/lib/src/compiler.dart
 | 
| diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
 | 
| index c7d00d86ee179ed61a4f472d2254a4c2290556e5..4b90f49a60df6b4ac33d555860c3a7adba6fd07d 100644
 | 
| --- a/pkg/compiler/lib/src/compiler.dart
 | 
| +++ b/pkg/compiler/lib/src/compiler.dart
 | 
| @@ -77,7 +77,7 @@ import 'universe/universe.dart' show Universe;
 | 
|  import 'universe/use.dart' show StaticUse;
 | 
|  import 'universe/world_impact.dart' show ImpactStrategy, WorldImpact;
 | 
|  import 'util/util.dart' show Link, Setlet;
 | 
| -import 'world.dart' show World;
 | 
| +import 'world.dart' show ClosedWorld, ClosedWorldRefiner, World;
 | 
|  
 | 
|  typedef Backend MakeBackendFuncion(Compiler compiler);
 | 
|  
 | 
| @@ -88,7 +88,7 @@ abstract class Compiler implements LibraryLoaderListener {
 | 
|    Measurer get measurer;
 | 
|  
 | 
|    final IdGenerator idGenerator = new IdGenerator();
 | 
| -  World world;
 | 
| +  World _world;
 | 
|    Types types;
 | 
|    _CompilerCoreTypes _coreTypes;
 | 
|    CompilerDiagnosticReporter _reporter;
 | 
| @@ -225,7 +225,7 @@ abstract class Compiler implements LibraryLoaderListener {
 | 
|          this.userOutputProvider = outputProvider == null
 | 
|              ? const NullCompilerOutput()
 | 
|              : outputProvider {
 | 
| -    world = new World(this);
 | 
| +    _world = new World(this);
 | 
|      if (makeReporter != null) {
 | 
|        _reporter = makeReporter(this, options);
 | 
|      } else {
 | 
| @@ -302,6 +302,16 @@ abstract class Compiler implements LibraryLoaderListener {
 | 
|      tasks.addAll(backend.tasks);
 | 
|    }
 | 
|  
 | 
| +  /// The world currently being computed by resolution. This forms a basis for
 | 
| +  /// the [inferenceWorld] and later the [closedWorld].
 | 
| +  World get openWorld => _world;
 | 
| +
 | 
| +  /// The closed world after resolution but currently refined by inference.
 | 
| +  ClosedWorldRefiner get inferenceWorld => _world;
 | 
| +
 | 
| +  /// The closed world after resolution and inference.
 | 
| +  ClosedWorld get closedWorld => _world;
 | 
| +
 | 
|    /// Creates the scanner task.
 | 
|    ///
 | 
|    /// Override this to mock the scanner for testing.
 | 
| @@ -314,7 +324,7 @@ abstract class Compiler implements LibraryLoaderListener {
 | 
|    /// Override this to mock the resolver for testing.
 | 
|    ResolverTask createResolverTask() {
 | 
|      return new ResolverTask(
 | 
| -        resolution, backend.constantCompilerTask, world, measurer);
 | 
| +        resolution, backend.constantCompilerTask, openWorld, measurer);
 | 
|    }
 | 
|  
 | 
|    Universe get resolverWorld => enqueuer.resolution.universe;
 | 
| @@ -709,7 +719,7 @@ abstract class Compiler implements LibraryLoaderListener {
 | 
|          assert(mainFunction != null);
 | 
|          phase = PHASE_DONE_RESOLVING;
 | 
|  
 | 
| -        world.populate();
 | 
| +        openWorld.populate();
 | 
|          // Compute whole-program-knowledge that the backend needs. (This might
 | 
|          // require the information computed in [world.populate].)
 | 
|          backend.onResolutionComplete();
 | 
| @@ -1982,7 +1992,7 @@ class _CompilerResolution implements Resolution {
 | 
|  
 | 
|    @override
 | 
|    void registerClass(ClassElement cls) {
 | 
| -    compiler.world.registerClass(cls);
 | 
| +    compiler.openWorld.registerClass(cls);
 | 
|    }
 | 
|  
 | 
|    @override
 | 
| 
 |