anchor.diff:      return token;
     }
   
  +  /// implementsClause:
  +  ///   'implements' typeName (',' typeName)*
  +  /// ;
     Token parseClassImplementsOpt(Token token) {
       Token implementsKeyword;
       int interfacesCount = 0;
  
positive.code:     return semicolon.next;
    }
  
    Token parseImportPrefixOpt(Token token) {
      if (optional('deferred', token) && optional('as', token.next)) {
        Token deferredToken = token;
  
negative.code:     return token;
    }
  
    /// importDirective:
    ///   'import' uri ('if' '(' test ')' uri)* importPrefix? combinator* ';'
    /// ;
    Token parseImport(Token token) {
      assert(optional('import', token));
      Token importKeyword = token;
      listener.beginImport(importKeyword);
      token = parseLiteralStringOrRecoverExpression(token.next);
      Token afterUri = token;
      token = parseConditionalUris(token);
  