code: public static <T> Collection<T> drop(Iterable<T> self, int num) {
          Collection<T> result = createSimilarCollection(self);
          addAll(result, drop(self.iterator(), num));
          return result;
      }
docs: Drops the given number of elements from the head of this Iterable.
  <pre class="groovyTestCase">
  def strings = [ 'a', 'b', 'c' ]
  assert strings.drop( 0 ) == [ 'a', 'b', 'c' ]
  assert strings.drop( 2 ) == [ 'c' ]
  assert strings.drop( 5 ) == []
  
  class AbcIterable implements Iterable<String> {
  Iterator<String> iterator() { "abc".iterator() }
  }
  def abc = new AbcIterable()
  assert abc.drop(0) == ['a', 'b', 'c']
  assert abc.drop(1) == ['b', 'c']
  assert abc.drop(3) == []
  assert abc.drop(5) == []
  </pre>
  
  @param self the original Iterable
  @param num  the number of elements to drop from this Iterable
  @return a Collection consisting of all the elements of this Iterable minus the first <code>num</code> elements,
  or an empty list if it has less then <code>num</code> elements.
  @since 1.8.7