| Index: pkg/front_end/lib/src/fasta/analyzer/token_utils.dart
 | 
| diff --git a/pkg/front_end/lib/src/fasta/analyzer/token_utils.dart b/pkg/front_end/lib/src/fasta/analyzer/token_utils.dart
 | 
| index debd20b5b9f14a5f528f90f105b48c6ddd783a20..41481c724aeb87a1e27d401621ed6d5fae9cc054 100644
 | 
| --- a/pkg/front_end/lib/src/fasta/analyzer/token_utils.dart
 | 
| +++ b/pkg/front_end/lib/src/fasta/analyzer/token_utils.dart
 | 
| @@ -4,46 +4,38 @@
 | 
|  
 | 
|  library fasta.analyzer.token_utils;
 | 
|  
 | 
| -import 'package:front_end/src/fasta/parser/error_kind.dart' show
 | 
| -    ErrorKind;
 | 
| +import 'package:front_end/src/fasta/parser/error_kind.dart' show ErrorKind;
 | 
|  
 | 
| -import 'package:front_end/src/fasta/scanner/error_token.dart' show
 | 
| -    ErrorToken;
 | 
| +import 'package:front_end/src/fasta/scanner/error_token.dart' show ErrorToken;
 | 
|  
 | 
| -import 'package:front_end/src/fasta/scanner/keyword.dart' show
 | 
| -    Keyword;
 | 
| +import 'package:front_end/src/fasta/scanner/keyword.dart' show Keyword;
 | 
|  
 | 
|  import 'package:front_end/src/fasta/scanner/precedence.dart';
 | 
|  
 | 
| -import 'package:front_end/src/fasta/scanner/token.dart' show
 | 
| -    BeginGroupToken,
 | 
| -    KeywordToken,
 | 
| -    StringToken,
 | 
| -    SymbolToken,
 | 
| -    Token;
 | 
| +import 'package:front_end/src/fasta/scanner/token.dart'
 | 
| +    show BeginGroupToken, KeywordToken, StringToken, SymbolToken, Token;
 | 
|  
 | 
|  import 'package:front_end/src/fasta/scanner/token_constants.dart';
 | 
|  
 | 
| -import 'package:front_end/src/scanner/token.dart' as analyzer show
 | 
| -    BeginToken,
 | 
| -    BeginTokenWithComment,
 | 
| -    CommentToken,
 | 
| -    Keyword,
 | 
| -    KeywordToken,
 | 
| -    KeywordTokenWithComment,
 | 
| -    StringToken,
 | 
| -    StringTokenWithComment,
 | 
| -    Token,
 | 
| -    TokenWithComment;
 | 
| +import 'package:front_end/src/scanner/token.dart' as analyzer
 | 
| +    show
 | 
| +        BeginToken,
 | 
| +        BeginTokenWithComment,
 | 
| +        CommentToken,
 | 
| +        Keyword,
 | 
| +        KeywordToken,
 | 
| +        KeywordTokenWithComment,
 | 
| +        StringToken,
 | 
| +        StringTokenWithComment,
 | 
| +        Token,
 | 
| +        TokenWithComment;
 | 
|  
 | 
| -import 'package:front_end/src/scanner/errors.dart' as analyzer show
 | 
| -    ScannerErrorCode;
 | 
| +import 'package:front_end/src/scanner/errors.dart' as analyzer
 | 
| +    show ScannerErrorCode;
 | 
|  
 | 
| -import 'package:analyzer/dart/ast/token.dart' show
 | 
| -    TokenType;
 | 
| +import 'package:analyzer/dart/ast/token.dart' show TokenType;
 | 
|  
 | 
| -import '../errors.dart' show
 | 
| -    internalError;
 | 
| +import '../errors.dart' show internalError;
 | 
|  
 | 
|  /// Class capable of converting a stream of Fasta tokens to a stream of analyzer
 | 
|  /// tokens.
 | 
| @@ -631,82 +623,147 @@ final _keywordMap = {
 | 
|  
 | 
|  TokenType getTokenType(Token token) {
 | 
|    switch (token.kind) {
 | 
| -    case EOF_TOKEN: return TokenType.EOF;
 | 
| -    case DOUBLE_TOKEN: return TokenType.DOUBLE;
 | 
| -    case HEXADECIMAL_TOKEN: return TokenType.HEXADECIMAL;
 | 
| -    case IDENTIFIER_TOKEN: return TokenType.IDENTIFIER;
 | 
| -    case INT_TOKEN: return TokenType.INT;
 | 
| -    case KEYWORD_TOKEN: return TokenType.KEYWORD;
 | 
| +    case EOF_TOKEN:
 | 
| +      return TokenType.EOF;
 | 
| +    case DOUBLE_TOKEN:
 | 
| +      return TokenType.DOUBLE;
 | 
| +    case HEXADECIMAL_TOKEN:
 | 
| +      return TokenType.HEXADECIMAL;
 | 
| +    case IDENTIFIER_TOKEN:
 | 
| +      return TokenType.IDENTIFIER;
 | 
| +    case INT_TOKEN:
 | 
| +      return TokenType.INT;
 | 
| +    case KEYWORD_TOKEN:
 | 
| +      return TokenType.KEYWORD;
 | 
|      // case MULTI_LINE_COMMENT_TOKEN: return TokenType.MULTI_LINE_COMMENT;
 | 
|      // case SCRIPT_TAG_TOKEN: return TokenType.SCRIPT_TAG;
 | 
|      // case SINGLE_LINE_COMMENT_TOKEN: return TokenType.SINGLE_LINE_COMMENT;
 | 
| -    case STRING_TOKEN: return TokenType.STRING;
 | 
| -    case AMPERSAND_TOKEN: return TokenType.AMPERSAND;
 | 
| -    case AMPERSAND_AMPERSAND_TOKEN: return TokenType.AMPERSAND_AMPERSAND;
 | 
| +    case STRING_TOKEN:
 | 
| +      return TokenType.STRING;
 | 
| +    case AMPERSAND_TOKEN:
 | 
| +      return TokenType.AMPERSAND;
 | 
| +    case AMPERSAND_AMPERSAND_TOKEN:
 | 
| +      return TokenType.AMPERSAND_AMPERSAND;
 | 
|      // case AMPERSAND_AMPERSAND_EQ_TOKEN:
 | 
|      //   return TokenType.AMPERSAND_AMPERSAND_EQ;
 | 
| -    case AMPERSAND_EQ_TOKEN: return TokenType.AMPERSAND_EQ;
 | 
| -    case AT_TOKEN: return TokenType.AT;
 | 
| -    case BANG_TOKEN: return TokenType.BANG;
 | 
| -    case BANG_EQ_TOKEN: return TokenType.BANG_EQ;
 | 
| -    case BAR_TOKEN: return TokenType.BAR;
 | 
| -    case BAR_BAR_TOKEN: return TokenType.BAR_BAR;
 | 
| +    case AMPERSAND_EQ_TOKEN:
 | 
| +      return TokenType.AMPERSAND_EQ;
 | 
| +    case AT_TOKEN:
 | 
| +      return TokenType.AT;
 | 
| +    case BANG_TOKEN:
 | 
| +      return TokenType.BANG;
 | 
| +    case BANG_EQ_TOKEN:
 | 
| +      return TokenType.BANG_EQ;
 | 
| +    case BAR_TOKEN:
 | 
| +      return TokenType.BAR;
 | 
| +    case BAR_BAR_TOKEN:
 | 
| +      return TokenType.BAR_BAR;
 | 
|      // case BAR_BAR_EQ_TOKEN: return TokenType.BAR_BAR_EQ;
 | 
| -    case BAR_EQ_TOKEN: return TokenType.BAR_EQ;
 | 
| -    case COLON_TOKEN: return TokenType.COLON;
 | 
| -    case COMMA_TOKEN: return TokenType.COMMA;
 | 
| -    case CARET_TOKEN: return TokenType.CARET;
 | 
| -    case CARET_EQ_TOKEN: return TokenType.CARET_EQ;
 | 
| -    case CLOSE_CURLY_BRACKET_TOKEN: return TokenType.CLOSE_CURLY_BRACKET;
 | 
| -    case CLOSE_PAREN_TOKEN: return TokenType.CLOSE_PAREN;
 | 
| -    case CLOSE_SQUARE_BRACKET_TOKEN: return TokenType.CLOSE_SQUARE_BRACKET;
 | 
| -    case EQ_TOKEN: return TokenType.EQ;
 | 
| -    case EQ_EQ_TOKEN: return TokenType.EQ_EQ;
 | 
| -    case FUNCTION_TOKEN: return TokenType.FUNCTION;
 | 
| -    case GT_TOKEN: return TokenType.GT;
 | 
| -    case GT_EQ_TOKEN: return TokenType.GT_EQ;
 | 
| -    case GT_GT_TOKEN: return TokenType.GT_GT;
 | 
| -    case GT_GT_EQ_TOKEN: return TokenType.GT_GT_EQ;
 | 
| -    case HASH_TOKEN: return TokenType.HASH;
 | 
| -    case INDEX_TOKEN: return TokenType.INDEX;
 | 
| -    case INDEX_EQ_TOKEN: return TokenType.INDEX_EQ;
 | 
| +    case BAR_EQ_TOKEN:
 | 
| +      return TokenType.BAR_EQ;
 | 
| +    case COLON_TOKEN:
 | 
| +      return TokenType.COLON;
 | 
| +    case COMMA_TOKEN:
 | 
| +      return TokenType.COMMA;
 | 
| +    case CARET_TOKEN:
 | 
| +      return TokenType.CARET;
 | 
| +    case CARET_EQ_TOKEN:
 | 
| +      return TokenType.CARET_EQ;
 | 
| +    case CLOSE_CURLY_BRACKET_TOKEN:
 | 
| +      return TokenType.CLOSE_CURLY_BRACKET;
 | 
| +    case CLOSE_PAREN_TOKEN:
 | 
| +      return TokenType.CLOSE_PAREN;
 | 
| +    case CLOSE_SQUARE_BRACKET_TOKEN:
 | 
| +      return TokenType.CLOSE_SQUARE_BRACKET;
 | 
| +    case EQ_TOKEN:
 | 
| +      return TokenType.EQ;
 | 
| +    case EQ_EQ_TOKEN:
 | 
| +      return TokenType.EQ_EQ;
 | 
| +    case FUNCTION_TOKEN:
 | 
| +      return TokenType.FUNCTION;
 | 
| +    case GT_TOKEN:
 | 
| +      return TokenType.GT;
 | 
| +    case GT_EQ_TOKEN:
 | 
| +      return TokenType.GT_EQ;
 | 
| +    case GT_GT_TOKEN:
 | 
| +      return TokenType.GT_GT;
 | 
| +    case GT_GT_EQ_TOKEN:
 | 
| +      return TokenType.GT_GT_EQ;
 | 
| +    case HASH_TOKEN:
 | 
| +      return TokenType.HASH;
 | 
| +    case INDEX_TOKEN:
 | 
| +      return TokenType.INDEX;
 | 
| +    case INDEX_EQ_TOKEN:
 | 
| +      return TokenType.INDEX_EQ;
 | 
|      // case IS_TOKEN: return TokenType.IS;
 | 
| -    case LT_TOKEN: return TokenType.LT;
 | 
| -    case LT_EQ_TOKEN: return TokenType.LT_EQ;
 | 
| -    case LT_LT_TOKEN: return TokenType.LT_LT;
 | 
| -    case LT_LT_EQ_TOKEN: return TokenType.LT_LT_EQ;
 | 
| -    case MINUS_TOKEN: return TokenType.MINUS;
 | 
| -    case MINUS_EQ_TOKEN: return TokenType.MINUS_EQ;
 | 
| -    case MINUS_MINUS_TOKEN: return TokenType.MINUS_MINUS;
 | 
| -    case OPEN_CURLY_BRACKET_TOKEN: return TokenType.OPEN_CURLY_BRACKET;
 | 
| -    case OPEN_PAREN_TOKEN: return TokenType.OPEN_PAREN;
 | 
| -    case OPEN_SQUARE_BRACKET_TOKEN: return TokenType.OPEN_SQUARE_BRACKET;
 | 
| -    case PERCENT_TOKEN: return TokenType.PERCENT;
 | 
| -    case PERCENT_EQ_TOKEN: return TokenType.PERCENT_EQ;
 | 
| -    case PERIOD_TOKEN: return TokenType.PERIOD;
 | 
| -    case PERIOD_PERIOD_TOKEN: return TokenType.PERIOD_PERIOD;
 | 
| -    case PLUS_TOKEN: return TokenType.PLUS;
 | 
| -    case PLUS_EQ_TOKEN: return TokenType.PLUS_EQ;
 | 
| -    case PLUS_PLUS_TOKEN: return TokenType.PLUS_PLUS;
 | 
| -    case QUESTION_TOKEN: return TokenType.QUESTION;
 | 
| -    case QUESTION_PERIOD_TOKEN: return TokenType.QUESTION_PERIOD;
 | 
| -    case QUESTION_QUESTION_TOKEN: return TokenType.QUESTION_QUESTION;
 | 
| -    case QUESTION_QUESTION_EQ_TOKEN: return TokenType.QUESTION_QUESTION_EQ;
 | 
| -    case SEMICOLON_TOKEN: return TokenType.SEMICOLON;
 | 
| -    case SLASH_TOKEN: return TokenType.SLASH;
 | 
| -    case SLASH_EQ_TOKEN: return TokenType.SLASH_EQ;
 | 
| -    case STAR_TOKEN: return TokenType.STAR;
 | 
| -    case STAR_EQ_TOKEN: return TokenType.STAR_EQ;
 | 
| +    case LT_TOKEN:
 | 
| +      return TokenType.LT;
 | 
| +    case LT_EQ_TOKEN:
 | 
| +      return TokenType.LT_EQ;
 | 
| +    case LT_LT_TOKEN:
 | 
| +      return TokenType.LT_LT;
 | 
| +    case LT_LT_EQ_TOKEN:
 | 
| +      return TokenType.LT_LT_EQ;
 | 
| +    case MINUS_TOKEN:
 | 
| +      return TokenType.MINUS;
 | 
| +    case MINUS_EQ_TOKEN:
 | 
| +      return TokenType.MINUS_EQ;
 | 
| +    case MINUS_MINUS_TOKEN:
 | 
| +      return TokenType.MINUS_MINUS;
 | 
| +    case OPEN_CURLY_BRACKET_TOKEN:
 | 
| +      return TokenType.OPEN_CURLY_BRACKET;
 | 
| +    case OPEN_PAREN_TOKEN:
 | 
| +      return TokenType.OPEN_PAREN;
 | 
| +    case OPEN_SQUARE_BRACKET_TOKEN:
 | 
| +      return TokenType.OPEN_SQUARE_BRACKET;
 | 
| +    case PERCENT_TOKEN:
 | 
| +      return TokenType.PERCENT;
 | 
| +    case PERCENT_EQ_TOKEN:
 | 
| +      return TokenType.PERCENT_EQ;
 | 
| +    case PERIOD_TOKEN:
 | 
| +      return TokenType.PERIOD;
 | 
| +    case PERIOD_PERIOD_TOKEN:
 | 
| +      return TokenType.PERIOD_PERIOD;
 | 
| +    case PLUS_TOKEN:
 | 
| +      return TokenType.PLUS;
 | 
| +    case PLUS_EQ_TOKEN:
 | 
| +      return TokenType.PLUS_EQ;
 | 
| +    case PLUS_PLUS_TOKEN:
 | 
| +      return TokenType.PLUS_PLUS;
 | 
| +    case QUESTION_TOKEN:
 | 
| +      return TokenType.QUESTION;
 | 
| +    case QUESTION_PERIOD_TOKEN:
 | 
| +      return TokenType.QUESTION_PERIOD;
 | 
| +    case QUESTION_QUESTION_TOKEN:
 | 
| +      return TokenType.QUESTION_QUESTION;
 | 
| +    case QUESTION_QUESTION_EQ_TOKEN:
 | 
| +      return TokenType.QUESTION_QUESTION_EQ;
 | 
| +    case SEMICOLON_TOKEN:
 | 
| +      return TokenType.SEMICOLON;
 | 
| +    case SLASH_TOKEN:
 | 
| +      return TokenType.SLASH;
 | 
| +    case SLASH_EQ_TOKEN:
 | 
| +      return TokenType.SLASH_EQ;
 | 
| +    case STAR_TOKEN:
 | 
| +      return TokenType.STAR;
 | 
| +    case STAR_EQ_TOKEN:
 | 
| +      return TokenType.STAR_EQ;
 | 
|      case STRING_INTERPOLATION_TOKEN:
 | 
|        return TokenType.STRING_INTERPOLATION_EXPRESSION;
 | 
|      case STRING_INTERPOLATION_IDENTIFIER_TOKEN:
 | 
|        return TokenType.STRING_INTERPOLATION_IDENTIFIER;
 | 
| -    case TILDE_TOKEN: return TokenType.TILDE;
 | 
| -    case TILDE_SLASH_TOKEN: return TokenType.TILDE_SLASH;
 | 
| -    case TILDE_SLASH_EQ_TOKEN: return TokenType.TILDE_SLASH_EQ;
 | 
| -    case BACKPING_TOKEN: return TokenType.BACKPING;
 | 
| -    case BACKSLASH_TOKEN: return TokenType.BACKSLASH;
 | 
| -    case PERIOD_PERIOD_PERIOD_TOKEN: return TokenType.PERIOD_PERIOD_PERIOD;
 | 
| +    case TILDE_TOKEN:
 | 
| +      return TokenType.TILDE;
 | 
| +    case TILDE_SLASH_TOKEN:
 | 
| +      return TokenType.TILDE_SLASH;
 | 
| +    case TILDE_SLASH_EQ_TOKEN:
 | 
| +      return TokenType.TILDE_SLASH_EQ;
 | 
| +    case BACKPING_TOKEN:
 | 
| +      return TokenType.BACKPING;
 | 
| +    case BACKSLASH_TOKEN:
 | 
| +      return TokenType.BACKSLASH;
 | 
| +    case PERIOD_PERIOD_PERIOD_TOKEN:
 | 
| +      return TokenType.PERIOD_PERIOD_PERIOD;
 | 
|      // case GENERIC_METHOD_TYPE_LIST_TOKEN:
 | 
|      //   return TokenType.GENERIC_METHOD_TYPE_LIST;
 | 
|      // case GENERIC_METHOD_TYPE_ASSIGN_TOKEN:
 | 
| 
 |