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

class A<X extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::A<self::A::X%>
    ;
}
class B<X extends core::Object? = dynamic> extends self::A<self::B::X%> {
  synthetic constructor •() → self::B<self::B::X%>
    ;
}
class C extends self::B<core::int> {
  synthetic constructor •() → self::C
    ;
}
class A2 extends core::Object {
  synthetic constructor •() → self::A2
    ;
}
class B2 extends self::A2 {
  synthetic constructor •() → self::B2
    ;
}
class C2 extends self::B2 {
  synthetic constructor •() → self::C2
    ;
}
class A3 extends core::Object {
  field core::int? field;
  field core::String? field2;
  synthetic constructor •() → self::A3
    ;
  method foo() → void
    ;
  get getter() → core::int
    ;
  set setter(core::int value) → void
    ;
  set setter2(core::int value) → void
    ;
  set setter3(core::int value) → void
    ;
  operator +(self::A3 other) → self::A3
    ;
  operator *(self::A3 other) → self::A3
    ;
}
class B3 extends self::A3 {
  synthetic constructor •() → self::B3
    ;
  method bar() → void
    ;
}
class C3 extends self::B3 {
  synthetic constructor •() → self::C3
    ;
  method baz() → void
    ;
}
extension type E on self::C show-types self::B<core::int> hide-types self::A<core::int> {
}
extension type E2 on self::C2 show-types self::B2 hide-types self::A2 {
}
extension type E3 on self::C3 show-types self::B3 show-methods self::C3::baz show-getters self::A3::field, self::C3::baz show-setters self::A3::setter, self::A3::field, self::A3::field2 show-operators self::A3::+ hide-methods self::A3::foo hide-getters self::A3::getter, self::A3::foo, self::A3::field hide-setters self::A3::setter2, self::A3::setter3 hide-operators self::A3::* {
}
static method main() → dynamic
  ;
