public AbstractClientOptionsBuilder endpointRemapper(
            Function<? super Endpoint, ? extends EndpointGroup> endpointRemapper) {
        requireNonNull(endpointRemapper, "endpointRemapper");
        return option(ClientOptions.ENDPOINT_REMAPPER, endpointRemapper);
    }
Sets a {@link Function} that remaps an {@link Endpoint} into an {@link EndpointGroup}.
This {@link ClientOption} is useful when you need to override a single target host into
a group of hosts to enable client-side load-balancing, e.g.
<pre>{@code
MyService.Iface client =
    Clients.newClient("tbinary+http://example.com/api",
                      MyService.Iface.class);

EndpointGroup myGroup = EndpointGroup.of(Endpoint.of("node-1.example.com")),
                                         Endpoint.of("node-2.example.com")));

MyService.Iface derivedClient =
    Clients.newDerivedClient(client, options -> {
        return options.toBuilder()
                      .endpointRemapper(endpoint -> {
                          if (endpoint.host().equals("example.com")) {
                              return myGroup;
                          } else {
                              return endpoint;
                          }
                      })
                      .build();
    });

// This request goes to 'node-1.example.com' or 'node-2.example.com'.
derivedClient.call();
}</pre>

<p>Note that the remapping does not occur recursively but only once.</p>

@see ClientOptions#ENDPOINT_REMAPPER
@see ClientOptions#endpointRemapper()
core/src/main/java/com/linecorp/armeria/client/AbstractClientOptionsBuilder.java