abstract class External {
  String externalMethod(int x, [int y, int z]);
  void listen(Listener listener);
}

abstract class Listener {
  void event(String input, [int x, int y]);
}

class ExtendedListener extends Listener {
  void event(input, [x, y, z]) {}
}

class Foo {
  method(x, [y, z]) {}
}

class InvalidListener {
  void event(input, [x]) {}
}

class TestListener extends Listener {
  void event(input, [x, y]) {}
}

external External createExternal();
main() {}
