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

abstract class Base extends core::Object {
  synthetic constructor •() → self::Base
    : super core::Object::•()
    ;
}
class Foo extends self::Base {
  synthetic constructor •() → self::Foo
    : super self::Base::•()
    ;
}
class Bar extends self::Base {
  synthetic constructor •() → self::Bar
    : super self::Base::•()
    ;
}
class Baz extends self::Base {
  synthetic constructor •() → self::Baz
    : super self::Base::•()
    ;
}
static method foo(dynamic x) → void {}
static method bar(dynamic x) → void {}
static method foo_escaped(dynamic x) → void {}
static method bar_escaped(dynamic x) → void {}
static method escape(dynamic fn) → void {
  fn{dynamic}(new self::Baz::•());
}
static method main() → dynamic {
  self::foo(new self::Foo::•());
  self::bar(new self::Bar::•());
  self::escape(#C1);
  self::escape(#C2);
}

constants  {
  #C1 = static-tearoff self::foo_escaped
  #C2 = static-tearoff self::bar_escaped
}
