public void Test()
        {
            // Build a document:
            Document document = new Document();

            LabelDocumentFrame label = new LabelDocumentFrame();
            label.Label = "Testing 123";
            label.OffsetInDocument = new Point(1, 2);
            label.CallOutOffsetInDocument = new Size(3, 4);

            DocumentFill fill = new DocumentFill();
            fill.Color = Color.Red;

            RectangularDocumentFrame fillFrame = new RectangularDocumentFrame(fill);
            fillFrame.ClipBounds = new Rectangle(5, 6, 7, 8);
            fillFrame.OffsetInDocument = new Point(9, 10);

            ImageLink imageLink = new ImageLink(@"C:\Windows\Prairie Wind.bmp");
            DocumentImage image = new DocumentImage(imageLink);
            RectangularDocumentFrame imageFrame = new RectangularDocumentFrame(image);

            document.Frames.Add(label);
            document.Frames.Add(fillFrame);
            document.Frames.Add(imageFrame);

            // Round trip it:
            PropertyDictionary serialized = document.Serialize(null);

            Document resultingDocument = Document.Deserialize(serialized, @"C:\");

            // Check the frames list:
            Assert.AreEqual(3, resultingDocument.Frames.Count);
            Assert.IsAssignableFrom(typeof(LabelDocumentFrame), resultingDocument.Frames[0]);
            Assert.IsAssignableFrom(typeof(RectangularDocumentFrame), resultingDocument.Frames[1]);
            Assert.IsAssignableFrom(typeof(RectangularDocumentFrame), resultingDocument.Frames[2]);

            // Check the label frame:
            LabelDocumentFrame resultingLabel = resultingDocument.Frames[0] as LabelDocumentFrame;

            Assert.AreEqual(label.Label, resultingLabel.Label);
            Assert.AreEqual(label.OffsetInDocument, resultingLabel.OffsetInDocument);
            Assert.AreEqual(label.CallOutOffsetInDocument, resultingLabel.CallOutOffsetInDocument);

            // Check the fill frame:
            RectangularDocumentFrame resultingFillFrame = resultingDocument.Frames[1] as RectangularDocumentFrame;
            DocumentFill resultingFill = resultingFillFrame.FramedObject as DocumentFill;

            Assert.AreEqual(resultingFillFrame.ClipBounds, fillFrame.ClipBounds);
            Assert.AreEqual(resultingFillFrame.OffsetInDocument, fillFrame.OffsetInDocument);

            Assert.AreEqual(resultingFill.Color.ToArgb(), fill.Color.ToArgb());

            // Check the image frame:
            RectangularDocumentFrame resultingImageFrame = resultingDocument.Frames[2] as RectangularDocumentFrame;
            DocumentImage resultingImage = resultingImageFrame.FramedObject as DocumentImage;

            Assert.AreEqual(resultingImageFrame.ClipBounds, imageFrame.ClipBounds);
            Assert.AreEqual(resultingImageFrame.OffsetInDocument, imageFrame.OffsetInDocument);

            ImageLink resultingImageLink = resultingImage.ImageLink;

            Assert.AreEqual(imageLink.FileName, resultingImageLink.FileName);
            Assert.AreEqual(imageLink.PhysicalDimension, resultingImageLink.PhysicalDimension);
        }
 public Memento(RectangularDocumentFrame frame)
     : base(frame)
 {
     _clipBounds = frame._clipBounds;
 }