code: public static <T> List<T> dropWhile(List<T> self, @ClosureParams(FirstParam.FirstGenericType.class) Closure<?> condition) {
          int num = 0;
          BooleanClosureWrapper bcw = new BooleanClosureWrapper(condition);
          for (T value : self) {
              if (bcw.call(value)) {
                  num += 1;
              } else {
                  break;
              }
          }
          return drop(self, num);
      }
docs: Returns a suffix of this List where elements are dropped from the front
  while the given Closure evaluates to true.
  Similar to {@link #dropWhile(Iterable, groovy.lang.Closure)}
  except that it attempts to preserve the type of the original list.
  <pre class="groovyTestCase">
  def nums = [ 1, 3, 2 ]
  assert nums.dropWhile{ it < 4 } == []
  assert nums.dropWhile{ it < 3 } == [ 3, 2 ]
  assert nums.dropWhile{ it != 2 } == [ 2 ]
  assert nums.dropWhile{ it == 0 } == [ 1, 3, 2 ]
  </pre>
  
  @param self      the original list
  @param condition the closure that must evaluate to true to continue dropping elements
  @return the shortest suffix of the given List such that the given closure condition
  evaluates to true for each element dropped from the front of the List
  @since 1.8.7