Design Java State contexts and state types so responsibilities stay explicit and transitions remain understandable.
The main structural question in State is where responsibility sits.
The context usually owns:
State types usually own:
Avoid designs where the context still contains all the conditionals and the state classes become empty ceremony. If the pattern is real, the state-specific behavior should actually move.