static @Nullable PsiUpdateModCommandQuickFix create(@NotNull PsiExpression expression) {
      if (!(expression instanceof PsiMethodCallExpression callExpression)) {
        return null;
      }
      PsiExpression[] arguments = callExpression.getArgumentList().getExpressions();
      if (!(arguments[0] instanceof PsiLiteralExpression literalExpression && literalExpression.getValue() instanceof String pattern)) {
        return null;
      }

      MessageFormatUtil.MessageFormatResult result = MessageFormatUtil.checkFormat(pattern);
      if (!result.valid()) {
        return null;
      }

      Map<TextRange, Integer> mapping = new HashMap<>();

      List<MessageFormatUtil.MessageFormatPlaceholder> placeholders = result.placeholders();
      for (MessageFormatUtil.MessageFormatPlaceholder placeholder : placeholders) {
        if (!placeholder.isString()) {
          return null;
        }

        if (placeholder.index() + 1 >= arguments.length) {
          return null;
        }

        TextRange actualRange = ExpressionUtils.findStringLiteralRange(literalExpression, placeholder.range().getStartOffset(),
                                                                 placeholder.range().getEndOffset());
        if (actualRange == null) {
          return null;
        }

        mapping.put(actualRange, placeholder.index() + 1);
      }
      Set<Integer> argumentIndexes = new HashSet<>(mapping.values());
      if (argumentIndexes.size() != arguments.length - 1) {
        return null;
      }
      return new MessageFormatArgumentToLogCallFix(mapping, literalExpression.getText());
    }
static @Nullable PsiUpdateModCommandQuickFix create(@NotNull PsiExpression expression)