public static IWebSocketGremlinQueryEnvironmentBuilder Configure(this IWebSocketGremlinQueryEnvironmentBuilder builder, IConfiguration configuration)
        {
            var authenticationSection = configuration.GetSection("Authentication");
            var connectionPoolSection = configuration.GetSection("ConnectionPool");

            builder = builder
                      .At(configuration.GetRequiredConfiguration("Uri"))
                      .ConfigureConnectionPool(connectionPoolSettings =>
            {
                if (int.TryParse(connectionPoolSection[$"{nameof(ConnectionPoolSettings.MaxInProcessPerConnection)}"], out var maxInProcessPerConnection))
                {
                    connectionPoolSettings.MaxInProcessPerConnection = maxInProcessPerConnection;
                }

                if (int.TryParse(connectionPoolSection[$"{nameof(ConnectionPoolSettings.PoolSize)}"], out var poolSize))
                {
                    connectionPoolSettings.PoolSize = poolSize;
                }
            });

            if (configuration["Alias"] is { } alias)
            {
                builder = builder.SetAlias(alias);
            }

            if (authenticationSection["Username"] is { } username&& authenticationSection["Password"] is { } password)
            {
                builder = builder.AuthenticateBy(username, password);
            }

            if (Enum.TryParse <SerializationFormat>(configuration[$"{nameof(SerializationFormat)}"], out var graphsonVersion))
            {
                builder = builder.SetSerializationFormat(graphsonVersion);
            }

            return(new LogConfigurationWebSocketGremlinQueryEnvironmentBuilder(builder, configuration));
        }
 IWebSocketGremlinQueryEnvironmentBuilder IWebSocketGremlinQueryEnvironmentBuilder.SetAlias(string alias)
 {
     return(_baseBuilder.SetAlias(alias));
 }