code: public ServicePoolBuilder<S> withHostDiscoverySource(HostDiscoverySource hostDiscoverySource) {
          checkNotNull(hostDiscoverySource);
          return withHostDiscovery(hostDiscoverySource, true);
      }
docs: Adds a {@link HostDiscoverySource} instance to the builder.  Multiple instances of {@code HostDiscoverySource}
  may be specified.  The service pool will query the sources in the order they were registered and use the first
  non-null {@link HostDiscovery} returned for the service name provided by the
  {@link ServiceFactory#getServiceName()} method of the factory configured by {@link #withServiceFactory}.
  <p>
  Note that using this method will cause the ServicePoolBuilder to call
  {@link HostDiscoverySource#forService(String serviceName)} when {@link #build()} is called and pass the returned
  {@link HostDiscovery} to the new {@code ServicePool}.  Subsequently calling {@link ServicePool#close()} will in
  turn call {@link HostDiscovery#close()} on the passed instance.
  
  @param hostDiscoverySource a host discovery source to use to find the {@link HostDiscovery} when constructing
  the {@link ServicePool}
  @return this