| Index: pkg/front_end/lib/src/fasta/parser/listener.dart
 | 
| diff --git a/pkg/front_end/lib/src/fasta/parser/listener.dart b/pkg/front_end/lib/src/fasta/parser/listener.dart
 | 
| index 5a400b94e4a5d7804b90b70da31aa87dd313f445..df25650225671cfd3f4840b8f2a173d6b1926f3a 100644
 | 
| --- a/pkg/front_end/lib/src/fasta/parser/listener.dart
 | 
| +++ b/pkg/front_end/lib/src/fasta/parser/listener.dart
 | 
| @@ -233,13 +233,22 @@ class Listener {
 | 
|  
 | 
|    void beginFunctionTypeAlias(Token token) {}
 | 
|  
 | 
| -  /// Handle the end of a typedef declaration.  Substructures:
 | 
| +  /// Handle the end of a typedef declaration.
 | 
| +  ///
 | 
| +  /// If [equals] is null, then we have the following substructures:
 | 
|    /// - Metadata
 | 
|    /// - Return type
 | 
|    /// - Name (identifier)
 | 
| -  /// - Type variables
 | 
| +  /// - Template variables (type variables to the template)
 | 
|    /// - Formal parameters
 | 
| -  void endFunctionTypeAlias(Token typedefKeyword, Token endToken) {
 | 
| +  ///
 | 
| +  /// If [equals] is not null, then the have the following substructures:
 | 
| +  /// - Metadata
 | 
| +  /// - Name (identifier)
 | 
| +  /// - Template variables (type variables to the template)
 | 
| +  /// - Type (FunctionTypeAnnotation)
 | 
| +  void endFunctionTypeAlias(
 | 
| +      Token typedefKeyword, Token equals, Token endToken) {
 | 
|      logEvent("FunctionTypeAlias");
 | 
|    }
 | 
|  
 | 
| @@ -263,7 +272,7 @@ class Listener {
 | 
|    /// - mixin application
 | 
|    /// - implemented types (TypeList)
 | 
|    ///
 | 
| -  /// TODO(paulberry,ahe): it seems incosistent that for a named mixin
 | 
| +  /// TODO(paulberry,ahe): it seems inconsistent that for a named mixin
 | 
|    /// application, the implemented types are a TypeList, whereas for a class
 | 
|    /// declaration, each implemented type is listed separately on the stack, and
 | 
|    /// the number of implemented types is passed as a parameter.
 | 
| @@ -634,10 +643,18 @@ class Listener {
 | 
|      logEvent("TryStatement");
 | 
|    }
 | 
|  
 | 
| -  void endType(Token beginToken, Token endToken) {
 | 
| +  void handleType(Token beginToken, Token endToken) {
 | 
|      logEvent("Type");
 | 
|    }
 | 
|  
 | 
| +  void handleNoName(Token token) {
 | 
| +    logEvent("NoName");
 | 
| +  }
 | 
| +
 | 
| +  void handleFunctionType(Token functionToken, Token endToken) {
 | 
| +    logEvent("FunctionType");
 | 
| +  }
 | 
| +
 | 
|    void beginTypeArguments(Token token) {}
 | 
|  
 | 
|    void endTypeArguments(int count, Token beginToken, Token endToken) {
 | 
| 
 |