Many of the GameWith...
interfaces encapsulate one AppState
already. Some just provide a wrapping interface and what AppState is actually used is hidden under the hood.
I know that composition over inheritance thing. Not only from “Effective Java” (book) but also from practice. Exploding permutations are a pain. Still I miss C++ multiple inheritance, but know how to work around that via Java objects, interfaces, inner classes etc. Still I’m a better game designer and art designer than software designer, but that’s okay … I’m learning… 
Nonetheless I have a hierarchy (in addition to composition).
Here’s the layout of my hierarchy:
Application
← SimpleApplication
← SimpleGame
← StandardGame
← SmallGame
← PacificGame
← AtollGame
← PacificMonkey
The interfaces ("GameWith...
") are too numerous to name them now.
The class hierarchy I could explain a little, but don’t think we need that.
Just two examples:
SimpleGame
includes the things that I’m missing from SimpleApplication. It’s designed in such a way that users can just extend SimpleGame instead of SimpleApplication in order to get those things. “Those things” are a sophisticated visual debugger that shows normals, bounds, wireframe, skeletons, spatial names and the other thing is my “simple console”.
PacificMonkey
adds the core game mechanic for this specific game. It effectively just orchestrates spawning enemies and friends and counts points after level complete and decides what game objects the player can pick up, how fast the player can move and what sub-AppState the ‘PlayingGameState
’ is in.
Might not be the best overall software design, is not finished and polished yet (work in progress), but it’s a lot fun! 
But, nonetheless, thanks for your input and your oppinion. I guess, I will learn from your software and add the lessons learned into my framework later. Would be a fool if I ignored that expert knowledge. Thanks. 