Build a key-value data structure that allows the user to take a snapshot of the data. The user can read the key-value store from any snapshot.
Structure has the normal key/value like methods plus something like
snapshot = dataStructure.takeSnapshot();
value = dataStructure.get(key, snapshot);
void dataStructure.deleteSnapshot();