library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart:8:5: Error: Field 'x' should be initialized because its type 'int' doesn't allow null.
// int x; // Error.
//     ^
//
// pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart:13:14: Error: Field 'x' should be initialized because its type 'int' doesn't allow null.
//   static int x; // Error.
//              ^
//
// pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart:17:7: Error: Field 'lx' should be initialized because its type 'int' doesn't allow null.
//   int lx; // Error.
//       ^^
//
// pkg/front_end/testcases/nnbd/potentially_non_nullable_field.dart:23:5: Error: Field 'lt' should be initialized because its type 'T' doesn't allow null.
//   T lt; // Error.
//     ^^
//
import self as self;
import "dart:core" as core;

class A<T extends core::Object?> extends core::Object {
  static field core::int x = null;
  static field core::int? y = null;
  late static field core::int z;
  field core::int lx = null;
  field core::int? ly = null;
  late field core::int? lz;
  field core::int lv;
  field core::int lu;
  covariant-by-class field self::A::T% lt = null;
  covariant-by-class field self::A::T? ls = null;
  late covariant-by-class field self::A::T% lr;
  covariant-by-class field self::A::T% lp;
  covariant-by-class field self::A::T% lq;
  constructor •(core::int lv, self::A::T% lp, self::A::T% t) → self::A<self::A::T%>
    : self::A::lv = lv, self::A::lp = lp, self::A::lu = 42, self::A::lq = t, super core::Object::•()
    ;
}
static field core::int x;
static field core::int? y;
late static field core::int z;
static method main() → dynamic {}
