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

class Foo extends core::Object {
  synthetic constructor •() → self::Foo
    ;
  method method(dynamic x, [dynamic y = null, dynamic z = null]) → dynamic
    ;
}
abstract class External extends core::Object {
  synthetic constructor •() → self::External
    ;
  abstract method externalMethod(core::int x, [core::int y = null, core::int z = null]) → core::String;
  abstract method listen(self::Listener listener) → void;
}
abstract class Listener extends core::Object {
  synthetic constructor •() → self::Listener
    ;
  abstract method event(core::String input, [core::int? x = null, core::int? y = null]) → void;
}
class TestListener extends self::Listener {
  synthetic constructor •() → self::TestListener
    ;
  method event(core::String input, [core::int? x = null, core::int? y = null]) → void
    ;
}
class ExtendedListener extends self::Listener {
  synthetic constructor •() → self::ExtendedListener
    ;
  method event(core::String input, [core::int? x = null, core::int? y = null, dynamic z = null]) → void
    ;
}
class InvalidListener extends core::Object {
  synthetic constructor •() → self::InvalidListener
    ;
  method event(dynamic input, [dynamic x = null]) → void
    ;
}
external static method createExternal() → self::External;
static method main() → dynamic
  ;
