code: public static <T> Collection<T> dropWhile(Iterable<T> self, @ClosureParams(FirstParam.FirstGenericType.class) Closure<?> condition) {
          Collection<T> selfCol = self instanceof Collection ? (Collection<T>) self : toList(self);
          Collection<T> result = createSimilarCollection(selfCol);
          addAll(result, dropWhile(self.iterator(), condition));
          return result;
      }
docs: Returns a suffix of this Iterable where elements are dropped from the front
  while the given closure evaluates to true.
  <pre class="groovyTestCase">
  class HorseIterable implements Iterable<String> {
  Iterator<String> iterator() { "horse".iterator() }
  }
  def horse = new HorseIterable()
  assert horse.dropWhile{ it < 'r' } == ['r', 's', 'e']
  assert horse.dropWhile{ it <= 'r' } == ['s', 'e']
  </pre>
  
  @param self      an Iterable
  @param condition the closure that must evaluate to true to continue dropping elements
  @return a Collection containing the shortest suffix of the given Iterable such that the given closure condition
  evaluates to true for each element dropped from the front of the Iterable
  @since 1.8.7