bool _anyCornerBlocked(
            int dimX,
            int dimY,
            Vector position)
        {
            var topLeft     = position.AddXY(-1, -1);
            var topRight    = position.AddXY(dimX + 1, -1);
            var bottomLeft  = position.AddXY(-1, dimY + 1);
            var bottomRight = position.AddXY(dimY + 1, dimY + 1);

            return(Rooms.TileIsBlockedForRequirements(topLeft) ||
                   Rooms.TileIsBlockedForRequirements(topRight) ||
                   Rooms.TileIsBlockedForRequirements(bottomLeft) ||
                   Rooms.TileIsBlockedForRequirements(bottomRight));
        }
        void _checkForSideStates(
            int dimX,
            int dimY,
            Vector position,
            out SideState upState, out SideState downState, out SideState leftState, out SideState rightState)
        {
            upState    = SideState.None;
            downState  = SideState.None;
            leftState  = SideState.None;
            rightState = SideState.None;

            var noContinueStates = SideState.Blocked | SideState.Partial;

            for (int wOff = 0;
                 ((upState & noContinueStates) == 0 || (downState & noContinueStates) == 0) &&
                 wOff < dimX;
                 wOff++)
            {
                var up   = position.AddXY(wOff, -1);
                var down = position.AddXY(wOff, dimY);

                upState = _changeStatusForSide(upState, up, wOff == 0 ? true : false);

                downState = _changeStatusForSide(downState, down, wOff == 0 ? true : false);
            }

            for (int hOff = 0;
                 ((leftState & noContinueStates) == 0 || (rightState & noContinueStates) == 0) &&
                 hOff < dimY;
                 hOff++)
            {
                var left  = position.AddXY(-1, hOff);
                var right = position.AddXY(dimX, hOff);

                leftState = _changeStatusForSide(leftState, left, hOff == 0 ? true : false);

                rightState = _changeStatusForSide(rightState, right, hOff == 0 ? true : false);
            }
        }