public Player findWinner() {
        Player winner = checkSquareTripleForWinner(Position.NW, Position.N, Position.NE); // row 1
        if (winner == Player.Neither)
            winner = checkSquareTripleForWinner(Position.W, Position.MIDDLE, Position.E); // row 2
        if (winner == Player.Neither)
            winner = checkSquareTripleForWinner(Position.SW, Position.S, Position.SE); // row 2
        if (winner == Player.Neither)
            winner = checkSquareTripleForWinner(Position.NW, Position.W, Position.SW); // col 1
        if (winner == Player.Neither)
            winner = checkSquareTripleForWinner(Position.N, Position.MIDDLE, Position.S); // col 2
        if (winner == Player.Neither)
            winner = checkSquareTripleForWinner(Position.NE, Position.E, Position.SE); // col 3
        if (winner == Player.Neither)
            winner = checkSquareTripleForWinner(Position.NW, Position.MIDDLE, Position.SE); // diag 1
        if (winner == Player.Neither)
            winner = checkSquareTripleForWinner(Position.NE, Position.MIDDLE, Position.SW); // diag 2
        return winner;
    }