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

typedef G<invariant X extends core::Object? = dynamic> = (X%) → X%;
typedef A<X extends (self::C<X>) → self::C<X> = (self::C<dynamic>) → self::C<dynamic>> = self::C<X>;
typedef B<X extends (self::D<X>) → self::D<X> = (self::D<dynamic>) → self::D<dynamic>> = self::D<X>;
class C<X extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::C::bar]/*isLegacy*/;
  constructor foo() → self::C<self::C::X%>
    ;
  static factory •<X extends core::Object? = dynamic>() → self::C<self::C::•::X%>
    ;
  static factory bar<X extends core::Object? = dynamic>() → self::C<self::C::bar::X%>
    let dynamic #redirecting_factory = self::C::• in let self::C::bar::X% #typeArg0 = null in invalid-expression;
}
class D<X extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::D::bar]/*isLegacy*/;
  constructor •() → self::D<self::D::X%>
    ;
  static factory foo<X extends core::Object? = dynamic>() → self::D<self::D::foo::X%>
    ;
  static factory bar<X extends core::Object? = dynamic>() → self::D<self::D::bar::X%>
    let dynamic #redirecting_factory = self::D::• in let self::D::bar::X% #typeArg0 = null in invalid-expression;
}
static method test() → dynamic
  ;
static method main() → dynamic
  ;
