public static Task RunBatchEngineWebHosting(this IWebHostBuilder builder, string urls, SwaggerOptions?swaggerOptions = null, IBatchInterceptor?interceptor = null)
 {
     return(builder
            .PrepareBatchEngineMiddleware(interceptor)
            .ConfigureServices(services =>
     {
         if (swaggerOptions == null)
         {
             // GetEntryAssembly() never returns null when called from managed code.
             var entryAsm = Assembly.GetEntryAssembly() !;
             var xmlName = entryAsm.GetName().Name + ".xml";
             var xmlPath = Path.Combine(Path.GetDirectoryName(entryAsm.Location) ?? "", xmlName);
             swaggerOptions = new SwaggerOptions(entryAsm.GetName().Name !, "", "/")
             {
                 XmlDocumentPath = xmlPath
             };
         }
         services.AddSingleton <SwaggerOptions>(swaggerOptions);
     })
            .UseKestrel()
            .UseUrls(urls)
            .UseStartup <DefaultStartup>()
            .Build()
            .RunAsync());
 }