code: public static <T, R extends Collection<T>> R select(
              Iterable<T> iterable,
              Predicate<? super T> predicate,
              R target,
              int batchSize,
              ForkJoinPool executor,
              boolean allowReorderedResult)
      {
          SelectProcedureCombiner<T> combiner = new SelectProcedureCombiner<>(iterable, target, 10, allowReorderedResult);
          SelectProcedureFactory<T> procedureFactory = new SelectProcedureFactory<>(predicate, batchSize);
          int taskCount = FJIterate.calculateTaskCount(iterable, batchSize);
          FJIterate.forEach(iterable, procedureFactory, combiner, batchSize, taskCount, executor);
          return (R) combiner.getResult();
      }
docs: Same effect as {@link Iterate#select(Iterable, Predicate)}, but executed in parallel batches,
  and writing output into the specified collection.
  
  @param target               Where to write the output.
  @param allowReorderedResult If the result can be in a different order.
  Allowing reordering may yield faster execution.
  @return The 'target' collection, with the selected elements added.