anchor.diff:  /// Clients may not extend, implement or mix-in this class.
   abstract class ClassMember implements Declaration {}
   
  +/// Shared interface between [ClassDeclaration] and
  +/// [ClassAugmentationDeclaration].
  +///
  +/// Clients may not extend, implement or mix-in this class.
  +@experimental
  +abstract class ClassOrAugmentationDeclaration
  +    implements NamedCompilationUnitMember {
  +  /// Return the 'abstract' keyword, or `null` if the keyword was absent.
  +  ///
  +  /// In valid code only [ClassDeclaration] can specify it.
  +  Token? get abstractKeyword;
  +
  +  /// Returns the token representing the 'class' keyword.
  +  Token get classKeyword;
  +
  +  /// Returns the `extends` clause for this class, or `null` if the class
  +  /// does not extend any other class.
  +  ///
  +  /// In valid code only [ClassDeclaration] can specify it.
  +  ExtendsClause? get extendsClause;
  +
  +  /// Returns the `implements` clause for the class, or `null` if the class
  +  /// does not implement any interfaces.
  +  ImplementsClause? get implementsClause;
  +
  +  /// Returns the left curly bracket.
  +  Token get leftBracket;
  +
  +  /// Returns the members defined by the class.
  +  NodeList<ClassMember> get members;
  +
  +  /// Returns the right curly bracket.
  +  Token get rightBracket;
  +
  +  /// Returns the type parameters for the class, or `null` if the class does
  +  /// not have any type parameters.
  +  TypeParameterList? get typeParameters;
  +
  +  /// Returns the `with` clause for the class, or `null` if the class does not
  +  /// have a `with` clause.
  +  WithClause? get withClause;
  +}
  +
   /// The declaration of a class or mixin.
   ///
   /// Clients may not extend, implement or mix-in this class.
  +// TODO(scheglov) Deprecate and remove.
   abstract class ClassOrMixinDeclaration implements NamedCompilationUnitMember {
     @override
     ClassElement? get declaredElement;
  
positive.code:   Token get name;
  }
  
  /// The declaration of a class.
  ///
  ///    classDeclaration ::=
  ///        'abstract'? 'class' [SimpleIdentifier] [TypeParameterList]?
  ///        ([ExtendsClause] [WithClause]?)?
  ///        [ImplementsClause]?
  ///        '{' [ClassMember]* '}'
  ///
  /// Clients may not extend, implement or mix-in this class.
  abstract class ClassDeclaration implements ClassOrMixinDeclaration {
    /// Return the 'abstract' keyword, or `null` if the keyword was absent.
    Token? get abstractKeyword;
  
    /// Return the token representing the 'class' keyword.
    Token get classKeyword;
  
    /// Return the extends clause for this class, or `null` if the class does not
    /// extend any other class.
    ExtendsClause? get extendsClause;
  
    /// Return `true` if this class is declared to be an abstract class.
    @Deprecated('Use abstractKeyword instead')
    bool get isAbstract;
  
negative.code: 
    /// Returns the members defined by the class/mixin.
    NodeList<ClassMember> get members;
  
    /// Returns the right curly bracket.
    Token get rightBracket;
  