PsiType (@NotNull PsiTypeElement typeElement) { Ref<PsiType> result = Ref.create(); forEach(typeElement.getProject(), provider -> { PsiType type = provider.inferType(typeElement); if (type != null) { try { PsiUtil.ensureValidType(type); } catch (ProcessCanceledException e) { throw e; } catch (Throwable e) { throw PluginException.createByClass(e, provider.getClass()); } result.set(type); return false; } else { return true; } }); return result.get(); }