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

abstract class Base extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class Foo extends self::Base {
  synthetic constructor •() → void
    : super self::Base::•()
    ;
}
class Bar extends self::Base {
  synthetic constructor •() → void
    : super self::Base::•()
    ;
}
class Baz extends self::Base {
  synthetic constructor •() → void
    : 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.call(new self::Baz::•());
}
static method main() → dynamic {
  self::foo(new self::Foo::•());
  self::bar(new self::Bar::•());
  self::escape(self::foo_escaped);
  self::escape(self::bar_escaped);
}
