@Override
  protected @NotNull ModCommand perform(@NotNull ActionContext context, @NotNull PsiMethodCallExpression originalCall) {
    if (myLoggers.isEmpty()) {
      return ModCommand.nop();
    }

    if (myLogName != null) {
      return ModCommand.psiUpdate(originalCall, logCall -> replaceWithLogCall(logCall, myLogName, myMethodName));
    }

    if (myLoggers.size() > 1) {
      return ModCommand.chooseAction(JavaBundle.message("dialog.title.choose.logger"),
                                     ContainerUtil.map(myLoggers,
                                                       log -> new ConvertSystemOutToLogCallFix(List.of(log), null, myMethodName,
                                                                                               originalCall)));
    }

    return ModCommand.psiUpdate(originalCall, callExpression -> {
      JvmLogger logger = myLoggers.get(0);

      PsiClass upperClass = getUpperClass(callExpression); //not always a good idea for all cases, but asking is too annoying

      if (upperClass == null) {
        return;
      }

      String logFieldName = logger.getLogFieldName(upperClass);
      if (logFieldName == null) {
        return;
      }

      Project project = context.project();
      PsiElement loggerElement = logger.createLogger(project, upperClass);
      if (loggerElement == null) {
        return;
      }
      logger.insertLoggerAtClass(project, upperClass, loggerElement);

      replaceWithLogCall(callExpression, logFieldName, myMethodName);
    });
  }
@Override
  protected @NotNull ModCommand perform(@NotNull ActionContext context, @NotNull PsiMethodCallExpression originalCall)