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

import "dart:async";

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