If `Context.State` is public should we not have that enum _here_ and then have a `State getState();` method instead? Now we can check for one of three possible states at the interface level, but if we cast to the implementation we can get all _three_ possible states.