private void ExtractLibraries(ProvisioningTemplate template, ProvisioningTemplateCreationInformation creationInformation, PnPMonitoredScope scope)
        {
            scope.LogInfo("ContentProvisioniningExtensibilityHandler.ExtractLibraries");
            var libraries = template.Lists.Where(p => SupportedLibraryTemplateTypes.Contains(p.TemplateType));

            foreach (var library in libraries)
            {
                scope.LogInfo(String.Format("ContentProvisioniningExtensibilityHandler.ExtractLibraries {0}", library.Url));

                var splibrary     = web.GetListByUrl(library.Url);
                var libraryFolder = splibrary.RootFolder;
                splibrary.EnsureProperty(p => p.RootFolder);
                var sourceFiles = GetFiles(libraryFolder);
                clientContext.ExecuteQueryRetry();
                var formsPath = String.Format("{0}/Forms", libraryFolder.ServerRelativeUrl);
                var mPath     = String.Format("{0}/_m/", libraryFolder.ServerRelativeUrl);
                var wPath     = String.Format("{0}/_w/", libraryFolder.ServerRelativeUrl);
                var tPath     = String.Format("{0}/_t/", libraryFolder.ServerRelativeUrl);
                sourceFiles = sourceFiles.Where(p => !p.ServerRelativeUrl.StartsWith(formsPath) &&
                                                !p.ServerRelativeUrl.StartsWith(mPath) &&
                                                !p.ServerRelativeUrl.StartsWith(wPath) &&
                                                !p.ServerRelativeUrl.StartsWith(tPath)
                                                );
                var featureTemplate = ProvisioningTemplate.GetPublishingFeatureBaseTemplate();

                foreach (var sourceFile in sourceFiles)
                {
                    if (!featureTemplate.IsFeatureNativeFile(sourceFile.Name))
                    {
                        ExtractFile(sourceFile, template, creationInformation, scope);
                    }
                }
            }
        }