@Override
  @NotNull
  public PsiElementVisitor buildInternalVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
    return UastHintedVisitorAdapter.create(holder.getFile().getLanguage(), new AbstractUastNonRecursiveVisitor() {

      @Override
      public boolean visitCallExpression(@NotNull UCallExpression node) {
        if (!node.isMethodNameOneOf(List.of(CREATE_ACTION_TOOLBAR_METHOD_NAME, CREATE_ACTION_POPUP_MENU_METHOD_NAME))) {
          return SKIP_CHILDREN;
        }
        PsiMethod method = node.resolve();
        if (method != null && requiresSpecifiedActionPlace(method) && node.getValueArgumentCount() > 0) {
          String methodName = method.getName();
          UExpression parameter = node.getArgumentForParameter(0);
          if (parameter != null && actionPlaceIsUnspecified(parameter)) {
            PsiElement reportedElement = parameter.getSourcePsi();
            if (reportedElement == null) return SKIP_CHILDREN;
            String messageKey = CREATE_ACTION_TOOLBAR_METHOD_NAME.equals(methodName)
                                ? "inspections.unspecified.actions.place.toolbar"
                                : "inspections.unspecified.actions.place.popup.menu";
            holder.registerProblem(reportedElement, DevKitBundle.message(messageKey));
          }
        }
        return SKIP_CHILDREN;
      }
    }, HINTS);
  }
@Override
  @NotNull
  public PsiElementVisitor buildInternalVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly)