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%>
    : super core::Object::•()
    ;
}
class B extends self::A<Null> {
  synthetic constructor •() → self::B
    : super self::A::•()
    ;
}
class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method foo(Null n, self::A<Null> an) → Null
    return n;
}
static method foo() → dynamic {
  return core::_GrowableList::_literal2<core::List<self::A<Null>?>>(core::_GrowableList::•<Null>(0), core::_GrowableList::•<self::A<Null>>(0));
}
static method bar() → dynamic {
  return core::_GrowableList::_literal2<core::List<self::A<Null>?>>(#C1, #C2);
}
static method main() → dynamic {}

constants  {
  #C1 = <Null>[]
  #C2 = <self::A<Null>*>[]
}
