@Nullable
    @Override
    public <T> T as(Class<T> type) {
        requireNonNull(type, "type");

        T result = ClientFactory.super.as(type);
        if (result != null) {
            return result;
        }

        for (ClientFactory f : clientFactories.values()) {
            result = f.as(type);
            if (result != null) {
                return result;
            }
        }

        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