private GamePosition blockSeriesOfFourOrMoreInCheckMode(GameBoardMark playerMark) {
        int zero = 0;

        int upToSquaresPerSide, upToFive, upToSix;
        GamePosition position = new GamePosition();
        GamePosition position2 = new GamePosition();

        for (upToSix = 0; upToSix < 6; upToSix++) {
            for (upToSquaresPerSide = 0; upToSquaresPerSide < GameBoard.SQUARES_PER_SIDE; upToSquaresPerSide++) {
                gameBoard.resetAllMarksAlongAxesForFirstHalfOfBoard(marksByAxis);

                position = checkFor5AlongHorizAxis(playerMark, zero, upToSquaresPerSide, upToSix, position);

                if (marksByAxis.valueAtPositionPairsMatch(new MarksByAxisPositionPair(0, 4), new MarksByAxisPositionPair(1, 1))) {
                    return position;
                }

                position = checkFor5AlongVertAxis(playerMark, zero, upToSquaresPerSide, upToSix, position);

                if (marksByAxis.valueAtPositionPairsMatch(new MarksByAxisPositionPair(2, 4), new MarksByAxisPositionPair(3, 1))) {
                    return position;
                }
            }

            for (upToSquaresPerSide = 0; upToSquaresPerSide < 6; upToSquaresPerSide++) {
                gameBoard.resetAllMarksAlongAxesForFirstHalfOfBoard(marksByAxis);

                for (upToFive = 0; upToFive < 5; upToFive++) {
                    position = checkFor5AlongDiagDownRightAxis(playerMark, zero, upToSquaresPerSide, upToFive, upToSix, position);
                    position2 = checkFor5AlongDiagUpRightAxis(playerMark, zero, upToSquaresPerSide, upToFive, upToSix, position2);
                }

                if (marksByAxis.valueAtPositionPairsMatch(new MarksByAxisPositionPair(0, 4), new MarksByAxisPositionPair(1, 1))) {
                    return position;
                }

                if (marksByAxis.valueAtPositionPairsMatch(new MarksByAxisPositionPair(2, 4), new MarksByAxisPositionPair(3, 1))) {
                    return position2;
                }
            }
        }
        return GamePosition.nonePosition();
    }