code: public static <T> Iterator<T> dropWhile(Iterator<T> self, @ClosureParams(FirstParam.FirstGenericType.class) Closure<?> condition) {
          return new DropWhileIterator<T>(self, condition);
      }
docs: Creates an Iterator that returns a suffix of the elements from an original Iterator. As many elements
  as possible are dropped from the front of the original Iterator such that calling the given closure
  condition evaluates to true when passed each of the dropped elements.
  <pre class="groovyTestCase">
  def a = 0
  def iter = [ hasNext:{ a {@code <} 10 }, next:{ a++ } ] as Iterator
  assert [].iterator().dropWhile{ it {@code <} 3 }.toList() == []
  assert [1, 2, 3, 4, 5].iterator().dropWhile{ it {@code <} 3 }.toList() == [ 3, 4, 5 ]
  assert iter.dropWhile{ it {@code <} 5 }.toList() == [ 5, 6, 7, 8, 9 ]
  </pre>
  
  @param self      the Iterator
  @param condition the closure that must evaluate to true to continue dropping elements
  @return the shortest suffix of elements from the given Iterator such that the given closure condition
  evaluates to true for each element dropped from the front of the Iterator
  @since 1.8.7