we need a package-level cache in order to not repeat work that has already been done over every single instance of the executor (and takes  time to do).
This is different from global state. This is only visible inside this package. We could move it back to inside the class itself, but I would argue that a cache is not the responsibility of the TestExecutor and therefore is better placed outside of it.