code: @Override
    public void retryListener(QueryBatch batch, QueryBatchListener queryBatchListener) {
      // We get the batch and modify the client alone in order to make use
      // of the new forest client in case if the original host is unavailable.
      DatabaseClient client = null;
      Forest[] forests = batch.getBatcher().getForestConfig().listForests();
      for(Forest forest : forests) {
        if(forest.equals(batch.getForest()))
          client = getMoveMgr().getForestClient(forest);
      }
      QueryBatchImpl retryBatch = new QueryBatchImpl()
          .withClient( client )
          .withBatcher( batch.getBatcher() )
          .withTimestamp( batch.getTimestamp() )
          .withServerTimestamp( batch.getServerTimestamp() )
          .withItems( batch.getItems() )
          .withJobTicket( batch.getJobTicket() )
          .withJobBatchNumber( batch.getJobBatchNumber() )
          .withJobResultsSoFar( batch.getJobResultsSoFar() )
          .withForestBatchNumber( batch.getForestBatchNumber() )
          .withForestResultsSoFar( batch.getForestResultsSoFar() )
          .withForest( batch.getForest() )
          .withJobTicket( batch.getJobTicket() );
      queryBatchListener.processEvent(retryBatch);
    }
docs: /*
  Accepts a QueryBatch which was successfully retrieved from the server and a
  QueryBatchListener which was failed to apply and retry that listener on the batch.