anchor.diff:    /// ;
     /// ```
     Token parseClassImplementsOpt(Token token) {
  -    // TODO(brianwilkerson) Accept the last consumed token.
  -    // TODO(brianwilkerson) Return the last consumed token.
       Token implementsKeyword;
       int interfacesCount = 0;
  -    if (optional('implements', token)) {
  -      implementsKeyword = token;
  +    if (optional('implements', token.next)) {
  +      implementsKeyword = token.next;
         do {
  -        token = parseType(token.next).next;
  +        token = parseType(token.next.next);
           ++interfacesCount;
  -      } while (optional(',', token));
  +      } while (optional(',', token.next));
       }
       listener.handleClassImplements(implementsKeyword, interfacesCount);
       return token;
  
positive.code: 
    /// Recover given out-of-order clauses in a class header.
    Token parseClassHeaderRecovery(Token token, Token begin, Token classKeyword) {
      // TODO(brianwilkerson) Return the last consumed token.
      final primaryListener = listener;
      final recoveryListener = new ClassHeaderRecoveryListener(primaryListener);
  
  
negative.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);
      }
      token = parseClassBody(token.next, start.next);
      listener.endClassDeclaration(begin, token);
      return token;
    }
  
    Token parseClassHeader(Token token, Token begin, Token classKeyword) {
      // TODO(brianwilkerson): Rename to `parseClassHeaderOpt`?
      token = parseClassExtendsOpt(token);
      token = parseClassImplementsOpt(token);
      Token nativeToken;
      if (optional('native', token.next)) {
        nativeToken = token.next;
        token = parseNativeClause(nativeToken);
      }
      listener.handleClassHeader(begin, classKeyword, nativeToken);
      return token;
  