anchor.diff:      Token equals = token = token.next;
       assert(optional('=', equals));
       token = parseType(token.next);
  -    token = parseMixinApplicationRest(token.next);
  +    token = parseMixinApplicationRest(token).next;
       Token implementsKeyword = null;
       if (optional('implements', token)) {
         implementsKeyword = token;
  
positive.code:       Token start = token.next;
  
        // Check for extraneous token in the middle of an import statement.
        // TODO(brianwilkerson) Remove the invocation of `previous` when
        // `skipUnexpectedTokenOpt` returns the last consumed token.
        token = skipUnexpectedTokenOpt(start,
            const <String>['if', 'deferred', 'as', 'hide', 'show', ';']).previous;
  
        // During recovery, clauses are parsed in the same order
        // and generate the same events as in the parseImport method above.
  
negative.code:       start = token;
  
        // Check for extraneous token in the middle of a class header.
        // TODO(brianwilkerson): Remove the invocation of `previous` when
        // `parseClassHeader` returns the last consumed token.
        token = skipUnexpectedTokenOpt(
            token.previous, const <String>['extends', 'with', 'implements', '{']);
  
        // During recovery, clauses are parsed in the same order
        // and generate the same events as in the parseClassHeader method above.
        recoveryListener.clear();
        Token next = token.next;
        if (optional('with', next)) {
          // If there is a `with` clause without a preceding `extends` clause
          // then insert a synthetic `extends` clause and parse both clauses.
          Token extendsKeyword =
              new SyntheticKeywordToken(Keyword.EXTENDS, next.offset);
          Token superclassToken = new SyntheticStringToken(
              TokenType.IDENTIFIER, 'Object', next.offset);
          rewriter.insertToken(extendsKeyword, next);
          rewriter.insertToken(superclassToken, next);
          token = parseType(extendsKeyword.next);
          token = parseMixinApplicationRest(token).next;
          listener.handleClassExtends(extendsKeyword);
        } else {
          token = parseClassExtendsOpt(token.next);
  
          if (recoveryListener.extendsKeyword != null) {
            if (hasExtends) {
  