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

class Class<T extends core::Object? = dynamic> extends core::Object {
  static field core::int? _#lateStaticField1;
  static field core::int? _#lateStaticField2;
  field core::int? _#Class#lateInstanceField;
  final field self::Class::T% field;
  generic-covariant-impl field self::Class::T? _#Class#lateGenericField1;
  field core::bool _#Class#lateGenericField1#isSet;
  generic-covariant-impl field self::Class::T? _#Class#lateGenericField2;
  field core::bool _#Class#lateGenericField2#isSet;
  constructor •(self::Class::T% field) → self::Class<self::Class::T%>
    ;
  static get lateStaticField1() → core::int;
  static set lateStaticField1(core::int #t1) → void;
  static get lateStaticField2() → core::int;
  static set lateStaticField2(core::int #t2) → void;
  static method staticMethod() → dynamic
    ;
  get lateInstanceField() → core::int;
  set lateInstanceField(core::int #t3) → void;
  get lateGenericField1() → self::Class::T%;
  set lateGenericField1(generic-covariant-impl self::Class::T% #t4) → void;
  get lateGenericField2() → self::Class::T%;
  set lateGenericField2(generic-covariant-impl self::Class::T% #t5) → void;
  method instanceMethod(generic-covariant-impl self::Class::T% value) → dynamic
    ;
}
extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
  static field lateExtensionField1 = self::_#Extension|lateExtensionField1;
  static get lateExtensionField1 = get self::Extension|lateExtensionField1;
  static set lateExtensionField1 = set self::Extension|lateExtensionField1;
  static field lateExtensionField2 = self::_#Extension|lateExtensionField2;
  static get lateExtensionField2 = get self::Extension|lateExtensionField2;
  static set lateExtensionField2 = set self::Extension|lateExtensionField2;
  static method staticMethod = self::Extension|staticMethod;
}
static field core::int? _#lateTopLevelField1;
static field core::int? _#Extension|lateExtensionField1;
static field core::int? _#Extension|lateExtensionField2;
static get lateTopLevelField1() → core::int;
static set lateTopLevelField1(core::int #t6) → void;
static get Extension|lateExtensionField1() → core::int;
static set Extension|lateExtensionField1(core::int #t7) → void;
static get Extension|lateExtensionField2() → core::int;
static set Extension|lateExtensionField2(core::int #t8) → void;
static method Extension|staticMethod() → dynamic
  ;
static method main() → dynamic
  ;
static method expect(dynamic expected, dynamic actual) → dynamic
  ;
