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

typedef F<contravariant T extends core::Object? = dynamic> = (T%) → void;
class B<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::B<self::B::T%>
    ;
  operator +(covariant-by-class self::B<self::B::T%> other) → self::B<self::B::T%>
    ;
}
class C<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T%>
    ;
  operator [](core::int i) → self::B<(self::C::T%) → void>
    ;
  operator []=(core::int i, self::B<(self::C::T%) → void> x) → void
    ;
}
class C2<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::C2<self::C2::T%>
    ;
  operator [](core::int i) → self::B<(self::C2::T%) → void>?
    ;
  operator []=(core::int i, self::B<(self::C2::T%) → void>? x) → void
    ;
}
static method test(self::C<core::num> c, self::C2<core::num> c2) → void
  ;
static method main() → dynamic
  ;
