code: public AbstractServerListFilter<T> getFilterImpl(IClientConfig niwsClientConfig) throws ClientException {
          String niwsServerListFilterClassName = null;
          try {
              niwsServerListFilterClassName = niwsClientConfig.get(
                              CommonClientConfigKey.NIWSServerListFilterClassName,
                              ZoneAffinityServerListFilter.class.getName());
  
              AbstractServerListFilter<T> abstractNIWSServerListFilter = 
                      (AbstractServerListFilter<T>) ClientFactory.instantiateInstanceWithClientConfig(niwsServerListFilterClassName, niwsClientConfig);
              return abstractNIWSServerListFilter;
          } catch (Throwable e) {
              throw new ClientException(
                      ClientException.ErrorType.CONFIGURATION,
                      "Unable to get an instance of CommonClientConfigKey.NIWSServerListFilterClassName. Configured class:"
                              + niwsServerListFilterClassName, e);
          }
      }
docs: Get a ServerListFilter instance. It uses {@link ClientFactory#instantiateInstanceWithClientConfig(String, IClientConfig)}
  which in turn uses reflection to initialize the filter instance.
  The filter class name is determined by the value of {@link CommonClientConfigKey#NIWSServerListFilterClassName}
  in the {@link IClientConfig}. The default implementation is {@link ZoneAffinityServerListFilter}.