public void Configuration(IAppBuilder app)
        {
            var serviceCollection = new ServiceCollection();

            if (_registerApiControllerAssemblyPredicate != null)
            {
                serviceCollection.Builder.RegisterApiControllers(
                    AppDomain.CurrentDomain
                    .GetAssemblies()
                    .Where(_registerApiControllerAssemblyPredicate)
                    .ToArray());
            }

            ConfigureServices(serviceCollection);

            var mapper = new MapperConfiguration(serviceCollection.MapperConfiguration).CreateMapper();

            serviceCollection.Builder.RegisterInstance(mapper).As <IMapper>().SingleInstance();

            var config             = new HttpConfiguration();
            var applicationBuilder = new WebApplicationBuilder(app, serviceCollection, config);

            app.UseAutofacMiddleware(applicationBuilder.Services);
            Configure(applicationBuilder);

            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver  = new CamelCasePropertyNamesContractResolver();
            config.Formatters.JsonFormatter.UseDataContractJsonSerializer        = false;
            config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include;

            applicationBuilder.MapHttpAttributeRoutesForRegisteredApiControllers(config);
            applicationBuilder.MapRegisteredApiRoutes(config);
            app.UseAutofacWebApi(config);

            app.UseWebApi(config);

            ConfigureFinalMiddleware(app);
        }