I completely agree with this sentiment. There is a paradox that the only appropriate way to protect classes internal classes is with package access, but once you do that, they all have to be in the same package... so you either end up with a bunch of protected classes all mixed together, or nicely organized classes that anyone can access (since they have to be public).
The only way I'm aware of is to use reflection combined with
setAccessible, but that won't work on applets (unless some trickery is done for the thin client version).
I think this is a fine layout. It'd be pretty easy to rearrange(refactor) everything using Eclipse or IntelliJ (preserving svn history), but we would have to do a little bit of thinking on how it interacts with the JPen libraries. Also, how do you propose we not make the various internal classes public (or does it matter?).
Marcello