library test;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;

class B<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  operator []=(core::Map<core::int, self::B::T> x, core::List<self::B::T> y) → void {}
}
class C<U extends core::Object = dynamic> extends self::B<asy::Future<self::C::U>> {
  synthetic constructor •() → void
    : super self::B::•()
    ;
  operator []=(core::Object x, core::Object y) → void {}
  method h() → void {
    super.{self::B::[]=}(self::f<dynamic>(), self::f<dynamic>());
  }
}
static method f<T extends core::Object = dynamic>() → self::f::T
  return null;
static method main() → dynamic {}
