@Override
  public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
    if (!DevKitInspectionUtil.isAllowed(holder.getFile())) {
      return PsiElementVisitor.EMPTY_VISITOR;
    }

    return UastHintedVisitorAdapter.create(holder.getFile().getLanguage(), new AbstractUastNonRecursiveVisitor() {
      @Override
      public boolean visitPolyadicExpression(@NotNull UPolyadicExpression node) {
        if (!(node instanceof UInjectionHost uInjectionHost)) return true;
        processInjectionHost(uInjectionHost);
        return super.visitPolyadicExpression(node);
      }

      @Override
      public boolean visitLiteralExpression(@NotNull ULiteralExpression uLiteralExpression) {
        if (!(uLiteralExpression instanceof UInjectionHost uInjectionHost)) return true;
        processInjectionHost(uInjectionHost);
        return super.visitExpression(uLiteralExpression);
      }

      private void processInjectionHost(@NotNull UInjectionHost node) {
        PsiElement element = node.getSourcePsi();
        if (element == null) return;
        for (PsiReference reference : element.getReferences()) {
          if (reference instanceof PluginConfigReference &&
              !reference.isSoft() &&
              reference.resolve() == null) {
            holder.registerProblem(reference);
          }
        }
      }
    }, HINTS);
  }
@Override
  public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly)