private static void ValidateRedlineMLRegeneratedFromRTF(string origFileName, string modFileName, string path, bool changeNumbersInRedline = true)
        {


            List<ISummaryItem> result = Helpers.ValidateSummaryList(origFileName, modFileName, path, 
                (x) => x.SetOption((int) WsCompose.OptIds.OPTID_NUMBER_CHANGES, changeNumbersInRedline ? -1 : 0));

            Dictionary<int, ChangeType> expectedChangeTypes = new Dictionary<int, ChangeType>();
            foreach (ISummaryItem isi in result)
            {
                foreach (Change ch in isi.Changes)
                {
                    expectedChangeTypes[ch.Number] = ch.Type;
                }
            }

            using (WsActivationContext ac = new WsActivationContext())
            {
                string sRedline = Helpers.LastRTFRedline;
                WsCompose.WSRTFFile file = new WsCompose.WSRTFFile();
                file.InputFileName = sRedline;
                file.ReadFile();

                var pTarget = Helpers.MakeComStreamOnHGlobal();
                file.GetRedlineML(pTarget as WsCompose.IStream);

                string sCreatedRedlineML = Helpers.ExtractTextFromIStream(pTarget);

                Assert.IsFalse(sCreatedRedlineML.Contains("Summary of deletions"));
                Assert.IsFalse(sCreatedRedlineML.Contains("Document comparison by"));
                Assert.IsFalse(sCreatedRedlineML.Contains("Redline Summary"));
                Assert.IsFalse(sCreatedRedlineML.Contains("Legend:"));
                Assert.IsFalse(sCreatedRedlineML.Contains("Statistics:"));
                Assert.IsFalse(sCreatedRedlineML.Contains(">80<"), "shouldn't be leaving change numbers in");


                Helpers.ValidateRedlineML(sCreatedRedlineML);

                RedlineMLReader reader = new RedlineMLReader(new StringReader(sCreatedRedlineML));
                RedlineDocument rd = reader.Execute();

                SummaryItemBuilder bld = new SummaryItemBuilder(rd);
                List<ISummaryItem> result2 = bld.Execute();
                Helpers.ValidateChangeNumbers(result2);

                foreach (ISummaryItem isi in result2)
                {
                    foreach (Change ch in isi.Changes)
                    {
                        Assert.AreEqual(expectedChangeTypes[ch.Number], ch.Type, "Mismatched change type on " + ch.Number.ToString());
                    }
                }

                Assert.AreEqual(result.Count, result2.Count);
            }
        }
        public void TestLoadRTF()
        {
            using (WsActivationContext ac = new WsActivationContext())
            {
                string sRedline = "\\redline.rtf";
				WsCompose.WSRTFFile file = new WsCompose.WSRTFFile();
                file.InputFileName = sRedline;
                file.ReadFile();

                var pTarget = Helpers.MakeComStreamOnHGlobal();
                file.GetRedlineML(pTarget as WsCompose.IStream);

                string sCreatedRedlineML = Helpers.ExtractTextFromIStream(pTarget);

            }


        }