| 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 1c67709689de69bea2846a7a99078fc52d62a521..e0c60ba8b9a130cff42fcc1f4d91efb91440b61d 100644 | 
| --- a/pkg/compiler/lib/src/serialization/modelz.dart | 
| +++ b/pkg/compiler/lib/src/serialization/modelz.dart | 
| @@ -788,6 +788,8 @@ abstract class ParametersMixin | 
| namedParameterTypes.add(parameter.type); | 
| } | 
| } | 
| +      List<DartType> typeVariables = | 
| +          _decoder.getTypes(Key.TYPE_VARIABLES, isOptional: true); | 
|  | 
| FunctionType type = new FunctionType( | 
| this, | 
| @@ -797,6 +799,7 @@ abstract class ParametersMixin | 
| namedParameters, | 
| namedParameterTypes); | 
| _functionSignature = new FunctionSignatureX( | 
| +          typeVariables: typeVariables, | 
| requiredParameters: requiredParameters, | 
| requiredParameterCount: requiredParameterCount, | 
| optionalParameters: optionalParameters, | 
| @@ -1873,7 +1876,7 @@ class TypedefElementZ extends DeserializedElementZ | 
| class TypeVariableElementZ extends DeserializedElementZ | 
| with AnalyzableElementMixin, AstElementMixinZ, TypedElementMixin | 
| implements TypeVariableElement { | 
| -  TypeDeclarationElement _typeDeclaration; | 
| +  GenericElement _typeDeclaration; | 
| TypeVariableType _type; | 
| DartType _bound; | 
| Name _memberName; | 
| @@ -1910,7 +1913,7 @@ class TypeVariableElementZ extends DeserializedElementZ | 
| int get index => _decoder.getInt(Key.INDEX); | 
|  | 
| @override | 
| -  TypeDeclarationElement get typeDeclaration { | 
| +  GenericElement get typeDeclaration { | 
| if (_typeDeclaration == null) { | 
| _typeDeclaration = _decoder.getElement(Key.TYPE_DECLARATION); | 
| } | 
|  |