public static string deconstructXML_WordIndexer(string s, bool dax = false)
        {
            var xDoc = XDocument.Parse(s);

            var indexes  = xDoc.Descendants("fields").Attributes("numOfWords").FirstOrDefault().Value;
            var elements = xDoc.Descendants("fields").Attributes("numOfElements").FirstOrDefault().Value;
            int t        = 0;

            int.TryParse(indexes, out t);

            string[] val = new string[t];

            foreach (XElement xe in xDoc.Descendants("word"))
            {
                string index = xe.Attribute("value").Value;
                string value = xe.Value;

                if (dax == true)
                {
                    string[] il = xe.Value.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string ils in il)
                    {
                        int ilsIndex = (int)Dax.ConvertDaxToNumber(ils);
                        val[ilsIndex] = index;
                    }
                }
                else
                {
                    string[] il = xe.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                    foreach (string ils in il)
                    {
                        int tp = 0;
                        int.TryParse(ils, out tp);
                        val[tp] = index;
                    }
                }
            }
            List <char> letters = string.Join("", val.Select(x => x.ToString())).ToList();

            int numElements = 0;

            int.TryParse(elements.ToString(), out numElements);

            List <char> words = new List <char>();

            words.AddRange(Enumerable.Repeat((char)0, numElements));

            foreach (XElement xe in xDoc.Descendants("field"))
            {
                string index = xe.Attribute("value").Value;
                string value = xe.Value;

                string[] il = xe.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                int ti = 0;
                int.TryParse(index, out ti);
                char c = Convert.ToChar(ti);
                foreach (string ils in il)
                {
                    int tp = 0;
                    int.TryParse(ils, out tp);
                    words[tp] = c;
                }
            }

            int indexLetters = 0;

            for (int indexWords = 0; indexWords < words.Count; indexWords++)
            {
                if (words[indexWords] == (char)0)
                {
                    words[indexWords] = letters[indexLetters];
                    indexLetters++;
                }
            }

            return(string.Join("", words.Select(x => x.ToString())));
        }