@Nullable
    @Override
    public <T> T unwrap(Object client, Class<T> type) {
        final T params = ClientFactory.super.unwrap(client, type);
        if (params != null) {
            return params;
        }

        for (ClientFactory factory : clientFactories.values()) {
            final T p = factory.unwrap(client, type);
            if (p != null) {
                return p;
            }
        }

        return null;
    }
A {@link ClientFactory} which combines all discovered {@link ClientFactory} implementations.

<h2>How are the {@link ClientFactory}s discovered?</h2>

<p>{@link DefaultClientFactory} looks up the {@link ClientFactoryProvider}s available in the current JVM
using Java SPI (Service Provider Interface). The {@link ClientFactoryProvider} implementations will create
the {@link ClientFactory} implementations.
core/src/main/java/com/linecorp/armeria/client/DefaultClientFactory.java