Set<String> (@NotNull PsiClass psiClass) { PsiManager manager = psiClass.getManager(); final Project project = psiClass.getProject(); CachedValue<Set<String>> boxedHolderTypes = project.getUserData(POSSIBLE_BOXED_HOLDER_TYPES); if (boxedHolderTypes == null) { project.putUserData(POSSIBLE_BOXED_HOLDER_TYPES, boxedHolderTypes = CachedValuesManager.getManager(manager.getProject()).createCachedValue( () -> { final JavaPsiFacade facade = JavaPsiFacade.getInstance(project); final Set<String> set = new HashSet<>(); for (final String qname : JvmPrimitiveTypeKind.getBoxedFqns()) { final PsiClass boxedClass = facade.findClass(qname, GlobalSearchScope.allScope(project)); InheritanceUtil.processSupers(boxedClass, true, psiClass1 -> { ContainerUtil.addIfNotNull(set, psiClass1.getQualifiedName()); return true; }); } return CachedValueProvider.Result.create(set, ProjectRootModificationTracker.getInstance(project)); }, false)); } return boxedHolderTypes.getValue(); }