code: public Gather<T> dropWhile(final Predicate<T> predicate) {
      	final Iterator<T> it = each().iterator();
          return from(new AbstractIterator<T>() {
              private boolean done = false;
              protected T computeNext() {
                  if (!done) {
                      while (it.hasNext()) {
                          T t = it.next();
                          if (!predicate.apply(t)) {
                              done = true;
                              return t;
                          }
                      }
                  }
                  if (it.hasNext()) {
                      return it.next();
                  }
                  else {
                      return endOfData();
                  }
              }
          });
      }
docs: Returns a new {@link Gather} that skips leading elements as long as a predicate returns true.