anchor.diff:      return token;
     }
   
  -  /// Skip over the `Function` type parameter.
  -  /// For example, `Function<E>(int foo)` or `Function(foo)` or just `Function`.
  -  Token skipGenericFunctionType(Token token) {
  -    Token last = token;
  -    Token next = token.next;
  -    while (optional('Function', next)) {
  -      last = token;
  -      token = next;
  -      next = token.next;
  -      if (optional('<', next)) {
  -        next = next.endGroup;
  -        if (next == null) {
  -          // TODO(danrubel): Consider better recovery
  -          // because this is probably a type reference.
  -          return token;
  -        }
  -        token = next;
  -        next = token.next;
  -      }
  -      if (optional('(', next)) {
  -        token = next.endGroup;
  -        next = token.next;
  -      }
  -    }
  -    if (next.isKeywordOrIdentifier) {
  -      return token;
  -    } else {
  -      return last;
  -    }
  -  }
  -
     /// Returns `true` if [token] matches '<' type (',' type)* '>' '(', and
     /// otherwise returns `false`. The final '(' is not part of the grammar
     /// construct `typeArguments`, but it is required here such that type
  
positive.code:     return token;
    }
  
    /// Returns `true` if the stringValue of the [token] is either [value1],
    /// [value2], or [value3].
    bool isOneOf3(Token token, String value1, String value2, String value3) {
      String stringValue = token.stringValue;
      return identical(value1, stringValue) ||
          identical(value2, stringValue) ||
          identical(value3, stringValue);
    }
  
    /// Returns `true` if the stringValue of the [token] is either [value1],
    /// [value2], [value3], or [value4].
    bool isOneOf4(
        Token token, String value1, String value2, String value3, String value4) {
      String stringValue = token.stringValue;
      return identical(value1, stringValue) ||
          identical(value2, stringValue) ||
          identical(value3, stringValue) ||
          identical(value4, stringValue);
    }
  
    bool notEofOrValue(String value, Token token) {
      return !identical(token.kind, EOF_TOKEN) &&
          !identical(value, token.stringValue);
  
negative.code:     listener.endClassBody(count, begin, token);
      return token;
    }
  
    bool isUnaryMinus(Token token) =>
        token.kind == IDENTIFIER_TOKEN &&
  