Examples are a public method which returns a private inner class, or a protected field
whose type is a package-visible class.
While legal Java, such fields and methods aren't useful outside of the visibility scope of the classes used in the field or the method.
In addition to that, in Java 9 a module may hide some of its classes by not exporting their packages.
If the public API of a class in an exported package references a class from non-exported package,
such API isn't useful outside of the module.
The options of what is checked are: