anchor.diff:    }
   
     Token parseClassOrNamedMixinApplication(
  -      Token token, Token beforeAbstractToken) {
  -    token = token.next;
  -    listener.beginClassOrNamedMixinApplication(token);
  -    Token abstractToken = beforeAbstractToken?.next;
  -    Token begin = abstractToken ?? token;
  -    Token classKeyword = token;
  -    assert(optional('class', token));
  -    Token name =
  -        ensureIdentifier(token, IdentifierContext.classOrNamedMixinDeclaration);
  -    token = computeTypeParamOrArg(name, true).parseVariables(name, this);
  +      Token abstractToken, Token classKeyword) {
  +    assert(optional('class', classKeyword));
  +    Token begin = abstractToken ?? classKeyword;
  +    listener.beginClassOrNamedMixinApplication(begin);
  +    Token name = ensureIdentifier(
  +        classKeyword, IdentifierContext.classOrNamedMixinDeclaration);
  +    Token token = computeTypeParamOrArg(name, true).parseVariables(name, this);
       if (optional('=', token.next)) {
         listener.beginNamedMixinApplication(begin, abstractToken, name);
         return parseNamedMixinApplication(token, begin, classKeyword);
  
positive.code:     // Ignore any preceding modifiers and just report the unexpected token
      listener.beginTopLevelMember(next);
      return parseInvalidTopLevelDeclaration(token);
    }
  
    // Report an error for the given modifier preceding a top level keyword
  
negative.code:   ///   'export' uri conditional-uris* combinator* ';'
    /// ;
    /// ```
    Token parseExport(Token exportKeyword) {
      assert(optional('export', exportKeyword));
      listener.beginExport(exportKeyword);
      Token token = ensureLiteralString(exportKeyword);
      token = parseConditionalUriStar(token);
      token = parseCombinatorStar(token);
      token = ensureSemicolon(token);
  