private SimpleModule CloneModule(ILicenseModule module)
        {
            var ret = new SimpleModule
                          {
                              Name = module.Name,
                              Features = new List<ILicenseFeature>(module.Features.Select(CloneFeature)),
                              SubModules = new List<ILicenseModule>(module.SubModules.Select(CloneModule))
                          };

            return ret;
        }
 public static void CheckModule(ILicenseModule module, ILicenseModule corresponding)
 {
     Assert.AreEqual(module.Name, corresponding.Name);
     var featureCount = module.Features.Count();
     Assert.AreEqual(featureCount, corresponding.Features.Count());
     for(var i =0; i < featureCount; i ++)
     {
         CheckFeature(module.Features.ElementAt(i), corresponding.Features.ElementAt(i));
     }
     var moduleCount = module.SubModules.Count();
     Assert.AreEqual(moduleCount, corresponding.SubModules.Count());
     for(var i = 0; i < moduleCount; i++)
     {
         CheckModule(module.SubModules.ElementAt(i), corresponding.SubModules.ElementAt(i));
     }
 }
 public ModuleSerializationContainer(ILicenseModule module)
 {
     Name = module.Name;
     Features = module.Features.Select(x => new FeatureSerializationContainer(x));
     Modules = module.SubModules.Select(x => new ModuleSerializationContainer(x));
 }