@Override
  protected @NotNull TabPainterAdapter createTabPainterAdapter() {
    return new TabPainterAdapter() {
      private final JBTabPainter myTabPainter = new JBDefaultTabPainter(new DefaultTabTheme() {
        @Override
        public int getTopBorderThickness() {
          return 0;
        }

        @Override
        public @Nullable Color getInactiveColoredTabBackground() {
          return null;
        }
      });

      @Override
      public @NotNull JBTabPainter getTabPainter() {
        return myTabPainter;
      }

      @Override
      public void paintBackground(@NotNull TabLabel label, @NotNull Graphics g, @NotNull JBTabsImpl tabs) {
        Rectangle rect = new Rectangle(0, 0, label.getWidth(), label.getHeight());
        TabInfo info = label.getInfo();
        Graphics2D g2d = (Graphics2D)g;

        int index = tabs.getIndexOf(info);
        int lastIndex = tabs.getTabCount() - 1;
        int border = JBUI.scale(1);

        if (info.getObject() == myNativeWindow) {
          Window window = ComponentUtil.getWindow(WindowTabsComponent.this);
          Color tabColor = JBUI.CurrentTheme.MainWindow.Tab.background(true, window != null && !window.isActive(), false);
          myTabPainter.paintTab(tabs.getTabsPosition(), g2d, rect, tabs.getBorderThickness(), tabColor, true, false);

          g.setColor(JBUI.CurrentTheme.MainWindow.Tab.BORDER);
          LinePainter2D.paint(g2d, 0, 0, rect.width, 0, LinePainter2D.StrokeType.INSIDE, border);
          if (index > 0) {
            LinePainter2D.paint(g2d, 0, 0, 0, rect.height, LinePainter2D.StrokeType.INSIDE, border);
          }
          if (index < lastIndex) {
            LinePainter2D.paint(g2d, rect.width - border, 0, rect.width - border, rect.height, LinePainter2D.StrokeType.INSIDE, border);
          }
        }
        else {
          Color tabColor = JBUI.CurrentTheme.MainWindow.Tab.background(false, false, label.isHovered());
          myTabPainter.paintTab(tabs.getTabsPosition(), g2d, rect, tabs.getBorderThickness(), tabColor, true, false);

          if (lastIndex > 1 && index < lastIndex && tabs.getTabAt(index + 1) != tabs.getSelectedInfo()) {
            g.setColor(JBUI.CurrentTheme.MainWindow.Tab.SEPARATOR);
            LinePainter2D.paint(g2d, rect.width - border, 0, rect.width - border, rect.height, LinePainter2D.StrokeType.INSIDE, border);
          }
        }
      }
    };
  }
@Override
  protected @NotNull TabPainterAdapter createTabPainterAdapter()