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

class B<T extends core::Object> extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method f(self::B::T x) → void {}
  method g({self::B::T x = null}) → void {}
  method h<U extends self::B::T>() → void {}
}
class C extends self::B<core::int> {
  synthetic constructor •() → void
    : super self::B::•()
    ;
}
static method g1(self::B<core::num> b) → void {
  b.f(1.5);
}
static method g2(self::C c) → void {
  c.f(1);
}
static method test() → void {
  self::g1(new self::C::•());
}
static method main() → void {}
