code: public ServicePoolBuilder<S> withHostDiscovery(final HostDiscovery hostDiscovery) {
          checkNotNull(hostDiscovery);
          HostDiscoverySource hostDiscoverySource = new HostDiscoverySource() {
              @Override
              public HostDiscovery forService(String serviceName) {
                  return hostDiscovery;
              }
          };
          return withHostDiscovery(hostDiscoverySource, false);
      }
docs: Adds a {@link HostDiscovery} instance to the builder.  The service pool will use this {@code HostDiscovery}
  instance unless a preceding {@link HostDiscoverySource} provides a non-null instance of {@code HostDiscovery} for
  a given service name.
  <p>
  Once this method is called, any subsequent calls to host discovery-related methods on this builder instance are
  ignored (because this non-null discovery will always be returned).
  <p>
  Note that callers of this method are responsible for calling {@link HostDiscovery#close} on the passed instance.
  
  @param hostDiscovery the host discovery instance to use in the built {@link ServicePool}
  @return this