protected override object DeepCloneMe()
        {
            DocumentDescriptorState cloned = new DocumentDescriptorState();
            cloned.HasBeenDeleted = HasBeenDeleted;
            cloned.Created = Created;
            cloned.BlobId = BlobId;
  
            cloned._handles = new HashSet<DocumentHandle>();
            if (_handles != null)
            {
                foreach (var handle in _handles)
                {
                    cloned._handles.Add(handle);
                }
            }
            foreach (var format in Formats)
            {
                cloned.Formats.Add(format.Key, format.Value);
            }
            cloned.Attachments = Attachments.ToList();

            if (CreationDocumentHandleInfo != null)
                cloned.CreationDocumentHandleInfo = CreationDocumentHandleInfo.Clone();
            return cloned;    
        }
        protected override object DeepCloneMe()
        {
            DocumentDescriptorState cloned = new DocumentDescriptorState();

            cloned.HasBeenDeleted = HasBeenDeleted;
            cloned.Created        = Created;
            cloned.BlobId         = BlobId;

            cloned._handles = new HashSet <DocumentHandle>();
            if (_handles != null)
            {
                foreach (var handle in _handles)
                {
                    cloned._handles.Add(handle);
                }
            }
            foreach (var format in Formats)
            {
                cloned.Formats.Add(format.Key, format.Value);
            }
            cloned.Attachments = Attachments.ToList();

            if (CreationDocumentHandleInfo != null)
            {
                cloned.CreationDocumentHandleInfo = CreationDocumentHandleInfo.Clone();
            }
            return(cloned);
        }