| Index: pkg/compiler/lib/src/types/flat_type_mask.dart
 | 
| diff --git a/pkg/compiler/lib/src/types/flat_type_mask.dart b/pkg/compiler/lib/src/types/flat_type_mask.dart
 | 
| index 380c2fb1a25cfddf8642cb8c53b4f7bd193538c6..b1b6ca55b079127525384d158126649ae8dcc6f6 100644
 | 
| --- a/pkg/compiler/lib/src/types/flat_type_mask.dart
 | 
| +++ b/pkg/compiler/lib/src/types/flat_type_mask.dart
 | 
| @@ -121,21 +121,22 @@ class FlatTypeMask implements TypeMask {
 | 
|      // not track correctly the list of truly instantiated classes.
 | 
|      Backend backend = classWorld.backend;
 | 
|      if (containsOnlyString(classWorld)) {
 | 
| -      return cls == classWorld.stringClass ||
 | 
| +      return cls == classWorld.coreClasses.stringClass ||
 | 
|            cls == backend.stringImplementation;
 | 
|      }
 | 
|      if (containsOnlyBool(classWorld)) {
 | 
| -      return cls == classWorld.boolClass || cls == backend.boolImplementation;
 | 
| +      return cls == classWorld.coreClasses.boolClass ||
 | 
| +          cls == backend.boolImplementation;
 | 
|      }
 | 
|      if (containsOnlyInt(classWorld)) {
 | 
| -      return cls == classWorld.intClass ||
 | 
| +      return cls == classWorld.coreClasses.intClass ||
 | 
|            cls == backend.intImplementation ||
 | 
|            cls == backend.positiveIntImplementation ||
 | 
|            cls == backend.uint32Implementation ||
 | 
|            cls == backend.uint31Implementation;
 | 
|      }
 | 
|      if (containsOnlyDouble(classWorld)) {
 | 
| -      return cls == classWorld.doubleClass ||
 | 
| +      return cls == classWorld.coreClasses.doubleClass ||
 | 
|            cls == backend.doubleImplementation;
 | 
|      }
 | 
|      return false;
 | 
| @@ -165,7 +166,7 @@ class FlatTypeMask implements TypeMask {
 | 
|      // TODO(herhut): Add check whether flatOther.base is superclass of
 | 
|      //               all subclasses of this.base.
 | 
|      if (flatOther.isSubclass) {
 | 
| -      if (isSubtype) return (otherBase == classWorld.objectClass);
 | 
| +      if (isSubtype) return (otherBase == classWorld.coreClasses.objectClass);
 | 
|        return classWorld.isSubclassOf(base, otherBase);
 | 
|      }
 | 
|      assert(flatOther.isSubtype);
 | 
| @@ -179,7 +180,7 @@ class FlatTypeMask implements TypeMask {
 | 
|  
 | 
|    bool containsOnlyInt(ClassWorld classWorld) {
 | 
|      Backend backend = classWorld.backend;
 | 
| -    return base == classWorld.intClass ||
 | 
| +    return base == classWorld.coreClasses.intClass ||
 | 
|          base == backend.intImplementation ||
 | 
|          base == backend.positiveIntImplementation ||
 | 
|          base == backend.uint31Implementation ||
 | 
| @@ -188,7 +189,7 @@ class FlatTypeMask implements TypeMask {
 | 
|  
 | 
|    bool containsOnlyDouble(ClassWorld classWorld) {
 | 
|      Backend backend = classWorld.backend;
 | 
| -    return base == classWorld.doubleClass ||
 | 
| +    return base == classWorld.coreClasses.doubleClass ||
 | 
|          base == backend.doubleImplementation;
 | 
|    }
 | 
|  
 | 
| @@ -196,18 +197,19 @@ class FlatTypeMask implements TypeMask {
 | 
|      Backend backend = classWorld.backend;
 | 
|      return containsOnlyInt(classWorld) ||
 | 
|          containsOnlyDouble(classWorld) ||
 | 
| -        base == classWorld.numClass ||
 | 
| +        base == classWorld.coreClasses.numClass ||
 | 
|          base == backend.numImplementation;
 | 
|    }
 | 
|  
 | 
|    bool containsOnlyBool(ClassWorld classWorld) {
 | 
|      Backend backend = classWorld.backend;
 | 
| -    return base == classWorld.boolClass || base == backend.boolImplementation;
 | 
| +    return base == classWorld.coreClasses.boolClass ||
 | 
| +        base == backend.boolImplementation;
 | 
|    }
 | 
|  
 | 
|    bool containsOnlyString(ClassWorld classWorld) {
 | 
|      Backend backend = classWorld.backend;
 | 
| -    return base == classWorld.stringClass ||
 | 
| +    return base == classWorld.coreClasses.stringClass ||
 | 
|          base == backend.stringImplementation;
 | 
|    }
 | 
|  
 | 
| @@ -245,7 +247,7 @@ class FlatTypeMask implements TypeMask {
 | 
|     */
 | 
|    bool containsAll(ClassWorld classWorld) {
 | 
|      if (isEmptyOrNull || isExact) return false;
 | 
| -    return identical(base, classWorld.objectClass);
 | 
| +    return identical(base, classWorld.coreClasses.objectClass);
 | 
|    }
 | 
|  
 | 
|    TypeMask union(TypeMask other, ClassWorld classWorld) {
 | 
| @@ -299,7 +301,8 @@ class FlatTypeMask implements TypeMask {
 | 
|      assert(TypeMask.assertIsNormalized(this, classWorld));
 | 
|      assert(TypeMask.assertIsNormalized(other, classWorld));
 | 
|      int combined;
 | 
| -    if ((isExact && other.isExact) || base == classWorld.objectClass) {
 | 
| +    if ((isExact && other.isExact) ||
 | 
| +        base == classWorld.coreClasses.objectClass) {
 | 
|        // Since the other mask is a subclass of this mask, we need the
 | 
|        // resulting union to be a subclass too. If either one of the
 | 
|        // masks are nullable the result should be nullable too.
 | 
| @@ -684,7 +687,7 @@ class FlatTypeMask implements TypeMask {
 | 
|    Element locateSingleElement(Selector selector, Compiler compiler) {
 | 
|      if (isEmptyOrNull) return null;
 | 
|      Iterable<Element> targets =
 | 
| -        compiler.world.allFunctions.filter(selector, this);
 | 
| +        compiler.closedWorld.allFunctions.filter(selector, this);
 | 
|      if (targets.length != 1) return null;
 | 
|      Element result = targets.first;
 | 
|      ClassElement enclosing = result.enclosingClass;
 | 
| @@ -692,7 +695,7 @@ class FlatTypeMask implements TypeMask {
 | 
|      // all classes in the receiver type [this]. It could be found only in a
 | 
|      // subclass or in an inheritance-wise unrelated class in case of subtype
 | 
|      // selectors.
 | 
| -    ClassWorld classWorld = compiler.world;
 | 
| +    ClassWorld classWorld = compiler.closedWorld;
 | 
|      if (isSubtype) {
 | 
|        // if (classWorld.isUsedAsMixin(enclosing)) {
 | 
|        if (classWorld.everySubtypeIsSubclassOfOrMixinUseOf(base, enclosing)) {
 | 
| 
 |