This is just a suggestion and maybe it has already been implemented, but perhaps in future versions of Vaadin we could add a boolean parameter to the setValue method parameters that would allow the user to control whether the ValueChange listener gets fired when dynamically setting the value of an object.
For example, the URI setFragment method allows you to control whether fragmentChangedEvent gets fired when you use setFragment in the code.