public PoolingAsyncClientConnectionManager build() {
        final TlsStrategy tlsStrategyCopy;
        if (tlsStrategy != null) {
            tlsStrategyCopy = tlsStrategy;
        } else {
            if (ReflectionUtils.determineJRELevel() <= 8 && ConscryptClientTlsStrategy.isSupported()) {
                if (systemProperties) {
                    tlsStrategyCopy = ConscryptClientTlsStrategy.getSystemDefault();
                } else {
                    tlsStrategyCopy = ConscryptClientTlsStrategy.getDefault();
                }
            } else {
                if (systemProperties) {
                    tlsStrategyCopy = DefaultClientTlsStrategy.createSystemDefault();
                } else {
                    tlsStrategyCopy = DefaultClientTlsStrategy.createDefault();
                }
            }
        }
        final PoolingAsyncClientConnectionManager poolingmgr = new PoolingAsyncClientConnectionManager(
                createConnectionOperator(tlsStrategyCopy, schemePortResolver, dnsResolver),
                poolConcurrencyPolicy,
                poolReusePolicy,
                null,
                messageMultiplexing);
        poolingmgr.setConnectionConfigResolver(connectionConfigResolver);
        poolingmgr.setTlsConfigResolver(tlsConfigResolver);
        if (maxConnTotal > 0) {
            poolingmgr.setMaxTotal(maxConnTotal);
        }
        if (maxConnPerRoute > 0) {
            poolingmgr.setDefaultMaxPerRoute(maxConnPerRoute);
        }
        return poolingmgr;
    }
Use experimental connections pool implementation that acts as a caching facade
in front of a standard connection pool and shares already leased connections
to multiplex message exchanges over active HTTP/2 connections.
<p>
Please note this flag has no effect on HTTP/1.1 and HTTP/1.0 connections.
<p>
This feature is considered experimenal

@since 5.5
@return this instance.
httpclient5/src/main/java/org/apache/hc/client5/http/impl/nio/PoolingAsyncClientConnectionManagerBuilder.java