anchor.diff:      return token;
     }
   
  -  Token parseClassHeader(Token token, Token begin, Token classKeyword) {
  -    // TODO(brianwilkerson): Rename to `parseClassHeaderOpt`?
  +  Token parseClassHeaderOpt(Token token, Token begin, Token classKeyword) {
       token = parseClassExtendsOpt(token);
       token = parseClassImplementsOpt(token);
       Token nativeToken;
  
positive.code:   /// ```
    Token parseClass(Token token, Token begin, Token classKeyword) {
      Token start = token;
      token = parseClassHeader(token, begin, classKeyword);
      if (!optional('{', token.next)) {
        // Recovery
        token = parseClassHeaderRecovery(start, begin, classKeyword);
  
negative.code:     // Reparse to determine which clauses have already been parsed
      // but intercept the events so they are not sent to the primary listener.
      listener = recoveryListener;
      token = parseClassHeaderOpt(token, begin, classKeyword);
      bool hasExtends = recoveryListener.extendsKeyword != null;
      bool hasImplements = recoveryListener.implementsKeyword != null;
      Token withKeyword = recoveryListener.withKeyword;
  