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

class Foo<X extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::Foo<self::Foo::X%>
    ;
}
class Bar<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::Bar<self::Bar::X%, self::Bar::Y%>
    ;
}
extension A1 on dynamic {
}
extension A2<X extends core::Object? = dynamic> on self::Foo<X%> {
}
extension A3<X extends core::Object? = dynamic, Y extends (X%) → dynamic = (Never) → dynamic> on self::Bar<X%, Y> {
}
extension A4<X extends core::Object? = dynamic, Y extends (X%) → dynamic = (Never) → dynamic> on self::Foo<Y> {
}
static method foo1(dynamic a) → dynamic
  ;
static method foo2(self::Foo<core::int> a, self::Foo<dynamic> ai) → self::Foo<dynamic>
  ;
static method foo3(self::Bar<core::int, (core::num) → dynamic> a, self::Bar<dynamic, (Never) → dynamic> ai) → self::Bar<dynamic, (Never) → dynamic>
  ;
static method foo4(self::Foo<(core::num) → dynamic> a, self::Foo<(Never) → dynamic> ai) → self::Foo<(Never) → dynamic>
  ;
static method bar() → dynamic
  ;
static method main() → dynamic
  ;
