code: public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndex(
              Iterable<T> iterable,
              BT procedure,
              Executor executor)
      {
          ParallelIterate.forEachWithIndex(
                  iterable,
                  new PassThruObjectIntProcedureFactory<BT>(procedure),
                  new PassThruCombiner<BT>(), executor);
      }
docs: Iterate over the collection specified in parallel batches using the default runtime parameters.  The
  ObjectIntProcedure used must be stateless, or use concurrent aware objects if they are to be shared.  The code
  is executed against the specified executor.
  <p>
  <pre>e.g.
  {@code final Map<Integer, Object> chm = new ConcurrentHashMap<Integer, Object>();}
  ParallelIterate.<b>forEachWithIndex</b>(collection, new ObjectIntProcedure()
  {
  public void value(Object object, int index)
  {
  chm.put(index, object);
  }
  }, executor);
  </pre>
  
  @param executor Use this executor for all execution.