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

class Foo extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
}
class Bar extends self::Foo {
  constructor •() → void
    : super self::Foo::•()
    ;
}
class Base extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
  method method() → self::Foo/self::Foo! {other} {
    return new self::Foo::•();
  }
}
class Sub extends self::Base {
  constructor •() → void
    : super self::Base::•()
    ;
  method method() → self::Foo/self::Bar! {other} {
    return new self::Bar::•();
  }
}
static method main(core::List<core::String>/Nothing args) → dynamic/Null {
  dynamic/self::Base+ {other} object = args.length.==(0) ? new self::Base::•() : new self::Sub::•();
  dynamic/self::Foo+ {other} a = object.method();
  core::print(a);
}
