class Foo {
}
int topLevelField;
class A {
  static int staticFieldOfA;
  int fieldOfA;
  A.foo();
  A.bar(this.fieldOfA);
}
class B<X extends Object?, Y extends Object> {
  X fieldOfB;
  Y fieldOfB2;
  B.foo();
  B.bar(this.fieldOfB, this.fieldOfB2);
}
mixin M {
  static int staticFieldOfM;
  int fieldOfM;
}
mixin N<X extends Object?, Y extends Object> {
  X fieldOfN;
  Y fieldOfN2;
}
extension P ;
on Foo (){ }
int? nullableTopLevelField;
late int ;
lateTopLevelField;
int topLevelFieldWithInitializer = 42;
class C<X extends Object?, Y extends Object> {
  static int? staticFieldOfX;
  static int staticFieldOfXInitialized = 42;
  X? fieldOfX;
  int? fieldOfX2;
  dynamic fieldOfX3;
  Null fieldOfX4;
  int Function()? fieldOfX5;
  Y? fieldOfX6;
  static late int ;
  lateStaticFieldOfC;
  late int ;
  fieldOfC7;
  late X ;
  fieldOfC8;
  late Y ;
  fieldOfC9;
  int fieldOfC10;
  C.foo(this.fieldOfC10);
  C.bar(this.fieldOfC10);
}
mixin L<X extends Object?, Y extends Object> {
  static int? staticFieldOfL;
  static int staticFieldOfLInitialized = 42;
  X? fieldOfL;
  int? fieldOfL2;
  dynamic fieldOfL3;
  Null fieldOfL4;
  int Function()? fieldOfL5;
  Y? fieldOfL6;
  static late int ;
  lateStaticFieldOfM;
  late int ;
  fieldOfM7;
  late X ;
  fieldOfM8;
  late Y ;
  fieldOfM9;
}
extension Q ;
on Foo (){ }
main() { }
