The elephant i see is that now that IBM (and Google is around the corner) uses the OpenJDK, the OpenJDK implementation becomes the defacto standard so recent 3rd party libraries tend to use OpenJDK specifics in their implementation. Before, it was less an issue because there was multiple implementations of the JDK. If we don't do something now, the platform will calcified and we will not be able to change anything in the OpenJDK in the future.
I understand that breaking a 3rd party library doesn't let a lot of option apart fixing the library itself or removing the use of it. But the future i see if we don't do that now is the death of innovation of the Java platform.

I understand the temptation to enforce encapsulation as much as possible too, but the thing here is that I can hardly imagine the consequences of such a decision. That you prevent calling `setAccessible` on non exported packages make sense, but forbidding it on visible classes seem to go a bit too far. It is, more or less, removing setAccessible altogether. It is today very hard to evaluate the consequences of doing this. It could very well kill Groovy too. And working with -add-exports is not a long term solution (we know it's temporary until everything is a module).

The risk of such a decision is also that migrating to JDK 9 becomes too painful, and people do not upgrade at all. We're trying to make it easier, with Gradle, to do so, but there's nothing we can help for "runtime magic".