The interface of rollbackable objects.
The class of checkpoint objects.
The current state of a checkpoint object.
These papers on backtracking maybe helpful:
This is somewhat outdated. It still talks about AspectJ,
which we experimented some time ago. We then moved to source-to-source
transformation. The reason was that AspectJ didn't allow us to
capture changes on some variables, such as individual elements of an
array. By taking the source transformation approach, we have full
control over the variables we need to keep track of.