Remembering and restoring declarations
Each front-end is responsible for:
remembering top-level declarations;
remembering / checking dependencies;
restoring declarations if re-use is ok.
Hooks/conventions to make this relatively easy.
Complication: Old tree nodes get modified with new information. E.g. C++ function overloading.
Likely solution: Remember modifications in undo buffers. Before re-starting compilation, we must undo modifications to old trees.