private MSXML2.IXMLDOMDocument2 DoWordDomDiscover(string testFile, IMWMetadataElements elements)
		{
			Workshare.Protect.Builders.IMWXMLBuilder xmlBuilder = new Workshare.Protect.Builders.CXMLBuilderClass();

			IMWHostInstanceManager wordInstanceManager = (IMWHostInstanceManager)CreateComObject("WordInstanceManager.Controller");
			object wordDocument = wordInstanceManager.OpenDocument(testFile, false);

			IMWStrategy strategy = (IMWStrategy)CreateComObject("Metawall.WordDOMDiscoverer");
			xmlBuilder.Advise(strategy);

			try
			{
				xmlBuilder.OnDocumentBegin(testFile, "MSWORD");
				strategy.Execute(wordDocument, elements);
				xmlBuilder.OnDocumentEnd();

				return (MSXML2.IXMLDOMDocument2)xmlBuilder.XmlDocument;
			}
			finally
			{
				xmlBuilder.Unadvise(strategy);
				wordInstanceManager.CloseDocument(wordDocument, false);
				Marshal.ReleaseComObject(wordInstanceManager);
				Marshal.ReleaseComObject(strategy);
			}
		}
		private MSXML2.IXMLDOMDocument2 DoWordBinaryDiscovery(string testFile, IMWMetadataElements elements)
		{
			Workshare.Protect.Builders.IMWXMLBuilder xmlBuilder = new Workshare.Protect.Builders.CXMLBuilderClass();

			IMWStrategy strategy = (IMWStrategy)CreateComObject("Metawall.WordBinaryDiscoverer");
			xmlBuilder.Advise(strategy);

			try
			{
				xmlBuilder.OnDocumentBegin(testFile, "MSWORD");
				strategy.Execute(testFile, elements);
				xmlBuilder.OnDocumentEnd();

				return (MSXML2.IXMLDOMDocument2)xmlBuilder.XmlDocument;
			}
			finally
			{
				xmlBuilder.Unadvise(strategy);
				Marshal.ReleaseComObject(strategy);
			}
		}
		private MSXML2.IXMLDOMDocument2 DoWordBddaDiscover(string testFile, IMWMetadataElements elements)
		{
			Workshare.Protect.Builders.IMWXMLBuilder xmlBuilder = new Workshare.Protect.Builders.CXMLBuilderClass();

			IMWStrategy strategy = (IMWStrategy)CreateComObject("Workshare.ContentDiscoveryStrategy");

			xmlBuilder.Advise(strategy);
			try
			{
				xmlBuilder.OnDocumentBegin(testFile, "MSWORD");
				try
				{
					strategy.Execute(testFile, elements);
				}
				catch(COMException e)
				{
					if(S_FALSE != e.ErrorCode)
						throw e;
				}
				xmlBuilder.OnDocumentEnd();

				return (MSXML2.IXMLDOMDocument2)xmlBuilder.XmlDocument;
			}
			finally
			{
				xmlBuilder.Unadvise(strategy);
				Marshal.ReleaseComObject(strategy);
			}
		}