class LambdaUnfriendlyMethodOverload {


}
interface Application {
  <T> T <warning descr="Lambda unfriendly overload of method 'runWriteAction()'">runWriteAction</warning>(@<error descr="Cannot resolve symbol 'NotNull'">NotNull</error> Computable<T> computation);

  <T, E extends Throwable> T <warning descr="Lambda unfriendly overload of method 'runWriteAction()'">runWriteAction</warning>(@<error descr="Cannot resolve symbol 'NotNull'">NotNull</error> ThrowableComputable<T, E> computation) throws E;
}
interface Computable <T> {
  T compute();
}
interface ThrowableComputable<T, E extends Throwable> {
  T compute() throws E;
}
interface Adder {
  String add(Function<String, String> f);
  void add(Consumer<Integer> f);
}
interface Stream<T> {
  <V> V <warning descr="Lambda unfriendly overload of method 'map()'">map</warning>(Function<T, V> mappar);
  <V> V <warning descr="Lambda unfriendly overload of method 'map()'">map</warning>(IntFunction<V> intMapper);
}
class X {
  void a(IntPredicate p) {}
  void a (Function<String, String> f) {}

  void b() {
    a(z -> true);
  }
}
interface Function<T, R> {
  R apply(T t);
}
interface IntFunction<R> {
  R apply(int value);
}
interface Consumer<T> {
  void accept(T t);
}
interface IntPredicate {
  boolean test(int value);
}
@@ -986,89 +986,342 @@
 oid 
-a(IntPredicate p) %7B%7D%0A  void a (Function%3CString, String%3E f) %7B%7D%0A%0A  void b() %7B%0A    a
+%3Cwarning descr=%22Lambda unfriendly overload of method 'a()'%22%3Ea%3C/warning%3E(IntPredicate p) %7B%7D%0A  void %3Cwarning descr=%22Lambda unfriendly overload of method 'a()'%22%3Ea%3C/warning%3E (Function%3CString, String%3E f) %7B%7D%0A%0A  void b() %7B%0A    %3Cerror descr=%22Ambiguous method call: both 'X.a(IntPredicate)' and 'X.a(Function%3CString, String%3E)' match%22%3Ea%3C/error%3E
 (z -

fix test