LineMarkerInfo<PsiElement> (@NotNull PsiElement element, @NotNull Icon icon, @NotNull List<? extends Info> infos) { if (infos.size() > 1) { 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); }