private static DynamicServerListLoadBalancer<?> createLoadBalancer(IClientConfig clientConfig) {
        // TODO(argha-c): Revisit this style of LB initialization post modularization. Ideally the LB should be
        // pluggable.

        // Use a hard coded string for the LB default name to avoid a dependency on Ribbon classes.
        String loadBalancerClassName = clientConfig.get(
                CommonClientConfigKey.NFLoadBalancerClassName, "com.netflix.loadbalancer.ZoneAwareLoadBalancer");

        DynamicServerListLoadBalancer<?> lb;
        try {
            Class<?> clazz = Class.forName(loadBalancerClassName);
            lb = clazz.asSubclass(DynamicServerListLoadBalancer.class)
                    .getConstructor()
                    .newInstance();
            lb.initWithNiwsConfig(clientConfig);
        } catch (Exception e) {
            Throwables.throwIfUnchecked(e);
            throw new IllegalStateException("Could not instantiate LoadBalancer " + loadBalancerClassName, e);
        }

        return lb;
    }
@author Argha C
@since 2/25/21
<p>
Implements a resolver, wrapping a ribbon load-balancer.
zuul-discovery/src/main/java/com/netflix/zuul/discovery/DynamicServerResolver.java