library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart:7:5: Error: Field 'topLevelField' should be initialized because its type 'int' doesn't allow null.
// int topLevelField; // Error.
//     ^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart:10:14: Error: Field 'staticFieldOfA' should be initialized because its type 'int' doesn't allow null.
//   static int staticFieldOfA; // Error.
//              ^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart:24:14: Error: Field 'staticFieldOfM' should be initialized because its type 'int' doesn't allow null.
//   static int staticFieldOfM; // Error.
//              ^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/non_nullable_field_initialization.dart:34:14: Error: Field 'staticFieldOfE' should be initialized because its type 'int' doesn't allow null.
//   static int staticFieldOfE; // Error.
//              ^^^^^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

class Foo extends core::Object {
  synthetic constructor •() → self::Foo
    ;
}
class A extends core::Object {
  static field core::int staticFieldOfA;
  field core::int fieldOfA;
  constructor foo() → self::A
    ;
  constructor bar(core::int fieldOfA) → self::A
    ;
}
class B<X extends core::Object?, Y extends core::Object> extends core::Object {
  generic-covariant-impl field self::B::X% fieldOfB;
  generic-covariant-impl field self::B::Y fieldOfB2;
  constructor foo() → self::B<self::B::X%, self::B::Y>
    ;
  constructor bar(self::B::X% fieldOfB, self::B::Y fieldOfB2) → self::B<self::B::X%, self::B::Y>
    ;
}
abstract class M extends core::Object /*isMixinDeclaration*/  {
  static field core::int staticFieldOfM;
  field core::int fieldOfM;
}
abstract class N<X extends core::Object?, Y extends core::Object> extends core::Object /*isMixinDeclaration*/  {
  generic-covariant-impl field self::N::X% fieldOfN;
  generic-covariant-impl field self::N::Y fieldOfN2;
}
class C<X extends core::Object?, Y extends core::Object> extends core::Object {
  static field core::int? staticFieldOfX;
  static field core::int staticFieldOfXInitialized;
  generic-covariant-impl field self::C::X? fieldOfX;
  field core::int? fieldOfX2;
  field dynamic fieldOfX3;
  field Null fieldOfX4;
  field () →? core::int fieldOfX5;
  generic-covariant-impl field self::C::Y? fieldOfX6;
  late static field core::int lateStaticFieldOfC;
  late field core::int fieldOfC7;
  late generic-covariant-impl field self::C::X% fieldOfC8;
  late generic-covariant-impl field self::C::Y fieldOfC9;
  field core::int fieldOfC10;
  constructor foo(core::int fieldOfC10) → self::C<self::C::X%, self::C::Y>
    ;
  constructor bar(core::int fieldOfC10) → self::C<self::C::X%, self::C::Y>
    ;
}
abstract class L<X extends core::Object?, Y extends core::Object> extends core::Object /*isMixinDeclaration*/  {
  static field core::int? staticFieldOfL;
  static field core::int staticFieldOfLInitialized;
  generic-covariant-impl field self::L::X? fieldOfL;
  field core::int? fieldOfL2;
  field dynamic fieldOfL3;
  field Null fieldOfL4;
  field () →? core::int fieldOfL5;
  generic-covariant-impl field self::L::Y? fieldOfL6;
  late static field core::int lateStaticFieldOfM;
  late field core::int fieldOfM7;
  late generic-covariant-impl field self::L::X% fieldOfM8;
  late generic-covariant-impl field self::L::Y fieldOfM9;
}
extension P on self::Foo {
  static field staticFieldOfE = self::P|staticFieldOfE;
}
extension Q on self::Foo {
  static field staticFieldOfQ = self::Q|staticFieldOfQ;
  static field lateStaticFieldOfQ = self::Q|lateStaticFieldOfQ;
  static field staticFieldOfQInitialized = self::Q|staticFieldOfQInitialized;
}
static field core::int topLevelField;
static field core::int P|staticFieldOfE;
static field core::int? nullableTopLevelField;
late static field core::int lateTopLevelField;
static field core::int topLevelFieldWithInitializer;
static field core::int? Q|staticFieldOfQ;
late static field core::int Q|lateStaticFieldOfQ;
static field core::int Q|staticFieldOfQInitialized;
static method main() → dynamic
  ;
