private static PersistableLayer CreateLayer(MacroStabilityInwardsSoilLayer2D layer, MacroStabilityInwardsExportStageType stageType,
                                                    IdFactory idFactory, MacroStabilityInwardsExportRegistry registry)
        {
            var persistableLayer = new PersistableLayer
            {
                Id     = idFactory.Create(),
                Label  = layer.Data.MaterialName,
                Points = layer.OuterRing.Points.Select(p => new PersistablePoint(p.X, p.Y)).ToArray()
            };

            registry.AddGeometryLayer(stageType, layer, persistableLayer.Id);
            return(persistableLayer);
        }
        /// <summary>
        /// Asserts whether the <see cref="PersistableGeometry"/> contains the data
        /// that is representative for the <paramref name="layers"/>.
        /// </summary>
        /// <param name="layers">The layers that contain the original data.</param>
        /// <param name="geometries">The <see cref="PersistableGeometry"/> that needs to be asserted.</param>
        /// <exception cref="AssertionException">Thrown when the data in <paramref name="geometries"/>
        /// is not correct.</exception>
        public static void AssertPersistableGeometry(IEnumerable <MacroStabilityInwardsSoilLayer2D> layers, IEnumerable <PersistableGeometry> geometries)
        {
            Assert.AreEqual(2, geometries.Count());

            foreach (PersistableGeometry persistableGeometry in geometries)
            {
                Assert.IsNotNull(persistableGeometry.Id);
                IEnumerable <PersistableLayer> persistableGeometryLayers = persistableGeometry.Layers;

                Assert.AreEqual(layers.Count(), persistableGeometryLayers.Count());

                for (int i = 0; i < layers.Count(); i++)
                {
                    MacroStabilityInwardsSoilLayer2D soilLayer = layers.ElementAt(i);
                    PersistableLayer persistableLayer          = persistableGeometryLayers.ElementAt(i);

                    Assert.IsNotNull(persistableLayer.Id);
                    Assert.AreEqual(soilLayer.Data.MaterialName, persistableLayer.Label);

                    CollectionAssert.AreEqual(soilLayer.OuterRing.Points.Select(p => new PersistablePoint(p.X, p.Y)), persistableLayer.Points);
                }
            }
        }