public static LightTestFixture Deserialize(TreeNode <YamlObject> tree)
        {
            var root = new TreeNode <LightScript>();

            var fixture = new LightTestFixture();

            YamlSerializer.DeserializeSimpleProperties(fixture, tree);

            foreach (var yamlScriptNode in tree)
            {
                var s = YamlScriptIO.Deserialize(yamlScriptNode);
                if (s == null || s.Name == null && s.Commands.Count() == 0) // Test fixture name is also part of the tree, so skip it
                {
                    continue;
                }

                fixture.AddScript(Script.FromLightScript(s));
            }

            return(fixture);
        }
        public static TreeNode <YamlObject> Serialize(LightTestFixture fixture)
        {
            var level         = 0;
            var fixtureObject = new YamlObject(level, fixture.GetType().Name, "");
            var tree          = new TreeNode <YamlObject>(fixtureObject);

            foreach (var n in YamlSerializer.SerializeSimpleProperties(fixture, level + 1))
            {
                tree.AddChild(n);
            }

            tree.Join(YamlScriptIO.Serialize(fixture.Setup.ToLightScript(), level + 1));
            tree.Join(YamlScriptIO.Serialize(fixture.TearDown.ToLightScript(), level + 1));
            tree.Join(YamlScriptIO.Serialize(fixture.OneTimeSetup.ToLightScript(), level + 1));
            tree.Join(YamlScriptIO.Serialize(fixture.OneTimeTeardown.ToLightScript(), level + 1));

            foreach (var t in fixture.Tests)
            {
                tree.Join(YamlScriptIO.Serialize(t.ToLightScript(), level + 1));
            }

            return(tree);
        }