PsiElementVisitor (@NotNull ProblemsHolder holder, boolean isOnTheFly) { Collection<String> nonBlockingAnnotations = union(myNonBlockingAnnotations, DEFAULT_NONBLOCKING_ANNOTATIONS); Collection<String> blockingAnnotations = union(myBlockingAnnotations, DEFAULT_BLOCKING_ANNOTATIONS); List<NonBlockingContextChecker> nonBlockingContextCheckers = getNonBlockingContextCheckers(holder.getFile(), blockingAnnotations, nonBlockingAnnotations); if (nonBlockingContextCheckers.isEmpty()) return PsiElementVisitor.EMPTY_VISITOR; List<BlockingMethodChecker> blockingMethodCheckers = getBlockingMethodCheckers(holder.getFile(), blockingAnnotations, nonBlockingAnnotations); if (blockingMethodCheckers.isEmpty()) return PsiElementVisitor.EMPTY_VISITOR; var visitor = new BlockingMethodInNonBlockingContextVisitor(holder, blockingMethodCheckers, nonBlockingContextCheckers, getSettings()); return UastHintedVisitorAdapter.create(holder.getFile().getLanguage(), new AbstractUastNonRecursiveVisitor() { @Override public boolean visitMethod(@NotNull UMethod node) { visitor.visitMethod(node); return super.visitMethod(node); } @Override public boolean visitCallExpression(@NotNull UCallExpression node) { visitor.visitCall(node); return super.visitCallExpression(node); } }, hints); }