class Test {

  interface I0 {
    void m();
  }

  interface I1 {
    void m(Object a);
  }

  interface I2 {
    void m(Object a1, Object a2);
  }

  interface IVarargs {
    void m(Object... as);
  }

  void call(I0 p) { }
  void call(I1 p) { }
  void call(I2 p) { }
  void call(IVarargs p) { }

  void test() {
    call(() -> { });
    call<error descr="Ambiguous method call: both 'Test.call(I1)' and 'Test.call(IVarargs)' match">(p1 -> { })</error>;
    call((p1, p2) -> {});
  }
}
