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