//        public ParsedUri DownloadLocation
        //        {
        //            get
        //            {
        //                ParsedUri result	    = Location.Value;
        //                ParsedUri localLocation	= LocalLocation.Value;
        //                if (localLocation != null)
        //                {
        //                    FileInfo localFile	= localLocation.File;
        //                    if (localFile.Exists)
        //                        result	= localLocation;
        //                }
        //                return result;
        //            }
        //        }
        ///<summary> 
        /// @return A closure for this, or null, if this is not fit to be parsed.
        ///</summary>
        public DocumentClosure GetOrConstructClosure(MetadataServicesClient client, SemanticsGlobalCollection<Document> downloadedDocumentCollection)
        {
            DocumentClosure result	= this.documentClosure;
            if (result == null)
            {
                result	= this.documentClosure;
                if (result == null)
                {

                    result = ConstructClosure(client, downloadedDocumentCollection);
                    this.documentClosure = result;
                }
            }
            return result;
        }
 public DocumentClosure ConstructClosure(MetadataServicesClient client, SemanticsGlobalCollection<Document> downloadedDocumentCollection)
 {
     return new DocumentClosure(SemanticsSessionScope , this)
         {MetadataServicesClient = client,
         GlobalDocumentCollection = downloadedDocumentCollection};
 }