import java.util.Iterator; class WildcardGenericAndPrivateField { private Object field; public Iterator iterator() { return null; } public void methodDoesNotCompile() { Iterator iterator = iterator(); while ( iterator.hasNext() ) { Object o = iterator.next().field; } } public void methodCompiles() { Iterator iterator = iterator(); while ( iterator.hasNext() ) { WildcardGenericAndPrivateField next = iterator.next(); Object o = next.field; } } }