static void registerFrameDockContainer(@NotNull IdeFrameImpl frame, @NotNull CoroutineScope coroutineScope) {
    getDockManager().register(new DockContainer() {
      private Disposable myPaintDisposable;
      private AbstractPainter myDropPainter;

      @Override
      public @NotNull RelativeRectangle getAcceptArea() {
        return new RelativeRectangle(frame.getComponent());
      }

      @Override
      public @NotNull ContentResponse getContentResponse(@NotNull DockableContent<?> _content, RelativePoint point) {
        return _content instanceof WindowFrameDockableContent content && !content.isInFullScreen() &&
               MacWinTabsHandlerV2.isTabsNotVisible(frame) && !frame.isInFullScreen() ? ContentResponse.ACCEPT_MOVE : ContentResponse.DENY;
      }

      @Override
      public @NotNull JComponent getContainerComponent() {
        return frame.getComponent();
      }

      @Override
      public @Nullable Image startDropOver(@NotNull DockableContent<?> content, RelativePoint point) {
        myPaintDisposable = Disposer.newDisposable("GlassPaneListeners");
        myDropPainter = new WindowDropAreaPainter(frame);
        JComponent component = frame.getComponent();

        IdeGlassPaneUtil.find(component).addPainter(component, myDropPainter, myPaintDisposable);

        return null;
      }

      @Override
      public void resetDropOver(@NotNull DockableContent<?> content) {
        Disposer.dispose(myPaintDisposable);
        myPaintDisposable = null;
        myDropPainter = null;
      }

      @Override
      public void add(@NotNull DockableContent<?> content, @Nullable RelativePoint dropTarget) {
        moveTabToWindow(((WindowFrameDockableContent)content).getKey(), frame);
      }

      @Override
      public boolean isEmpty() {
        return false;
      }

      @Override
      public boolean isDisposeWhenEmpty() {
        return false;
      }
    }, coroutineScope);
  }
static void registerFrameDockContainer(@NotNull IdeFrameImpl frame, @NotNull CoroutineScope coroutineScope)