This encapsulates exporting one or more CmPossibilityLists in one or more writing systems.
        public void ExportTranslatedLists2()
        {
            Assert.AreEqual(2, m_cache.LangProject.SemanticDomainListOA.PossibilitiesOS.Count, "The number of top-level semantic domains");
            ICmSemanticDomainRepository repoSemDom = m_cache.ServiceLocator.GetInstance<ICmSemanticDomainRepository>();
            Assert.AreEqual(11, repoSemDom.Count, "The total number of semantic domains");
            int wsFr = m_cache.WritingSystemFactory.GetWsFromStr("fr");
            Assert.AreNotEqual(0, wsFr, "French (fr) should be defined");

            List<ICmPossibilityList> lists = new List<ICmPossibilityList>();
            lists.Add(m_cache.LangProject.SemanticDomainListOA);
            List<int> wses = new List<int>();
            wses.Add(wsFr);
            ExportDialog.TranslatedListsExporter exporter = new ExportDialog.TranslatedListsExporter(
                lists, wses, null);

            using (UndoableUnitOfWorkHelper helper = new UndoableUnitOfWorkHelper(m_cache.ActionHandlerAccessor,
                "Undo test", "Redo test"))
            {
                m_cache.LangProject.SemanticDomainListOA.Name.set_String(wsFr, "Domaines sémantiques");
                ICmSemanticDomain sem1 = repoSemDom.GetObject(new Guid("63403699-07C1-43F3-A47C-069D6E4316E5"));
                Assert.IsNotNull(sem1);
                sem1.Name.set_String(wsFr, "L'univers physique");
                sem1.QuestionsOS[0].Question.set_String(wsFr, "Quels sont les mots qui font référence à tout ce qu'on peut voir?");
                sem1.QuestionsOS[0].ExampleWords.set_String(wsFr, "univers, ciel, terre");
                sem1.QuestionsOS[0].ExampleSentences.set_String(wsFr, "Le rôle du prophète est alors de réveiller le courage et la foi en Dieu.");
                ICmSemanticDomain sem11 = sem1.SubPossibilitiesOS[0] as ICmSemanticDomain;
                Assert.IsNotNull(sem11);
                sem11.Name.set_String(wsFr, "Ciel");
                sem11.QuestionsOS[0].Question.set_String(wsFr, "Quels sont les mots qui signifient le ciel?");
                sem11.QuestionsOS[0].ExampleWords.set_String(wsFr, "ciel, firmament");
                sem11.QuestionsOS[2].Question.set_String(wsFr, "Quels sont les mots qui signifient l'endroit ou le pays au-delà du ciel?");

                string translatedList;
                using (var w = new StringWriter())
                {
                    exporter.ExportTranslatedLists(w);
                    translatedList = w.ToString();
                }
                using (var r = new StringReader(translatedList))
                {
                    Assert.AreEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", r.ReadLine());
                    Assert.IsTrue(r.ReadLine().StartsWith("<Lists date=\""));
                    Assert.AreEqual("<List owner=\"LangProject\" field=\"SemanticDomainList\" itemClass=\"CmSemanticDomain\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Semantic Domains</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">Domaines sémantiques</AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Sem</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Possibilities>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"63403699-07c1-43f3-a47c-069d6e4316e5\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Universe, creation</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">L'univers physique</AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for general words referring to the physical universe. Some languages may not have a single word for the universe and may have to use a phrase such as 'rain, soil, and things of the sky' or 'sky, land, and water' or a descriptive phrase such as 'everything you can see' or 'everything that exists'.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to everything we can see?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">Quels sont les mots qui font référence à tout ce qu'on peut voir?</AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">universe, creation, cosmos, heaven and earth, macrocosm, everything that exists</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">univers, ciel, terre</AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<ExampleSentences>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">In the beginning God created &lt;the heavens and the earth&gt;.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\">Le rôle du prophète est alors de réveiller le courage et la foi en Dieu.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</ExampleSentences>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("<SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"999581c4-1611-4acb-ae1b-5e6c1dfe6f0c\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Sky</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">Ciel</AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.1</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for words related to the sky.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words are used to refer to the sky?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">Quels sont les mots qui signifient le ciel?</AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">sky, firmament, canopy, vault</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">ciel, firmament</AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words refer to the air around the earth?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">air, atmosphere, airspace, stratosphere, ozone layer</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(3) What words are used to refer to the place or area beyond the sky?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">Quels sont les mots qui signifient l'endroit ou le pays au-delà du ciel?</AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">heaven, space, outer space, ether, void, solar system</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    r.Close();
                }
            }
        }
        public void ExportTranslatedLists()
        {
            Assert.AreEqual(2, m_cache.LangProject.SemanticDomainListOA.PossibilitiesOS.Count, "The number of top-level semantic domains");
            ICmSemanticDomainRepository repoSemDom = m_cache.ServiceLocator.GetInstance<ICmSemanticDomainRepository>();
            Assert.AreEqual(11, repoSemDom.Count, "The total number of semantic domains");
            int wsFr = m_cache.WritingSystemFactory.GetWsFromStr("fr");
            Assert.AreNotEqual(0, wsFr, "French (fr) should be defined");

            List<ICmPossibilityList> lists = new List<ICmPossibilityList>();
            lists.Add(m_cache.LangProject.SemanticDomainListOA);
            List<int> wses = new List<int>();
            wses.Add(wsFr);
            ExportDialog.TranslatedListsExporter exporter = new ExportDialog.TranslatedListsExporter(
                lists, wses, null);
            using (StringWriter w = new StringWriter())
            {
                exporter.ExportTranslatedLists(w);
                using (StringReader r = new StringReader(w.ToString()))
                {
                    w.Close();
                    Assert.AreEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", r.ReadLine());
                    Assert.IsTrue(r.ReadLine().StartsWith("<Lists date=\""));
                    Assert.AreEqual("<List owner=\"LangProject\" field=\"SemanticDomainList\" itemClass=\"CmSemanticDomain\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Semantic Domains</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Sem</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Possibilities>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"63403699-07c1-43f3-a47c-069d6e4316e5\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Universe, creation</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for general words referring to the physical universe. Some languages may not have a single word for the universe and may have to use a phrase such as 'rain, soil, and things of the sky' or 'sky, land, and water' or a descriptive phrase such as 'everything you can see' or 'everything that exists'.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to everything we can see?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\">(1) Quels mots se réfèrent à tout ce que nous pouvons voir?</AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">universe, creation, cosmos, heaven and earth, macrocosm, everything that exists</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<ExampleSentences>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">In the beginning God created &lt;the heavens and the earth&gt;.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</ExampleSentences>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("<SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"999581c4-1611-4acb-ae1b-5e6c1dfe6f0c\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Sky</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.1</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for words related to the sky.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words are used to refer to the sky?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">sky, firmament, canopy, vault</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words refer to the air around the earth?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">air, atmosphere, airspace, stratosphere, ozone layer</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(3) What words are used to refer to the place or area beyond the sky?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">heaven, space, outer space, ether, void, solar system</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("<SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"dc1a2c6f-1b32-4631-8823-36dacc8cb7bb\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Sun</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.1.1</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for words related to the sun. The sun does three basic things. It moves, it gives light, and it gives heat. These three actions are involved in the meanings of most of the words in this domain. Since the sun moves below the horizon, many words refer to it setting or rising. Since the sun is above the clouds, many words refer to it moving behind the clouds and the clouds blocking its light. The sun's light and heat also produce secondary effects. The sun causes plants to grow, and it causes damage to things.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to the sun?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">sun, solar, sol, daystar, our star</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words refer to how the sun moves?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">rise, set, cross the sky, come up, go down, sink</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(3) What words refer to the time when the sun rises?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">dawn, sunrise, sunup, daybreak, cockcrow, </AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<ExampleSentences>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">We got up before &lt;dawn&gt;, in order to get an early start.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</ExampleSentences>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("<SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"1bd42665-0610-4442-8d8d-7c666fee3a6d\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Moon</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.1.1.1</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for words related to the moon. In your culture people may believe things about the moon. For instance in European culture people used to believe that the moon caused people to become crazy. So in English we have words like &quot;moon-struck&quot; and &quot;lunatic.&quot; You should include such words in this domain.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to the moon?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">moon, lunar, satellite</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"b044e890-ce30-455c-aede-7e9d5569396e\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Star</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.1.1.2</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for words related to the stars and other heavenly bodies.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words are used to refer to the stars?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">star, starry, stellar</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words describe the sky when the stars are shining?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">starlit (sky), (sky is) ablaze with stars, starry (sky), star studded (sky), stars are shining</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("</SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"e836b01b-6c1a-4d41-b90a-ea5f349f88d4\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Air</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.1.2</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for words related to the air around us, including the air we breathe and the atmosphere around the earth.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to the air we breathe?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">air</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words refer to how much water is in the air?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">humid, humidity, damp, dry, sticky, muggy</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("</SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"b47d2604-8b23-41e9-9158-01526dd83894\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">World</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.2</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for words referring to the planet we live on.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to the planet we live on?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">the world, earth, the Earth, the globe, the planet</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"60364974-a005-4567-82e9-7aaeff894ab0\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Water</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">1.3</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for general words referring to water.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What general words refer to water?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">water, H2O, moisture</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words describe something that belongs to the water or is found in water?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">watery, aquatic, amphibious</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(3) What words describe something that water cannot pass through?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">waterproof, watertight</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("</SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"ba06de9e-63e1-43e6-ae94-77bea498379a\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Person</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">2</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for general words for a person or all mankind.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to a single member of the human race?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">person, human being, man, individual, figure</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words refer to a person when you aren't sure who the person is?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">someone, somebody</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("<SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"1b0270a5-babf-4151-99f5-279ba5a4b044\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Body</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">2.1</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for general words for the whole human body, and general words for any part of the body. Use a drawing or photo to label each part. Some words may be more general than others are and include some of the other words. For instance 'head' is more general than 'face' or 'nose'. Be sure that both general and specific parts are labeled.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What words refer to the body?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">body, </AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What words refer to the shape of a person's body?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                        Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">build, figure, physique, </AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(3) What general words refer to a part of the body?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">part of the body, body part, anatomy, appendage, member, orifice, </AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("<CmSemanticDomain guid=\"7fe69c4c-2603-4949-afca-f39c010ad24e\">", r.ReadLine());
                    Assert.AreEqual("<Name>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">Body functions</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Name>", r.ReadLine());
                    Assert.AreEqual("<Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">2.2</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Abbreviation>", r.ReadLine());
                    Assert.AreEqual("<Description>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"en\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"en\">Use this domain for the functions and actions of the whole body. Use the subdomains in this section  for functions, actions, secretions, and products of various parts of the body. In each domain include any special words that are used of animals.</Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("<AStr ws=\"fr\">", r.ReadLine());
                    Assert.AreEqual("<Run ws=\"fr\"></Run>", r.ReadLine());
                    Assert.AreEqual("</AStr>", r.ReadLine());
                    Assert.AreEqual("</Description>", r.ReadLine());
                    Assert.AreEqual("<Questions>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(1) What general words refer to the functions of the body?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">function</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("<Question>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">(2) What general words refer to secretions of the body?</AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</Question>", r.ReadLine());
                    Assert.AreEqual("<ExampleWords>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"en\">secrete, secretion, excrete, excretion, product, fluid, body fluids, discharge, flux, </AUni>", r.ReadLine());
                    Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
                    Assert.AreEqual("</ExampleWords>", r.ReadLine());
                    Assert.AreEqual("</CmDomainQ>", r.ReadLine());
                    Assert.AreEqual("</Questions>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("</SubPossibilities>", r.ReadLine());
                    Assert.AreEqual("</CmSemanticDomain>", r.ReadLine());
                    Assert.AreEqual("</Possibilities>", r.ReadLine());
                    Assert.AreEqual("</List>", r.ReadLine());
                    Assert.AreEqual("</Lists>", r.ReadLine());
                    Assert.AreEqual("", r.ReadToEnd());
                    r.Close();
                }
            }
        }
		public void ExportTranslatedLists_ExportsReverseAbbrAndGlossAppend()
		{
			int wsFr = m_cache.WritingSystemFactory.GetWsFromStr("fr");
			Assert.AreNotEqual(0, wsFr, "French (fr) should be defined");

			int wsEn = m_cache.WritingSystemFactory.GetWsFromStr("en");

			using (new NonUndoableUnitOfWorkHelper(m_cache.ActionHandlerAccessor))
			{
				// Set Irregular Inflectional Variant data.
				(m_cache.LangProject.LexDbOA.VariantEntryTypesOA.PossibilitiesOS[2] as ILexEntryInflType).ReverseAbbr.set_String(wsEn, "reverse abbreviation");
				(m_cache.LangProject.LexDbOA.VariantEntryTypesOA.PossibilitiesOS[2] as ILexEntryInflType).GlossAppend.set_String(wsEn, "gloss append");

				List<ICmPossibilityList> lists = new List<ICmPossibilityList>{ m_cache.LangProject.LexDbOA.VariantEntryTypesOA };

				List<int> wses = new List<int> { wsFr };
				ExportDialog.TranslatedListsExporter exporter = new ExportDialog.TranslatedListsExporter(lists, wses, null);
				string exportedOutput;
				using (StringWriter w = new StringWriter())
				{
					exporter.ExportTranslatedLists(w);
					exportedOutput = w.ToString();
				}
				using (StringReader r = new StringReader(exportedOutput))
				{
					Assert.AreEqual("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", r.ReadLine());
					StringAssert.StartsWith("<Lists date=\"", r.ReadLine());
					Assert.AreEqual("<List owner=\"LexDb\" field=\"VariantEntryTypes\" itemClass=\"LexEntryType\">", r.ReadLine());
					Assert.AreEqual("<Possibilities>", r.ReadLine());
					Assert.AreEqual("<LexEntryType guid=\"024b62c9-93b3-41a0-ab19-587a0030219a\">", r.ReadLine());
					Assert.AreEqual("<Name>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">Dialectal Variant</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Name>", r.ReadLine());
					Assert.AreEqual("<Abbreviation>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">dial. var. of</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Abbreviation>", r.ReadLine());
					Assert.AreEqual("</LexEntryType>", r.ReadLine());
					Assert.AreEqual("<LexEntryType guid=\"4343b1ef-b54f-4fa4-9998-271319a6d74c\">", r.ReadLine());
					Assert.AreEqual("<Name>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">Free Variant</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Name>", r.ReadLine());
					Assert.AreEqual("<Abbreviation>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">fr. var. of</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Abbreviation>", r.ReadLine());
					Assert.AreEqual("</LexEntryType>", r.ReadLine());
					Assert.AreEqual("<LexEntryInflType guid=\"01d4fbc1-3b0c-4f52-9163-7ab0d4f4711c\">", r.ReadLine());
					Assert.AreEqual("<Name>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">Irregular Inflectional Variant</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Name>", r.ReadLine());
					Assert.AreEqual("<Abbreviation>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">irr. inf. var. of</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Abbreviation>", r.ReadLine());
					Assert.AreEqual("<ReverseAbbr>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">reverse abbreviation</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</ReverseAbbr>", r.ReadLine());
					Assert.AreEqual("<GlossAppend>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">gloss append</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</GlossAppend>", r.ReadLine());
					Assert.AreEqual("</LexEntryInflType>", r.ReadLine());
					Assert.AreEqual("<LexEntryInflType guid=\"a32f1d1c-4832-46a2-9732-c2276d6547e8\">", r.ReadLine());
					Assert.AreEqual("<Name>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">Plural Variant</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Name>", r.ReadLine());
					Assert.AreEqual("<Abbreviation>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">pl. var. of</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Abbreviation>", r.ReadLine());
					Assert.AreEqual("</LexEntryInflType>", r.ReadLine());
					Assert.AreEqual("<LexEntryInflType guid=\"837ebe72-8c1d-4864-95d9-fa313c499d78\">", r.ReadLine());
					Assert.AreEqual("<Name>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">Past Variant</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Name>", r.ReadLine());
					Assert.AreEqual("<Abbreviation>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">pst. var. of</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Abbreviation>", r.ReadLine());
					Assert.AreEqual("</LexEntryInflType>", r.ReadLine());
					Assert.AreEqual("<LexEntryType guid=\"0c4663b3-4d9a-47af-b9a1-c8565d8112ed\">", r.ReadLine());
					Assert.AreEqual("<Name>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">Spelling Variant</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Name>", r.ReadLine());
					Assert.AreEqual("<Abbreviation>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"en\">sp. var. of</AUni>", r.ReadLine());
					Assert.AreEqual("<AUni ws=\"fr\"></AUni>", r.ReadLine());
					Assert.AreEqual("</Abbreviation>", r.ReadLine());
					Assert.AreEqual("</LexEntryType>", r.ReadLine());
					Assert.AreEqual("</Possibilities>", r.ReadLine());
					Assert.AreEqual("</List>", r.ReadLine());
					Assert.AreEqual("</Lists>", r.ReadLine());
				}
			}
		}