docs: public DBI build(Environment environment,
                       PooledDataSourceFactory configuration,
                       ManagedDataSource dataSource,
                       String name) {
  
          // Create the instance
          final DBI dbi = this.newInstance(dataSource);
  
          // Manage the data source that created this instance.
          environment.lifecycle().manage(dataSource);
  
          // Setup the required health checks.
          final Optional<String> validationQuery = configuration.getValidationQuery();
          environment.healthChecks().register(name, new DBIHealthCheck(
              environment.getHealthCheckExecutorService(),
              configuration.getValidationQueryTimeout().orElseGet(() -> Duration.seconds(5)),
              dbi,
              validationQuery));
  
          // Setup logging.
          dbi.setSQLLog(new LogbackLog(LOGGER, Level.TRACE));
  
          // Setup the timing collector
          dbi.setTimingCollector(new InstrumentedTimingCollector(environment.metrics(),
              new SanerNamingStrategy()));
  
          if (configuration.isAutoCommentsEnabled()) {
              dbi.setStatementRewriter(new NamePrependingStatementRewriter(new ColonPrefixNamedParamStatementRewriter()));
          }
  
          // Add the default argument and column mapper factories.
          this.configure(dbi, configuration);
  
          return dbi;
      }