I'm working on a performance problem with symbol resolution in the Clojure plugin. The problem seems to be that every time it resolves a symbol it reparses the entire standard library. I've replaced that call with one that caches the returned PsiElements - is this allowed? They come from a file that does not change, but I'm guessing that if the user navigates to that file, for example, it may be reparsed and new PsiElements created. What would be the best solution to this problem? Is there a way to check if the PsiElements I have cached are still valid?