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

abstract class Base extends core::Object {
  default constructor •() → void
    : super core::Object::•()
    ;
}
class Foo extends self::Base {
  default constructor •() → void
    : super self::Base::•()
    ;
}
class Bar extends self::Base {
  default constructor •() → void
    : super self::Base::•()
    ;
}
class Baz extends self::Base {
  default 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);
}
