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

typedef F = () → void;
class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method f() → void {}
  get g() → () → void
    return throw "";
  get h() → dynamic
    return null;
  method test() → void {
    this.{self::C::f}(){() → void};
    this.{self::C::f}(){() → void};
    this.{self::C::g}{() → void}(){() → void};
    this.{self::C::g}{() → void}(){() → void};
    this.{self::C::h}{dynamic}{dynamic}.call();
    this.{self::C::h}{dynamic}{dynamic}.call();
  }
}
static method test(self::C c, () → void f, dynamic d) → void {
  c.{self::C::f}(){() → void};
  f(){() → void};
  d{dynamic}.call();
  d{dynamic}.f();
  c.{self::C::g}{() → void}(){() → void};
  c.{self::C::h}{dynamic}{dynamic}.call();
}
static method main() → dynamic {}
