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

class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method f<T extends core::Object? = dynamic>(self::C::f::T% x) → self::C::f::T%
    return x;
  static method g<T extends core::Object? = dynamic>(self::C::g::T% x) → self::C::g::T%
    return x;
}
class D extends self::C {
  synthetic constructor •() → self::D
    : super self::C::•()
    ;
  method test() → void {
    (core::int) → core::int func;
    func = super.{self::C::f}<core::int>;
  }
}
static method f<T extends core::Object? = dynamic>(self::f::T% x) → self::f::T%
  return x;
static method test() → void {
  function h<T extends core::Object? = dynamic>(T% x) → T%
    return x;
  (core::int) → core::int func;
  func = #C2;
  func = new self::C::•().{self::C::f}{<T extends core::Object? = dynamic>(T%) → T%}<core::int>;
  func = #C4;
  func = h<core::int>;
}
static method main() → dynamic {}

constants  {
  #C1 = static-tearoff self::f
  #C2 = instantiation #C1 <core::int>
  #C3 = static-tearoff self::C::g
  #C4 = instantiation #C3 <core::int>
}
