Some implicit conversions (such as boxing, unboxing, primitive widening) on method references were missing.
A lambda expression could not be used to implement a functional interface that inherited its abstract method instead of declaring it itself. For example: interface BinaryOperator<T> extends BiFunction<T, T, T> {}, where BiFunction is interface BiFunction<T, U, R> { R apply(T, U); }
interface BinaryOperator<T> extends BiFunction<T, T, T> {}
, whereBiFunction
isinterface BiFunction<T, U, R> { R apply(T, U); }