private WindowZoneSearchResult findClosestZoneRectangleToWindow(RECT windowPosition, RECT workingArea, WindowZone zone)
        {
            IEnumerable <Rect> proportionalZoneRectangles = getProportionalRectanglesForZone(zone);

            IEnumerable <WindowZoneSearchResult> windowZoneSearchResults = proportionalZoneRectangles.Select((proportionalZoneRectangle, zoneIndex) => {
                WindowZoneSearchResult result = new() {
                    proportionalZoneRectangle = proportionalZoneRectangle,
                    actualZoneRectPosition    = windowResizer.getRelativePosition(convertProportionalRectangleToActualRectangle(proportionalZoneRectangle, workingArea), workingArea.Location),
                    zone = zone,
                    zoneRectangleIndex = zoneIndex
                };
                result.distance = windowResizer.getRectangleDistance(result.actualZoneRectPosition, windowPosition);

                return(result);
            });

            return(windowZoneSearchResults.MinBy(result => result.distance).First());
        }