docs: public static <A> Iterator<Pair<Integer, A>> indexed(final Iterator<? extends A> iterator) {
  		if (iterator == null)
  			throw new NullPointerException("iterator");
  		return new AbstractIterator<Pair<Integer, A>>() {
  			int i = 0;
  			@Override
  			protected Pair<Integer, A> computeNext() {
  				if (iterator.hasNext()) {
  					Pair<Integer, A> next = new Pair<Integer, A>(i, iterator.next());
  					if (i != Integer.MAX_VALUE)
  						i++;
  					return next;
  				} else {
  					return endOfData();
  				}
  			}
  		};
  	}