public override SuggestedMoves ChooseColor(Color[,] board)
        {
            MapNode        head                  = MapBuilder.BuildMap(board);
            ISet <MapNode> firstLayer            = head.GetNeighbors();
            List <Color>   possibleColorsToClear = firstLayer.Select(node => node.Color).ToList();

            IEnumerator <MapNode> breathFirstSearch = head.BFS().GetEnumerator();

            while (breathFirstSearch.MoveNext() && possibleColorsToClear.Count > 0)
            {
                MapNode currentNode = breathFirstSearch.Current;
                if (!firstLayer.Contains(currentNode))
                {
                    //can't wipe out that color, it is behind the first layer
                    possibleColorsToClear.Remove(currentNode.Color);
                }
            }

            SuggestedMove  move  = new SuggestedMove(possibleColorsToClear);
            SuggestedMoves moves = new SuggestedMoves();

            moves.AddFirst(move);
            return(moves);
        }