docs: @SneakyThrows
      private static MongoClientOptions buildMongoDbClientOptions(final BaseMongoDbProperties mongo) {
  
          var clientOptions = (MongoClientOptions.Builder) null;
  
          if (StringUtils.isNotBlank(mongo.getClientUri())) {
              val opts = buildMongoClientURI(mongo.getClientUri()).getOptions();
              clientOptions = MongoClientOptions.builder(opts);
          } else {
              clientOptions = MongoClientOptions.builder()
                  .writeConcern(WriteConcern.valueOf(mongo.getWriteConcern()))
                  .heartbeatConnectTimeout((int) Beans.newDuration(mongo.getTimeout()).toMillis())
                  .heartbeatSocketTimeout((int) Beans.newDuration(mongo.getTimeout()).toMillis())
                  .maxConnectionLifeTime(mongo.getConns().getLifetime())
                  .socketKeepAlive(mongo.isSocketKeepAlive())
                  .maxConnectionIdleTime((int) Beans.newDuration(mongo.getIdleTimeout()).toMillis())
                  .connectionsPerHost(mongo.getConns().getPerHost())
                  .socketTimeout((int) Beans.newDuration(mongo.getTimeout()).toMillis())
                  .connectTimeout((int) Beans.newDuration(mongo.getTimeout()).toMillis())
                  .sslEnabled(mongo.isSslEnabled());
  
              if (StringUtils.isNotBlank(mongo.getReplicaSet())) {
                  clientOptions.requiredReplicaSetName(mongo.getReplicaSet());
              }
          }
          clientOptions.sslContext(SSLContexts.createSystemDefault());
  
          BSON.addEncodingHook(ZonedDateTime.class, new BaseConverters.ZonedDateTimeTransformer());
  
          val codecRegistry = CodecRegistries.fromRegistries(
              CodecRegistries.fromProviders(new BaseConverters.ZonedDateTimeCodecProvider()),
              MongoClient.getDefaultCodecRegistry()
          );
          clientOptions.codecRegistry(codecRegistry);
          return clientOptions.build();
      }