| Index: pkg/compiler/lib/src/serialization/modelz.dart | 
| diff --git a/pkg/compiler/lib/src/serialization/modelz.dart b/pkg/compiler/lib/src/serialization/modelz.dart | 
| index 3f5f839afe7ffa4d9be9d0cb58269041844e039e..ad3390222283ae54ee04ec0506a02dad24ff2d40 100644 | 
| --- a/pkg/compiler/lib/src/serialization/modelz.dart | 
| +++ b/pkg/compiler/lib/src/serialization/modelz.dart | 
| @@ -971,6 +971,9 @@ class NamedMixinApplicationElementZ extends ClassElementZ | 
|  | 
| @override | 
| InterfaceType get mixinType => _mixinType ??= _decoder.getType(Key.MIXIN); | 
| + | 
| +  @override | 
| +  ClassElement get subclass => null; | 
| } | 
|  | 
| class UnnamedMixinApplicationElementZ extends ElementZ | 
| @@ -984,7 +987,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| MixinApplicationElementCommon, | 
| MixinApplicationElementMixin { | 
| final String name; | 
| -  final ClassElement _subclass; | 
| +  final ClassElement subclass; | 
| final InterfaceType _supertypeBase; | 
| final InterfaceType _mixinBase; | 
| InterfaceType _supertype; | 
| @@ -993,14 +996,13 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| Link<ConstructorElement> _constructors; | 
|  | 
| UnnamedMixinApplicationElementZ( | 
| -      ClassElement subclass, InterfaceType supertype, InterfaceType mixin) | 
| -      : this._subclass = subclass, | 
| -        this._supertypeBase = supertype, | 
| +      this.subclass, InterfaceType supertype, InterfaceType mixin) | 
| +      : this._supertypeBase = supertype, | 
| this._mixinBase = mixin, | 
| this.name = "${supertype.name}+${mixin.name}"; | 
|  | 
| @override | 
| -  CompilationUnitElement get compilationUnit => _subclass.compilationUnit; | 
| +  CompilationUnitElement get compilationUnit => subclass.compilationUnit; | 
|  | 
| @override | 
| bool get isTopLevel => true; | 
| @@ -1035,7 +1037,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| // Create synthetic type variables for the mixin application. | 
| List<DartType> typeVariables = <DartType>[]; | 
| int index = 0; | 
| -    for (TypeVariableType type in _subclass.typeVariables) { | 
| +    for (TypeVariableType type in subclass.typeVariables) { | 
| SyntheticTypeVariableElementZ typeVariableElement = | 
| new SyntheticTypeVariableElementZ(this, index, type.name); | 
| TypeVariableType typeVariable = new TypeVariableType(typeVariableElement); | 
| @@ -1043,12 +1045,12 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| index++; | 
| } | 
| // Setup bounds on the synthetic type variables. | 
| -    for (TypeVariableType type in _subclass.typeVariables) { | 
| +    for (TypeVariableType type in subclass.typeVariables) { | 
| TypeVariableType typeVariable = typeVariables[type.element.index]; | 
| SyntheticTypeVariableElementZ typeVariableElement = typeVariable.element; | 
| typeVariableElement._type = typeVariable; | 
| typeVariableElement._bound = | 
| -          type.element.bound.subst(typeVariables, _subclass.typeVariables); | 
| +          type.element.bound.subst(typeVariables, subclass.typeVariables); | 
| } | 
| return typeVariables; | 
| } | 
| @@ -1067,7 +1069,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| //    abstract class S+M<S+M.T> extends S<S+M.T> implements M<S+M.T> {} | 
| // but the supertype is provided as S<C.T> and we need to substitute S+M.T | 
| // for C.T. | 
| -      _supertype = _supertypeBase.subst(typeVariables, _subclass.typeVariables); | 
| +      _supertype = _supertypeBase.subst(typeVariables, subclass.typeVariables); | 
| } | 
| return _supertype; | 
| } | 
| @@ -1087,7 +1089,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| // but the mixin is provided as M<C.T> and we need to substitute S+M.T | 
| // for C.T. | 
| _interfaces = const Link<DartType>() | 
| -          .prepend(_mixinBase.subst(typeVariables, _subclass.typeVariables)); | 
| +          .prepend(_mixinBase.subst(typeVariables, subclass.typeVariables)); | 
| } | 
| return _interfaces; | 
| } | 
| @@ -1107,7 +1109,7 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| } | 
|  | 
| @override | 
| -  Element get enclosingElement => _subclass.enclosingElement; | 
| +  Element get enclosingElement => subclass.enclosingElement; | 
|  | 
| @override | 
| bool get isObject => false; | 
| @@ -1122,10 +1124,10 @@ class UnnamedMixinApplicationElementZ extends ElementZ | 
| InterfaceType get mixinType => interfaces.head; | 
|  | 
| @override | 
| -  int get sourceOffset => _subclass.sourceOffset; | 
| +  int get sourceOffset => subclass.sourceOffset; | 
|  | 
| @override | 
| -  SourceSpan get sourcePosition => _subclass.sourcePosition; | 
| +  SourceSpan get sourcePosition => subclass.sourcePosition; | 
| } | 
|  | 
| class EnumClassElementZ extends ClassElementZ implements EnumClassElement { | 
|  |