Add ability to restore partial snapshots

Closes #5742
this one becomes too dangerous IMO. It's the only place we use this class and we risk to miss passing on a parameter. IMO we should remove all the setters and make this a struct like immutalbe class taking all the values here as ctor args. The information what they are is already there via the getter and the compiler should tell us if we have to pass on any further information!