public void Test_Mesh_Serialization_HappyPath()
        {
            var stream = new MemoryStream();
            var writer = new BinaryWriter(stream);
            var reader = new BinaryReader(stream);
            var defect = new Defect(new Vector(1, 1, 1), new Vector(3, 3, 3), new Mesh(
                                        new[] { 0, 1, 2 },
                                        new[] { 1.0f, 1.0f, 1.0f, 3.0f, 3.0f, 3.0f, 1.0f, 2.0f, 3.0f }
                                        ));

            Assert.That(defect.Voxels, Is.Null);
            Assert.That(defect.Shape, Is.Not.Null);

            var clone = new Defect();

            Assert.That(() => defect.WriteToStream(writer), Throws.Nothing);
            stream.Seek(0, SeekOrigin.Begin);
            Assert.That(() => clone.ReadFromStream(reader, new Version(3, 0)), Throws.Nothing);

            Assert.That(clone.Position, Is.EqualTo(defect.Position));
            Assert.That(clone.Size, Is.EqualTo(defect.Size));
            Assert.That(clone.Voxels, Is.Null);
            Assert.That(clone.Shape, Is.Not.Null);

            Assert.That(clone.Shape.Value.Indices, Is.EquivalentTo(defect.Shape.Value.Indices));
            Assert.That(clone.Shape.Value.Vertices, Is.EquivalentTo(defect.Shape.Value.Vertices));
        }