docs: public Client build(String name) {
          if ((environment == null) && ((executorService == null) || (objectMapper == null))) {
              throw new IllegalStateException("Must have either an environment or both " +
                      "an executor service and an object mapper");
          }
  
          if (executorService == null) {
              // Create an ExecutorService based on the provided
              // configuration. The DisposableExecutorService decorator
              // is used to ensure that the service is shut down if the
              // Jersey client disposes of it.
              executorService = requireNonNull(environment).lifecycle()
                  .executorService("jersey-client-" + name + "-%d")
                  .minThreads(configuration.getMinThreads())
                  .maxThreads(configuration.getMaxThreads())
                  .workQueue(new ArrayBlockingQueue<>(configuration.getWorkQueueSize()))
                  .build();
          }
  
          if (objectMapper == null) {
              objectMapper = requireNonNull(environment).getObjectMapper();
          }
  
          if (environment != null) {
              validator = environment.getValidator();
          }
  
          return build(name, executorService, objectMapper, validator);
      }