Description
Currently the state changes are driven by updates to attribute desiredState. This is implemented internally as annotated state change methods which are called reflectively. The current approach has a number of disadvantages, most notedly, that it is not obvious how these methods should interact when overriding objects also provide their own private state change methods whose annotations intersect.
We should reimplement state change in a simpler way.