void (UCallExpression callExpression) { if (callExpression == null) return; var element = callExpression.getSourcePsi(); if (element == null) return; PsiElement elementToHighLight = AnalysisUastUtil.getMethodIdentifierSourcePsi(callExpression); if (elementToHighLight == null) return; // implicit delegating constructor, check it in visitConstructor if (callExpression.getKind() == UastCallKind.CONSTRUCTOR_CALL && elementToHighLight.getTextRange().isEmpty()) { return; } ContextType contextType = isContextNonBlockingFor(element, myNonBlockingContextCheckers, mySettings); if (contextType instanceof ContextType.Blocking) { return; } ProgressIndicatorProvider.checkCanceled(); PsiMethod referencedMethod = callExpression.resolve(); if (referencedMethod == null) return; if (!isMethodOrSupersBlocking(referencedMethod, myBlockingMethodCheckers, mySettings)) return; if (contextType instanceof ContextType.Unsure && myConsiderUnknownContextBlocking) { if (myHolder.isOnTheFly()) { myHolder.registerProblem( elementToHighLight, JvmAnalysisBundle.message("jvm.inspections.blocking.method.consider.unknown.context.nonblocking"), ProblemHighlightType.INFORMATION, new ConsiderUnknownContextBlockingFix(false)); } return; } ElementContext elementContext = new ElementContext(element, mySettings); StreamEx<LocalQuickFix> fixesStream = StreamEx.of(myBlockingMethodCheckers) .flatArray(checker -> checker.getQuickFixesFor(elementContext)); if (contextType instanceof ContextType.Unsure && !myConsiderUnknownContextBlocking) { fixesStream = fixesStream.append(new ConsiderUnknownContextBlockingFix(true)); } String message; if (contextType instanceof ContextType.NonBlocking && StringUtil.isNotEmpty(((ContextType.NonBlocking)contextType).getDescription())) { String contextDescription = ((ContextType.NonBlocking)contextType).getDescription(); message = JvmAnalysisBundle.message("jvm.inspections.blocking.method.problem.wildcard.descriptor", contextDescription); } else { message = JvmAnalysisBundle.message("jvm.inspections.blocking.method.problem.descriptor"); } myHolder.registerProblem(elementToHighLight, message, fixesStream.toArray(LocalQuickFix.EMPTY_ARRAY)); }