code: public ParSeqRestClient build() {
  
      if (_inboundRequestContextFinder == null) {
        LOGGER.debug("InboundRequestContextFinder not specified, using default one");
      }
      InboundRequestContextFinder inboundRequestContextFinder = _inboundRequestContextFinder == null ?
          () -> Optional.empty() : _inboundRequestContextFinder;
  
      if (_config != null) {
        LOGGER.debug("One config specified");
        _configs = Collections.singletonMap(DEFAULT_CONFIG, _config);
        _configChooser = (irc, r) -> DEFAULT_CONFIG;
      } else if (_configs == null) {
        throw new IllegalStateException("One type of config has to be specified using either setConfig() or setMultipleConfigs().");
      } else {
        LOGGER.debug("Multiple configs specified");
      }
  
      RequestConfigProvider configProvider = new MultipleRequestConfigProvider(_configs, _configChooser, inboundRequestContextFinder);
      Function<Request<?>, RequestContext> requestContextProvider = (_requestContextProvider == null) ?
          request -> new RequestContext() :
          _requestContextProvider;
  
      ParSeqRestClient parseqClient = new ParSeqRestClient(_client, configProvider, requestContextProvider, _d2RequestTimeoutEnabled);
      if (_batchingSupport != null) {
        LOGGER.debug("Found batching support");
        _batchingSupport.registerStrategy(parseqClient);
      } else {
        LOGGER.debug("Did not find batching support");
      }
      return parseqClient;
    }
docs: This method may throw RuntimeException e.g. when there is a problem with configuration.
  
  @throws RuntimeException e.g. when there is a problem with configuration
  @return instance of ParSeqRestClient