PythonSdkPathCache (@NotNull Project project, @NotNull Sdk sdk) { synchronized (KEY) { Map<Project, PythonSdkPathCache> cacheMap = sdk.getUserData(KEY); if (cacheMap == null) { cacheMap = new WeakHashMap<>(); sdk.putUserData(KEY, cacheMap); } PythonSdkPathCache cache = cacheMap.get(project); if (cache == null) { cache = new PythonSdkPathCache(project, sdk); cacheMap.put(project, cache); } return cache; } }