What is the difference between these two, and when would I use one over the other?  SetPrivateState() doesn't appear to modify the public state, and SetPublicState doesn't appear to modify the private state, so it seems a little confusing that these can get out of sync with each other.  What's the use case here?