IntentionPreviewInfo (@NotNull Project project, @NotNull ProblemDescriptor previewDescriptor) { //noinspection unchecked UExpression uExpression = (UExpression)UastContextKt.getUastParentOfTypes(previewDescriptor.getStartElement(), new Class[]{UExpression.class}); if (uExpression == null) return IntentionPreviewInfo.EMPTY; List<PsiElement> toAnnotate = getElementsToMark(uExpression); if (toAnnotate == null) return IntentionPreviewInfo.EMPTY; PsiElement sourcePsi = uExpression.getSourcePsi(); if (sourcePsi == null) return IntentionPreviewInfo.EMPTY; PsiFile file = sourcePsi.getContainingFile(); String message = JvmAnalysisBundle.message("jvm.inspections.source.unsafe.to.sink.flow.preview"); if (ContainerUtil.exists(toAnnotate, e -> fileToAnnotate(e) != file)) { return new IntentionPreviewInfo.Html(message); } ArrayList<PsiElement> ignoredElements = new ArrayList<>(); annotateInCode(project, toAnnotate, myTaintValueFactory, true, ignoredElements); if (ignoredElements.isEmpty()) { return IntentionPreviewInfo.DIFF; } return new IntentionPreviewInfo.Html(message); }