I don't like this pattern. It's a clear sign that we're "duck-taping" the state upon the old model.
The old model is wrong. We need to split up domain objects (= state) and workers (= those that actually run the benchmark). And we need the benchmark report to work on the domain objects (not the workers!).

Not that resolve this problem reasonably in your comment, so just leave your code as is when submitting this pull request for this particular issue.