public void TestSerialization()
        {
            ApplicationBuilder x1 = CreateObject <ApplicationBuilder>().WithName("App.Builder");

            IFormula f1 = CreateObject <ConstantFormula>().WithValue(2.3);
            IFormula f2 = CreateObject <ConstantFormula>().WithDimension(DimensionLength).WithValue(3.4);

            IParameter p1 = CreateObject <Parameter>().WithName("Patricia").WithFormula(f1).WithValue(3.1);
            IParameter p2 = CreateObject <Parameter>().WithName("Pascal").WithFormula(f1).WithValue(3.2);

            x1.Add(p1);
            x1.Add(p2);

            EventBuilder eb1 = CreateObject <EventBuilder>().WithName("Eve.Builder").WithDimension(DimensionLength).WithFormula(f1);
            EventBuilder eb2 = CreateObject <EventBuilder>().WithName("Eva.Builder").WithDimension(DimensionLength).WithFormula(f2);

            eb2.OneTime = true;

            x1.Add(eb1);
            x1.Add(eb2);

            var applicationMoleculeBuilder = CreateObject <ApplicationMoleculeBuilder>().WithName("AppMolecule");

            applicationMoleculeBuilder.Formula = f2;
            applicationMoleculeBuilder.RelativeContainerPath = new ObjectPath(new[] { "A", "B" });
            x1.AddMolecule(applicationMoleculeBuilder);

            x1.AddTransport(CreateObject <TransportBuilder>().WithName("PassiveTranport").WithFormula(f1));


            ApplicationBuilder x2 = SerializeAndDeserialize(x1);

            AssertForSpecs.AreEqualApplicationBuilder(x1, x2);
        }