code: public static <T, PT extends ObjectIntProcedure<? super T>> void forEachWithIndex(
              Iterable<T> iterable,
              PT procedure,
              int minForkSize,
              int taskCount)
      {
          PassThruObjectIntProcedureFactory<PT> procedureFactory = new PassThruObjectIntProcedureFactory<>(procedure);
          PassThruCombiner<PT> combiner = new PassThruCombiner<>();
          FJIterate.forEachWithIndex(iterable, procedureFactory, combiner, minForkSize, taskCount);
      }
docs: Iterate over the collection specified in parallel batches.  The
  ObjectIntProcedure used must be stateless, or use concurrent aware objects if they are to be shared.  The
  specified minimum fork size and task count are used instead of the default values.
  
  @param minForkSize Only run in parallel if input collection is longer than this.
  @param taskCount   The number of parallel tasks to submit to the executor.
  @see #forEachWithIndex(Iterable, ObjectIntProcedure)