@Override
  public void update(@NotNull AnActionEvent e) {
    super.update(e);

    VcsLogUi ui = e.getData(VcsLogDataKeys.VCS_LOG_UI);
    VcsLogUiProperties properties = e.getData(VcsLogInternalDataKeys.LOG_UI_PROPERTIES);

    if (ui != null && properties != null && properties.exists(MainVcsLogUiProperties.TEXT_FILTER_MATCH_CASE)) {
      Presentation presentation = e.getPresentation();
      boolean regexEnabled =
        properties.exists(MainVcsLogUiProperties.TEXT_FILTER_REGEX) && properties.get(MainVcsLogUiProperties.TEXT_FILTER_REGEX);
      if (!regexEnabled) {
        presentation.setText(VcsLogBundle.message("action.title.match.case"));
      }
      else {
        Collection<VcsLogProvider> providers = new LinkedHashSet<>(ui.getDataPack().getLogProviders().values());
        List<VcsLogProvider> supported = ContainerUtil.filter(providers, VcsLogProperties.CASE_INSENSITIVE_REGEX::getOrDefault);
        presentation.setVisible(true);
        presentation.setEnabled(!supported.isEmpty());
        if (providers.size() == supported.size() || supported.isEmpty()) {
          presentation.setText(VcsLogBundle.message("action.title.match.case"));
        }
        else {
          String supportedText = StringUtil.join(ContainerUtil.map(supported,
                                                                   p -> StringUtil.toLowerCase(p.getSupportedVcs().getName())), ", ");
          presentation.setText(VcsLogBundle.message("action.title.match.case.only.supported", supportedText));
        }
      }
    }
  }
@Override
  public void update(@NotNull AnActionEvent e)