I figured the reason this must be done is because the viewmodel/itemviewmodel works with immutable data and the best way to bind the data to the UI is to destroy the current object with a new one - based on the comments in the source code does this assumption seem to be correct?