library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

import "dart:async";

class Class<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
  final field core::bool field;
  const constructor constructor1(dynamic value) → self::Class<self::Class::T%>
    : self::Class::field = value is{ForNonNullableByDefault} self::Class::T%, super core::Object::•()
    ;
  const constructor constructor2(dynamic value) → self::Class<self::Class::T%>
    : self::Class::field = value is{ForNonNullableByDefault} self::Class::T?, super core::Object::•()
    ;
  const constructor constructor3(dynamic value) → self::Class<self::Class::T%>
    : self::Class::field = value is{ForNonNullableByDefault} self::Class<self::Class::T%>, super core::Object::•()
    ;
  const constructor constructor4(dynamic value) → self::Class<self::Class::T%>
    : self::Class::field = value is{ForNonNullableByDefault} self::Class<self::Class::T%>?, super core::Object::•()
    ;
}
static final field core::bool isWeakMode;
static const field core::bool c0 = null is{ForNonNullableByDefault} core::int?;
static const field core::bool c1 = null is{ForNonNullableByDefault} core::int;
static const field core::bool c2 = null is{ForNonNullableByDefault} core::Null?;
static const field core::bool c3 = null is{ForNonNullableByDefault} Never?;
static const field core::bool c4 = null is{ForNonNullableByDefault} Never;
static const field core::bool c5 = null is{ForNonNullableByDefault} FutureOr<core::int?>;
static const field core::bool c6 = null is{ForNonNullableByDefault} FutureOr<core::int>;
static const field core::bool c7 = null is{ForNonNullableByDefault} FutureOr<core::int>?;
static const field core::bool c8 = null is{ForNonNullableByDefault} FutureOr<core::Null?>;
static const field core::bool c9 = null is{ForNonNullableByDefault} FutureOr<core::Null?>?;
static const field core::bool c10 = null is{ForNonNullableByDefault} FutureOr<Never>;
static const field core::bool c11 = null is{ForNonNullableByDefault} FutureOr<Never?>;
static const field core::bool c12 = null is{ForNonNullableByDefault} FutureOr<Never>?;
static const field self::Class<core::int> e1 = const self::Class::constructor1<core::int>(null);
static const field self::Class<core::int?> e2 = const self::Class::constructor1<core::int?>(null);
static const field self::Class<core::Null?> e3 = const self::Class::constructor1<core::Null?>(null);
static const field self::Class<core::int> e4 = const self::Class::constructor2<core::int>(null);
static const field self::Class<core::int?> e5 = const self::Class::constructor2<core::int?>(null);
static const field self::Class<core::Null?> e6 = const self::Class::constructor2<core::Null?>(null);
static const field self::Class<core::int> e7 = const self::Class::constructor3<core::int>(null);
static const field self::Class<core::int?> e8 = const self::Class::constructor3<core::int?>(null);
static const field self::Class<core::Null?> e9 = const self::Class::constructor3<core::Null?>(null);
static const field self::Class<core::int> e10 = const self::Class::constructor4<core::int>(null);
static const field self::Class<core::int?> e11 = const self::Class::constructor4<core::int?>(null);
static const field self::Class<core::Null?> e12 = const self::Class::constructor4<core::Null?>(null);
static method main() → dynamic
  ;
static method expect(dynamic expected, dynamic actual, core::String message) → dynamic
  ;
