code: public <R> R forThose(RFunc1<Boolean, T> predicate, def<R> func, int index) {
                  ListIterator<T> it = ((List<T>) iterable).listIterator(index);
                  IteratorInfo<R> info = new IteratorInfo<>();
                  return While(it::hasNext, (loopInfo) -> {
                          int previousIndex = it.previousIndex();
                          int nextIndex = it.nextIndex();
                          boolean hasPrevious = it.hasPrevious();
                          boolean hasNext = it.hasNext();
                          T t = it.next();
                          try {
                                  return If(predicate.apply(t), () -> {
                                          return func.apply(t, info.setValues(previousIndex, nextIndex, hasPrevious, hasNext, loopInfo.currentIndex,
                                                          loopInfo.effectiveIndex, loopInfo.lastRes));
                                  }).Else(() -> null);
                          } catch (Throwable err) {
                                  StyleRuntimeException sErr = $(err);
                                  Throwable throwable = sErr.origin();
                                  if (throwable instanceof Add) {
                                          it.add(((Add) throwable).getAdd());
                                  } else if (throwable instanceof $Set) {
                                          it.set((($Set) throwable).getSet());
                                  } else if (throwable instanceof Remove) {
                                          it.remove();
                                  } else {
                                          throw sErr;
                                  }
                          }
                          return null;
                  }
docs: define a function to deal with each element in the list with given
  start index
  
  @param predicate
  a function takes in each element from list and returns
  true or false(or null)
  @param func
  a function returns 'last loop result'
  @param index
  the index where to start iteration
  @return return 'last loop value'.<br>
  check
  <a href="https://github.com/wkgcass/Style/">tutorial</a> for
  more info about 'last loop value'