@Override
  public Component getListCellRendererComponent(@NotNull JList<? extends SdkListItem> list,
                                                @Nullable SdkListItem value,
                                                int index,
                                                boolean selected,
                                                boolean hasFocus) {
    SimpleColoredComponent component = (SimpleColoredComponent)super.getListCellRendererComponent(list, value, index, selected, hasFocus);
    JPanel panel = new CellRendererPanel(new BorderLayout()) {
      private final AccessibleContext myContext = component.getAccessibleContext();

      @Override
      public AccessibleContext getAccessibleContext() {
        return myContext;
      }

      @Override
      public void setBorder(Border border) {
        // we do not want to outer UI to add a border to that JPanel
        // see com.intellij.ide.ui.laf.darcula.ui.DarculaComboBoxUI.CustomComboPopup#customizeListRendererComponent
        component.setBorder(border);
      }
    };
    panel.add(component, BorderLayout.CENTER);

    SdkListModel model = myGetModel.produce();
    //handle the selected item to show in the ComboBox, not in the popup
    if (index == -1) {
      component.setOpaque(false);
      panel.setOpaque(false);
      if (model.isSearching()) {
        JBLabel progressIcon = new JBLabel(AnimatedIcon.Default.INSTANCE);
        panel.add(progressIcon, BorderLayout.EAST);
      }
      return panel;
    }

    component.setOpaque(true);
    panel.setOpaque(true);
    panel.setBackground(list.getBackground());
    if (value instanceof GroupItem) {
      JBLabel toggle = new JBLabel(selected ? AllIcons.Icons.Ide.MenuArrowSelected : AllIcons.Icons.Ide.MenuArrow);
      toggle.setOpaque(true);
      toggle.setBorder(JBUI.Borders.emptyRight(JBUI.scale(5)));
      toggle.setBackground(selected ? list.getSelectionBackground() : list.getBackground());
      panel.add(toggle, BorderLayout.EAST);
    }

    String separatorTextAbove = value != null ? model.getSeparatorTextAbove(value) : null;
    if (separatorTextAbove != null) {
      SeparatorWithText separator = new SeparatorWithText();
      if (!separatorTextAbove.isEmpty()) {
        separator.setCaption(separatorTextAbove);
      }

      OpaquePanel wrapper = new OpaquePanel(new BorderLayout());
      wrapper.add(separator, BorderLayout.CENTER);
      wrapper.setBackground(list.getBackground());

      panel.add(wrapper, BorderLayout.NORTH);
    }
    return panel;
  }
@Override
  public Component getListCellRendererComponent(@NotNull JList<? extends SdkListItem> list,
                                                @Nullable SdkListItem value,
                                                int index,
                                                boolean selected,
                                                boolean hasFocus)