code: @Override
      public Server choose(Object key) {
          ILoadBalancer lb = getLoadBalancer();
          Optional<Server> server = getPredicate().chooseRoundRobinAfterFiltering(lb.getAllServers(), key);
          if (server.isPresent()) {
              return server.get();
          } else {
              return null;
          }       
      }
docs: Get a server by calling {@link AbstractServerPredicate#chooseRandomlyAfterFiltering(java.util.List, Object)}.
  The performance for this method is O(n) where n is number of servers to be filtered.