This cache went away in 73fdd998701cce3aa6c4d8d2a73ab97351a0313b
This time, the cache is periodically validated against disk, so config
is still mostly "live".
The per-file cache reuses FileCache, but the tree-of-file-caches is
duplicated from ConfigProvider. .clangd, .clang-tidy, .clang-format, and
compile_commands.json all have this pattern, we should extract it at some point.
TODO for now though.
To save a copy, could this not return a const pointer to whats stored in Value, nullptr if Value is empty.
In DotClangTidyTree, OptionStack could then store pointers instead of values.
Considering the size of ClangTidyOptions (312 bytes in x64 with libstdc++) this is definitely a worthwhile saving.
One slight issue is I'm not sure how nicely this approach would play with the mutex.