public void wrapAndUpdateGutters() {
    LOG.assertTrue(myEditor != null);
    if (myGuttersRaw.isEmpty()) return;
    myGutters.clear();

    Predicate<IntentionAction> filter = action -> ContainerUtil.and(
      IntentionActionFilter.EXTENSION_POINT_NAME.getExtensionList(), f -> f.accept(action, myFile, myOffset));

    DefaultActionGroup group = new DefaultActionGroup(new ArrayList<>(new LinkedHashSet<>(myGuttersRaw)));
    PresentationFactory presentationFactory = new PresentationFactory();
    List<AnAction> actions = Utils.expandActionGroup(
      group, presentationFactory,
      EditorUtil.getEditorDataContext(myEditor), ActionPlaces.INTENTION_MENU);
    List<HighlightInfo.IntentionActionDescriptor> descriptors = new ArrayList<>();
    int order = 0;
    boolean hasSeparatorAbove = false;
    for (AnAction action : actions) {
      Presentation presentation = presentationFactory.getPresentation(action);
      if (action instanceof SeparatorAction) {
        hasSeparatorAbove = true;
        continue;
      }
      else if (StringUtil.isEmpty(presentation.getText())) {
        continue;
      }
      GutterIntentionAction intentionAction = new GutterIntentionAction(action, order++, hasSeparatorAbove);
      intentionAction.updateFromPresentation(presentation);
      if (!filter.test(intentionAction)) continue;
      HighlightInfo.IntentionActionDescriptor descriptor = new HighlightInfo.IntentionActionDescriptor(
        intentionAction, Collections.emptyList(), intentionAction.getText(), intentionAction.getIcon(0), null, null, null);
      descriptors.add(descriptor);
      hasSeparatorAbove = false;
    }
    wrapActionsTo(descriptors, myGutters, false);
  }
public void wrapAndUpdateGutters()