Cache
object Cache
Cache used to terminate the analysis
A finitary configuration is not enough for the analysis to terminate. We need to use cache to let the interpreter "know" that it can terminate.
For performance reasons we use curried key.
Note: It's tempting to use location of trees as key. That should be avoided as a template may have the same location as its single statement body. Macros may also create incorrect locations.