public void TestClone()
        {
            Placemark placemark = null;

            Assert.That(() => placemark.Clone(),
                        Throws.TypeOf <ArgumentNullException>());

            placemark          = new Placemark();
            placemark.Id       = "ID";
            placemark.Geometry = new Point();
            var clone = placemark.Clone();

            Assert.That(clone, Is.Not.SameAs(placemark));
            Assert.That(clone.Id, Is.EqualTo(placemark.Id)); // Test attribute
            Assert.That(clone.Geometry, Is.Not.Null);        // Test element

            // Make sure as we change one the other doesn't
            ((Point)clone.Geometry).Extrude = true;
            Assert.That(((Point)clone.Geometry).Extrude,
                        Is.Not.EqualTo(((Point)placemark.Geometry).Extrude));

            Folder folder = new Folder();

            folder.AddFeature(placemark);
            folder.AddFeature(new Document());

            var copy = folder.Clone();

            Assert.That(copy.Features.Count(), Is.EqualTo(folder.Features.Count()));
            placemark.Id = "changed";
            Assert.That(folder.FindFeature(placemark.Id), Is.Not.Null);
            Assert.That(copy.FindFeature(placemark.Id), Is.Null);
        }