public static ExtractConfiguration FromCreationInformation(ProvisioningTemplateCreationInformation information)
        {
            var config = new ExtractConfiguration
            {
                BaseTemplate = information.BaseTemplate
            };

            config.ContentTypes.Groups    = information.ContentTypeGroupsToInclude;
            config.Extensibility.Handlers = information.ExtensibilityHandlers;
            config.FileConnector          = information.FileConnector;
            if (information.HandlersToProcess == Model.Handlers.All)
            {
                config.Handlers = new List <ConfigurationHandler>();
            }
            else
            {
                foreach (var handler in (Handlers[])Enum.GetValues(typeof(Handlers)))
                {
                    if (information.HandlersToProcess.HasFlag(handler))
                    {
                        if (Enum.TryParse <ConfigurationHandler>(handler.ToString(), out ConfigurationHandler configurationHandler))
                        {
                            config.Handlers.Add(configurationHandler);
                        }
                    }
                }
            }

            config.Pages.IncludeAllClientSidePages         = information.IncludeAllClientSidePages;
            config.Taxonomy.IncludeAllTermGroups           = information.IncludeAllTermGroups;
            config.Taxonomy.IncludeSiteCollectionTermGroup = information.IncludeSiteCollectionTermGroup;
            config.SiteSecurity.IncludeSiteGroups          = information.IncludeSiteGroups;
            config.Taxonomy.IncludeSecurity = information.IncludeTermGroupsSecurity;
            if (information.ListsToExtract != null && information.ListsToExtract.Any())
            {
                foreach (var list in information.ListsToExtract)
                {
                    config.Lists.Lists.Add(new Configuration.Lists.Lists.ExtractListsListsConfiguration()
                    {
                        Title = list
                    });
                }
            }
            if (information.MessagesDelegate != null)
            {
                config.MessagesDelegate = (message, type) =>
                {
                    information.MessagesDelegate(message, type);
                };
            }
            config.PersistAssetFiles = information.PersistBrandingFiles || information.PersistPublishingFiles;
            config.MultiLanguage.PersistResources = information.PersistMultiLanguageResources;
            if (information.ProgressDelegate != null)
            {
                config.ProgressDelegate = (message, step, total) =>
                {
                    information.ProgressDelegate(message, step, total);
                };
            }
            config.PropertyBag.ValuesToPreserve     = information.PropertyBagPropertiesToPreserve;
            config.MultiLanguage.ResourceFilePrefix = information.ResourceFilePrefix;
            config.Publishing.Persist = information.PersistPublishingFiles;
            config.Publishing.IncludeNativePublishingFiles = information.IncludeNativePublishingFiles;
            config.SearchSettings.Include = information.IncludeSearchConfiguration;
            return(config);
        }