code: public static <E> Iterator<Tuple2<E, Integer>> withIndex(Iterator<E> self, int offset) {
          return new ZipPostIterator<E>(self, offset);
      }
docs: Zips an iterator with indices in (value, index) order.
  <p/>
  Example usage:
  <pre class="groovyTestCase">
  assert [["a", 5], ["b", 6]] == ["a", "b"].iterator().withIndex(5).toList()
  assert ["1: a", "2: b"] == ["a", "b"].iterator().withIndex(1).collect { str, idx {@code ->} "$idx: $str" }.toList()
  </pre>
  
  @param self   an iterator
  @param offset an index to start from
  @return a zipped iterator with indices
  @see #indexed(Iterator, int)
  @since 2.4.0