public static <T> T newDerivedClient(T client, Iterable<ClientOptionValue<?>> additionalOptions) {
        final ClientBuilderParams params = builderParams(client);
        final ClientOptions newOptions = ClientOptions.builder()
                                                      .options(params.options())
                                                      .options(additionalOptions)
                                                      .build();
        final ClientBuilderParams newParams = params.paramsBuilder()
                                                    .options(newOptions)
                                                    .build();
        return newDerivedClient(newOptions, newParams);
    }
Creates a new derived client that connects to the same {@link URI} with the specified {@code client}
and the specified {@code additionalOptions}.

@see ClientBuilder ClientBuilder, for more information about how the base options and
                   additional options are merged when a derived client is created.
core/src/main/java/com/linecorp/armeria/client/Clients.java