Ссылка на метод неоднозначна при использовании лямбд и дженериков

Я получаю сообщение об ошибке в следующем коде, которого, по моему мнению, быть не должно ... Использование JDK 8u40 для компиляции этого кода.

public class Ambiguous {
    public static void main(String[] args) {
        consumerIntFunctionTest(data -> {
            Arrays.sort(data);
        }, int[]::new);

        consumerIntFunctionTest(Arrays::sort, int[]::new);
    }

    private static <T> void consumerIntFunctionTest(final Consumer<T> consumer, final IntFunction<T> generator) {

    }

    private static <T> void consumerIntFunctionTest(final Function<T, ?> consumer, final IntFunction<T> generator) {

    }
}

Ошибка заключается в следующем:

Ошибка: (17, 9) java: ссылка на consumerIntFunctionTest является неоднозначной как для метода consumerIntFunctionTest (java.util.function.Consumer, java.util.function.IntFunction) в net.tuis.ubench. function.Function, java.util.function.IntFunction) в net.tuis.ubench.Ambiguous match

Ошибка возникает в следующей строке:

consumerIntFunctionTest(Arrays::sort, int[]::new);

Я считаю, что не должно быть никакой ошибки, так как всеArrays::sort&nbsp;ссылки имеют типvoidи ни один из них не возвращает значение. Как вы можете наблюдать, этоделает&nbsp;работать, когда я явно расширяюConsumer<T>&nbsp;лямбда.

Это действительно ошибка в javac, или JLS заявляет, что лямбда не может быть автоматически расширена в этом случае? Если бы это был последний, я бы все равно подумал, что это странно, так какconsumerIntFunctionTest&nbsp;с первым аргументомFunction<T, ?>&nbsp;не должно совпадать.