| 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 4a0d17eda9cd8927a1d4bc152becd8af01c66805..dc6ede2ad788a04d6d153792e6dd75df82d3026f 100644 | 
| --- a/pkg/compiler/lib/src/serialization/modelz.dart | 
| +++ b/pkg/compiler/lib/src/serialization/modelz.dart | 
| @@ -309,10 +309,19 @@ abstract class ContainerMixin | 
|  | 
| class AbstractFieldElementZ extends ElementZ implements AbstractFieldElement { | 
| final String name; | 
| -  final FunctionElement getter; | 
| -  final FunctionElement setter; | 
| +  final GetterElementZ getter; | 
| +  final SetterElementZ setter; | 
|  | 
| -  AbstractFieldElementZ(this.name, this.getter, this.setter); | 
| +  AbstractFieldElementZ(this.name, this.getter, this.setter) { | 
| +    if (getter != null) { | 
| +      getter.abstractField = this; | 
| +      getter.setter = setter; | 
| +    } | 
| +    if (setter != null) { | 
| +      setter.abstractField = this; | 
| +      setter.getter = getter; | 
| +    } | 
| +  } | 
|  | 
| FunctionElement get _canonicalElement => getter != null ? getter : setter; | 
|  | 
| @@ -1349,7 +1358,7 @@ abstract class FunctionElementZ extends DeserializedElementZ | 
|  | 
| @override | 
| accept(ElementVisitor visitor, arg) { | 
| -    return visitor.visitFunctionElement(this, arg); | 
| +    return visitor.visitMethodElement(this, arg); | 
| } | 
|  | 
| @override | 
| @@ -1422,7 +1431,7 @@ class LocalFunctionElementZ extends DeserializedElementZ | 
|  | 
| @override | 
| accept(ElementVisitor visitor, arg) { | 
| -    return visitor.visitFunctionElement(this, arg); | 
| +    return visitor.visitLocalFunctionElement(this, arg); | 
| } | 
|  | 
| @override | 
| @@ -1436,7 +1445,10 @@ abstract class GetterElementZ extends DeserializedElementZ | 
| ParametersMixin, | 
| TypedElementMixin, | 
| MemberElementMixin | 
| -    implements FunctionElement { | 
| +    implements GetterElement { | 
| + | 
| +  AbstractFieldElement abstractField; | 
| +  SetterElement setter; | 
|  | 
| GetterElementZ(ObjectDecoder decoder) | 
| : super(decoder); | 
| @@ -1446,7 +1458,7 @@ abstract class GetterElementZ extends DeserializedElementZ | 
|  | 
| @override | 
| accept(ElementVisitor visitor, arg) { | 
| -    return visitor.visitFunctionElement(this, arg); | 
| +    return visitor.visitGetterElement(this, arg); | 
| } | 
| } | 
|  | 
| @@ -1474,7 +1486,10 @@ abstract class SetterElementZ extends DeserializedElementZ | 
| ParametersMixin, | 
| TypedElementMixin, | 
| MemberElementMixin | 
| -    implements FunctionElement { | 
| +    implements SetterElement { | 
| + | 
| +  AbstractFieldElement abstractField; | 
| +  GetterElement getter; | 
|  | 
| SetterElementZ(ObjectDecoder decoder) | 
| : super(decoder); | 
| @@ -1484,7 +1499,7 @@ abstract class SetterElementZ extends DeserializedElementZ | 
|  | 
| @override | 
| accept(ElementVisitor visitor, arg) { | 
| -    return visitor.visitFunctionElement(this, arg); | 
| +    return visitor.visitSetterElement(this, arg); | 
| } | 
| } | 
|  | 
|  |