We immediately `Save()`, which will evaluate the `Lazy<>` and enumerate `newValues`.

As I see it, the tradeoff is between allocating a new `Lazy<>`, a new `List<>`, and one more more new inner arrays (depending on size); or reusing all three (at worst allocating additional storage, though that would have been necessary anyway). Not to mention that letting `list` be `readonly` makes the internals rather cleaner.