// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/*class: Interface1:
 maxInheritancePath=1,
 superclasses=[Object]
*/
class Interface1 {
  /*member: Interface1.implementMultipleField#cls:
   classBuilder=Interface1,
   isSourceDeclaration
  */
  /*member: Interface1.implementMultipleField=#cls:
   classBuilder=Interface1,
   isSourceDeclaration
  */
  int implementMultipleField = 0;

  /*member: Interface1.declareConcreteImplementMultipleField#cls:
   classBuilder=Interface1,
   isSourceDeclaration
  */
  /*member: Interface1.declareConcreteImplementMultipleField=#cls:
   classBuilder=Interface1,
   isSourceDeclaration
  */
  int declareConcreteImplementMultipleField = 0;

  /*member: Interface1.declareAbstractImplementMultipleField#cls:
   classBuilder=Interface1,
   isSourceDeclaration
  */
  /*member: Interface1.declareAbstractImplementMultipleField=#cls:
   classBuilder=Interface1,
   isSourceDeclaration
  */
  int declareAbstractImplementMultipleField = 0;
}

/*class: Interface2:
 maxInheritancePath=1,
 superclasses=[Object]
*/
class Interface2 {
  /*member: Interface2.implementMultipleField#cls:
   classBuilder=Interface2,
   isSourceDeclaration
  */
  /*member: Interface2.implementMultipleField=#cls:
   classBuilder=Interface2,
   isSourceDeclaration
  */
  int implementMultipleField = 0;

  /*member: Interface2.declareConcreteImplementMultipleField#cls:
   classBuilder=Interface2,
   isSourceDeclaration
  */
  /*member: Interface2.declareConcreteImplementMultipleField=#cls:
   classBuilder=Interface2,
   isSourceDeclaration
  */
  int declareConcreteImplementMultipleField = 0;

  /*member: Interface2.declareAbstractImplementMultipleField#cls:
   classBuilder=Interface2,
   isSourceDeclaration
  */
  /*member: Interface2.declareAbstractImplementMultipleField=#cls:
   classBuilder=Interface2,
   isSourceDeclaration
  */
  int declareAbstractImplementMultipleField = 0;
}

/*class: ConcreteClass:
 abstractMembers=[
  ConcreteClass.declareAbstractImplementMultipleField,
  ConcreteClass.declareAbstractImplementMultipleField=,
  Interface1.implementMultipleField,
  Interface1.implementMultipleField=,
  Interface2.implementMultipleField,
  Interface2.implementMultipleField=],
 interfaces=[
  Interface1,
  Interface2],
 maxInheritancePath=2,
 superclasses=[Object]
*/
class ConcreteClass implements Interface1, Interface2 {
  /*member: ConcreteClass.implementMultipleField#int:
   classBuilder=ConcreteClass,
   declarations=[
    Interface1.implementMultipleField,
    Interface2.implementMultipleField],
   isSynthesized,
   member=Interface1.implementMultipleField
  */
  /*member: ConcreteClass.implementMultipleField=#int:
   classBuilder=ConcreteClass,
   declarations=[
    Interface1.implementMultipleField=,
    Interface2.implementMultipleField=],
   isSynthesized,
   member=Interface1.implementMultipleField
  */

  /*member: ConcreteClass.declareConcreteImplementMultipleField#cls:
   classBuilder=ConcreteClass,
   declared-overrides=[
    Interface1.declareConcreteImplementMultipleField,
    Interface1.declareConcreteImplementMultipleField=,
    Interface2.declareConcreteImplementMultipleField,
    Interface2.declareConcreteImplementMultipleField=],
   isSourceDeclaration
  */
  /*member: ConcreteClass.declareConcreteImplementMultipleField=#cls:
   classBuilder=ConcreteClass,
   declared-overrides=[
    Interface1.declareConcreteImplementMultipleField,
    Interface1.declareConcreteImplementMultipleField=,
    Interface2.declareConcreteImplementMultipleField,
    Interface2.declareConcreteImplementMultipleField=],
   isSourceDeclaration
  */
  int declareConcreteImplementMultipleField = 0;

  /*member: ConcreteClass.declareAbstractImplementMultipleField#int:
   classBuilder=ConcreteClass,
   declarations=[
    ConcreteClass.declareAbstractImplementMultipleField,
    Interface1.declareAbstractImplementMultipleField,
    Interface2.declareAbstractImplementMultipleField],
   declared-overrides=[
    Interface1.declareAbstractImplementMultipleField,
    Interface1.declareAbstractImplementMultipleField=,
    Interface2.declareAbstractImplementMultipleField,
    Interface2.declareAbstractImplementMultipleField=],
   isSynthesized
  */
  /*member: ConcreteClass.declareAbstractImplementMultipleField=#int:
   classBuilder=ConcreteClass,
   declarations=[
    ConcreteClass.declareAbstractImplementMultipleField=,
    Interface1.declareAbstractImplementMultipleField=,
    Interface2.declareAbstractImplementMultipleField=],
   declared-overrides=[
    Interface1.declareAbstractImplementMultipleField,
    Interface1.declareAbstractImplementMultipleField=,
    Interface2.declareAbstractImplementMultipleField,
    Interface2.declareAbstractImplementMultipleField=],
   isSynthesized
  */
  abstract int declareAbstractImplementMultipleField;
}

/*class: AbstractClass:
 interfaces=[
  Interface1,
  Interface2],
 maxInheritancePath=2,
 superclasses=[Object]
*/
abstract class AbstractClass implements Interface1, Interface2 {
  /*member: AbstractClass.implementMultipleField#int:
   classBuilder=AbstractClass,
   declarations=[
    Interface1.implementMultipleField,
    Interface2.implementMultipleField],
   isSynthesized,
   member=Interface1.implementMultipleField
  */
  /*member: AbstractClass.implementMultipleField=#int:
   classBuilder=AbstractClass,
   declarations=[
    Interface1.implementMultipleField=,
    Interface2.implementMultipleField=],
   isSynthesized,
   member=Interface1.implementMultipleField
  */

  /*member: AbstractClass.declareConcreteImplementMultipleField#cls:
   classBuilder=AbstractClass,
   declared-overrides=[
    Interface1.declareConcreteImplementMultipleField,
    Interface1.declareConcreteImplementMultipleField=,
    Interface2.declareConcreteImplementMultipleField,
    Interface2.declareConcreteImplementMultipleField=],
   isSourceDeclaration
  */
  /*member: AbstractClass.declareConcreteImplementMultipleField=#cls:
   classBuilder=AbstractClass,
   declared-overrides=[
    Interface1.declareConcreteImplementMultipleField,
    Interface1.declareConcreteImplementMultipleField=,
    Interface2.declareConcreteImplementMultipleField,
    Interface2.declareConcreteImplementMultipleField=],
   isSourceDeclaration
  */
  int declareConcreteImplementMultipleField = 0;

  /*member: AbstractClass.declareAbstractImplementMultipleField#int:
   classBuilder=AbstractClass,
   declarations=[
    AbstractClass.declareAbstractImplementMultipleField,
    Interface1.declareAbstractImplementMultipleField,
    Interface2.declareAbstractImplementMultipleField],
   declared-overrides=[
    Interface1.declareAbstractImplementMultipleField,
    Interface1.declareAbstractImplementMultipleField=,
    Interface2.declareAbstractImplementMultipleField,
    Interface2.declareAbstractImplementMultipleField=],
   isSynthesized
  */
  /*member: AbstractClass.declareAbstractImplementMultipleField=#int:
   classBuilder=AbstractClass,
   declarations=[
    AbstractClass.declareAbstractImplementMultipleField=,
    Interface1.declareAbstractImplementMultipleField=,
    Interface2.declareAbstractImplementMultipleField=],
   declared-overrides=[
    Interface1.declareAbstractImplementMultipleField,
    Interface1.declareAbstractImplementMultipleField=,
    Interface2.declareAbstractImplementMultipleField,
    Interface2.declareAbstractImplementMultipleField=],
   isSynthesized
  */
  abstract int declareAbstractImplementMultipleField;
}

/*class: ConcreteSub:
 abstractMembers=[
  AbstractClass.declareAbstractImplementMultipleField,
  AbstractClass.declareAbstractImplementMultipleField=,
  AbstractClass.implementMultipleField,
  AbstractClass.implementMultipleField=],
 interfaces=[
  Interface1,
  Interface2],
 maxInheritancePath=3,
 superclasses=[
  AbstractClass,
  Object]
*/
class ConcreteSub extends AbstractClass {
  /*member: ConcreteSub.declareConcreteImplementMultipleField#cls:
   classBuilder=AbstractClass,
   isSourceDeclaration
  */
  /*member: ConcreteSub.declareConcreteImplementMultipleField=#cls:
   classBuilder=AbstractClass,
   isSourceDeclaration
  */

  /*member: ConcreteSub.declareAbstractImplementMultipleField#int:
   classBuilder=AbstractClass,
   declarations=[
    AbstractClass.declareAbstractImplementMultipleField,
    Interface1.declareAbstractImplementMultipleField,
    Interface2.declareAbstractImplementMultipleField],
   isSynthesized,
   member=AbstractClass.declareAbstractImplementMultipleField
  */
  /*member: ConcreteSub.declareAbstractImplementMultipleField=#int:
   classBuilder=AbstractClass,
   declarations=[
    AbstractClass.declareAbstractImplementMultipleField=,
    Interface1.declareAbstractImplementMultipleField=,
    Interface2.declareAbstractImplementMultipleField=],
   isSynthesized,
   member=AbstractClass.declareAbstractImplementMultipleField=
  */

  /*member: ConcreteSub.implementMultipleField#int:
   classBuilder=AbstractClass,
   declarations=[
    Interface1.implementMultipleField,
    Interface2.implementMultipleField],
   isSynthesized,
   member=Interface1.implementMultipleField
  */
  /*member: ConcreteSub.implementMultipleField=#int:
   classBuilder=AbstractClass,
   declarations=[
    Interface1.implementMultipleField=,
    Interface2.implementMultipleField=],
   isSynthesized,
   member=Interface1.implementMultipleField
  */
}

main() {}
