// Too few positional arguments (optional.dart:44:22)
// Too many positional arguments (optional.dart:45:22)
// Too few positional arguments (optional.dart:46:25)
// Too many positional arguments (optional.dart:47:25)
library;
import self as self;
import "dart:core" as core;

class Foo extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
  method method(dynamic x, [dynamic y, dynamic z]) → dynamic {
    return "string";
  }
}
abstract class External extends core::Object {
  abstract method externalMethod(core::int x, [core::int y, core::int z]) → core::String;
  abstract method listen(self::Listener listener) → void;
}
abstract class Listener extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
  abstract method event(core::String input, [core::int x, core::int y]) → void;
}
class TestListener extends self::Listener {
  constructor •() → void
    : super self::Listener::•()
    ;
  method event(core::String input, [core::int x, core::int y]) → void {}
}
class ExtendedListener extends self::Listener {
  constructor •() → void
    : super self::Listener::•()
    ;
  method event(core::String input, [core::int x, core::int y, dynamic z]) → void {}
}
class InvalidListener extends core::Object {
  constructor •() → void
    : super core::Object::•()
    ;
}
external static method createExternal() → self::External;
static method main() → dynamic {
  self::Foo foo = new self::Foo::•();
  dynamic string1 = foo.{self::Foo::method}(1);
  dynamic string2 = foo.{self::Foo::method}(1, 2);
  dynamic string3 = foo.{self::Foo::method}(1, 2, 3);
  self::External extern = self::createExternal();
  core::String string4 = extern.{self::External::externalMethod}(1);
  core::String string5 = extern.{self::External::externalMethod}(1, 2);
  core::String string6 = extern.{self::External::externalMethod}(1, 2, 3);
  extern.{self::External::listen}(new self::TestListener::•());
  extern.{self::External::listen}(new self::ExtendedListener::•());
  extern.{self::External::listen}(new self::InvalidListener::•() as self::Listener);
  dynamic nothing1 = foo.{self::Foo::method}();
  dynamic nothing2 = foo.{self::Foo::method}(1, 2, 3, 4);
  core::String nothing3 = extern.{self::External::externalMethod}();
  core::String nothing4 = extern.{self::External::externalMethod}(1, 2, 3, 4);
}
