library;
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::•()
    ;
  method bar<generic-covariant-impl Y extends self::A::X* = dynamic>() → dynamic
    return null;
}
class B extends core::Object {
  synthetic constructor •() → self::B*
    : super core::Object::•()
    ;
  static method foo<Y extends core::Object* = dynamic>() → self::A<self::B::foo::Y*>*
    return null;
}
static method baz() → dynamic {
  self::B::foo<dynamic>().bar<core::String*>();
}
static method main() → dynamic {}
