It is storing those values - but it doesn't do a last-minute @serialize just before you're about to make changes. It does a @serialize just after you've made the changes.
The two approaches produce the same results
apart from any state changes which happen on their own, without user interaction. I've marked these in blue in this diagram:
A key detail: the second save-state in the top diagram corresponds to the first save-state in the bottom one.
Geraint