class ApimlLoadBalancer extends ZoneAwareLoadBalancer<T> {

    @Override
    public Server chooseServer(Object key) {
        Server server = super.chooseServer(key);

        if (server == null) {
            return null;
        }

        if (server instanceof DiscoveryEnabledServer) {
            RequestContextUtils.setInstanceInfo(((DiscoveryEnabledServer) server).getInstanceInfo());
            RequestContextUtils.addDebugInfo("Load Balancer chooses: " + ((DiscoveryEnabledServer) server).getInstanceInfo());
        } else {
            throw new IllegalStateException("Unexpected error, please contact Broadcom support");
        }

        return server;
    }

    public  ApimlLoadBalancer(
        IClientConfig clientConfig,
        IRule rule,
        IPing ping,
        ServerList<T> serverList,
        ServerListFilter<T> filter,
        ServerListUpdater serverListUpdater,
        LoadBalancerRegistry loadBalancerRegistry
    );

}