When the inference algorithm determines that an inference variable is a subtype of a capture variable without a lower bound, it may choose "null" as the inference result. This is inconsistent with specified behavior.
<T> Iterable<T> empty(Iterable<? super T> dummy) { return null; }
{
String s = empty((Iterable<?>) null).iterator().next(); // no error reported
Number n = empty((Iterable<?>) null).iterator().next(); // no error reported
Exception e = empty((Iterable<?>) null).iterator().next(); // no error reported
empty((Iterable<?>) null).foo(); // error: can't find in Iterable<<null>>
}