public void DefineCompositeComponentSerializeDeserializeTest()
        {
            // load the experiment to be exported
            string experimentFilename = System.IO.Path.Combine(AppContext.BaseTestDirectory, "Preprocessor.gml");
            Experiment experiment = ExperimentManager.Load(experimentFilename, AppContext.Components);
            experiment.Settings = AppContext.Settings; //applying these settings was causing the bug #74

            //select all nodes
            foreach (ExperimentNode node in experiment.Vertices)
            {
                node.IsSelected = true;
            }

            DefiningCompositeComponentSetup setup = new DefiningCompositeComponentSetup(experiment);
            setup.CompositeComponentLocationFilePath = exportFile;

            var tmpCompositeComponentDefinition = setup.GenerateCompositeComponentDefinition();

            XmlSerializer serializer = new XmlSerializer(typeof(TraceLab.Core.Components.CompositeComponentMetadataDefinition));

            Assert.IsFalse(File.Exists(exportFile));

            using (TextWriter writer = new StreamWriter(exportFile))
            {
                serializer.Serialize(writer, tmpCompositeComponentDefinition);
                writer.Close();
            }

            //check if file has been created
            Assert.IsTrue(System.IO.File.Exists(exportFile));

            //deserialize the file to CompositeComponentMetadataDefinition
            CompositeComponentMetadataDefinition compositeComponentDefinition;
            using (XmlReader reader = XmlReader.Create(exportFile))
            {
                compositeComponentDefinition = (CompositeComponentMetadataDefinition)serializer.Deserialize(reader);
                compositeComponentDefinition.PostProcessReadXml(AppContext.Components, AppContext.BaseTestDirectory);
            }
            Assert.IsNotNull(compositeComponentDefinition);
            Assert.AreEqual(compositeComponentDefinition.ID, tmpCompositeComponentDefinition.ID);
            Assert.AreEqual(compositeComponentDefinition.Version, tmpCompositeComponentDefinition.Version);
            Assert.AreEqual(compositeComponentDefinition.Classname, tmpCompositeComponentDefinition.Classname); //NAME
            Assert.AreEqual(compositeComponentDefinition.Author, tmpCompositeComponentDefinition.Author);
            Assert.AreEqual(compositeComponentDefinition.Label, tmpCompositeComponentDefinition.Label);
            Assert.AreEqual(compositeComponentDefinition.Description, tmpCompositeComponentDefinition.Description);
            Assert.AreEqual(compositeComponentDefinition.IOSpecDefinition, tmpCompositeComponentDefinition.IOSpecDefinition);
            Assert.AreEqual(compositeComponentDefinition.ConfigurationWrapperDefinition.Properties.Count, tmpCompositeComponentDefinition.ConfigurationWrapperDefinition.Properties.Count);
            Assert.AreEqual(compositeComponentDefinition.ComponentGraph.VertexCount, tmpCompositeComponentDefinition.ComponentGraph.VertexCount);
            Assert.AreEqual(compositeComponentDefinition.ComponentGraph.EdgeCount, tmpCompositeComponentDefinition.ComponentGraph.EdgeCount);

        }