public void resizeWindowToZone(SystemWindow window, WindowZone zone, int?rectangleInZone = null)
        {
            FormWindowState oldWindowState = window.WindowState;

            if (!window.Resizable && oldWindowState != FormWindowState.Maximized)
            {
                return;
            }

            if (oldWindowState == FormWindowState.Maximized)
            {
                rectangleInZone = 0;
            }

            IList <Rect> proportionalRectanglesForZone = getProportionalRectanglesForZone(zone).ToList();
            RECT         windowPadding = windowResizer.getWindowPadding(window);
            Rect         proportionalRectangleToResizeTo;

            Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;

            if (rectangleInZone != null)
            {
                proportionalRectangleToResizeTo = proportionalRectanglesForZone[rectangleInZone.Value];
            }
            else
            {
                WindowZoneSearchResult closestZoneRectangleToOldWindowPosition =
                    findClosestZoneRectangleToWindow(windowResizer.shrinkRectangle(window.Position, windowPadding), workingArea, zone);

                int zoneRectangleIndex = closestZoneRectangleToOldWindowPosition switch {
                    { distance : <= RECTANGLE_DISTANCE_SAME } r => (r.zoneRectangleIndex + 1) % proportionalRectanglesForZone.Count,
                    { distance : <= RECTANGLE_DISTANCE_CLOSE } r => r.zoneRectangleIndex,
                    _ => 0
                };

                proportionalRectangleToResizeTo = proportionalRectanglesForZone[zoneRectangleIndex];
            }

            RECT newPositionRelativeToWorkingArea = convertProportionalRectangleToActualRectangle(proportionalRectangleToResizeTo, workingArea);
            RECT newPositionRelativeToScreen      = windowResizer.getRelativePosition(newPositionRelativeToWorkingArea, workingArea.Location);
            RECT newPositionWithPaddingRemoved    = windowResizer.enlargeRectangle(newPositionRelativeToScreen, windowPadding);

            // LOGGER.Debug(
            //     $"Moving {window.Process.ProcessName} to [top={newPositionRelativeToScreen.Top}, bottom={newPositionRelativeToScreen.Bottom}, left={newPositionRelativeToScreen.Left}, right={newPositionRelativeToScreen.Right}, width={newPositionRelativeToScreen.Width}, height={newPositionRelativeToScreen.Height}], accounting for window padding of {windowPadding.toString()}");

            if (oldWindowState == FormWindowState.Maximized)
            {
                window.WindowState = FormWindowState.Normal;
            }

            windowResizer.moveWindowToPosition(window, newPositionWithPaddingRemoved);
        }