public static @NotNull LineMarkerInfo<PsiElement> createLineMarker(@NotNull PsiElement element,
                                                                     @NotNull Icon icon,
                                                                     @NotNull List<? extends Info> infos) {
    if (infos.size() > 1) {
      infos = new ArrayList<>(infos);
      infos.sort(COMPARATOR);
      final Info first = infos.get(0);
      infos.removeIf(info -> info != first && first.shouldReplace(info));
    }

    final DefaultActionGroup actionGroup = new DefaultActionGroup();
    for (Info info : infos) {
      for (AnAction action : info.actions) {
        actionGroup.add(action instanceof Separator ? action : new LineMarkerActionWrapper(element, action));
      }

      if (info != infos.get(infos.size() - 1)) {
        actionGroup.add(new Separator());
      }
    }

    Function<PsiElement, String> tooltipProvider = new EquatableTooltipProvider(infos);
    return new RunLineMarkerInfo(element, icon, tooltipProvider, actionGroup);
  }
public static @NotNull LineMarkerInfo<PsiElement> createLineMarker(@NotNull PsiElement element,
                                                                     @NotNull Icon icon,
                                                                     @NotNull List<? extends Info> infos)