> but then you had to call some other method on some seemingly unrelated object

This is similar to what we had with `session.add()`, which I think was agreed to be extremely annoying and was eventually replaced with `session.add_plot()` that also doesn't involve any of objects referenced by a plot.

Obviously the old way of setting a private field was very wrong. There could be at least `.set_dirty()`, but really this change and the change in this PR are just "creative accounting" of hiding the fact that we are unable to detect changes to models (which should be admitted that it isn't that simple problem to solve in general).