public IEnumerable <IReversiTurn> GetValidTurnsForBoard(IBoardState board)
        {
            var turnCandidates = board.GetEmptyEnemyNeighbours();

            var result = new List <IReversiTurn>();

            foreach (ICellCoordinates cell in turnCandidates)
            {
                var turn = this.TurnForCellOnBoard(cell, board);
                if (null == turn)
                {
                    continue;
                }

                result.Add(turn);
            }

            bool isNoValidTurnsLeft = (0 == result.Count);

            if (isNoValidTurnsLeft)
            {
                return(null);
            }

            return(result);
        }