public void RegisterModule(ModuleDescriptor moduleDescriptor)
        {
            ContainerBuilder containerBuilder = new ContainerBuilder();

            ModuleRegistrationContext registrationContext = new ModuleRegistrationContext(moduleDescriptor);

            moduleDescriptor.RegisterModuleTypes(registrationContext, containerBuilder);
            moduleDescriptor.RegisterModuleCommands(registrationContext, containerBuilder);
            moduleDescriptor.RegisterModuleApiContexts(registrationContext, containerBuilder);
            moduleDescriptor.RegisterModuleControllers(registrationContext, containerBuilder, controllerExtensions);
            moduleDescriptor.RegisterCustomRoutes(registrationContext, containerBuilder);

            ContextScopeProvider.RegisterTypes(containerBuilder);

            knownModules.Add(moduleDescriptor.AreaName.ToLowerInvariant(), registrationContext);

            var jsModules = moduleDescriptor.RegisterJsIncludes();

            if (jsModules != null)
            {
                foreach (var jsModuleDescriptor in jsModules)
                {
                    knownJavaScriptModules.Add(jsModuleDescriptor.Name, jsModuleDescriptor);
                }
            }

            var userRoles = moduleDescriptor.RegisterUserRoles(containerBuilder);

            UpdateConcurrentBagWithEnumerator(knownUserRoles, userRoles);

            var sidebarHeadProjections = moduleDescriptor.RegisterSidebarHeaderProjections(containerBuilder);

            UpdateConcurrentBagWithEnumerator(knownSidebarHeadContentItems, sidebarHeadProjections);

            var sidebarSideProjections = moduleDescriptor.RegisterSidebarSideProjections(containerBuilder);

            UpdateConcurrentBagWithEnumerator(knownSidebarContentItems, sidebarSideProjections);

            var sidebarBodyProjections = moduleDescriptor.RegisterSidebarMainProjections(containerBuilder);

            UpdateConcurrentBagWithEnumerator(knownSidebarBodyContentItems, sidebarBodyProjections);

            var siteSettingsProjections = moduleDescriptor.RegisterSiteSettingsProjections(containerBuilder);

            UpdateConcurrentBagWithEnumerator(knownSiteSettingsItems, siteSettingsProjections);

            var styleSheetFiles = moduleDescriptor.RegisterCssIncludes();

            if (styleSheetFiles != null)
            {
                foreach (var styleSheetFile in styleSheetFiles)
                {
                    knownStyleSheetIncludes.Add(styleSheetFile);
                }
            }
        }