class LazyCachingIteratorToIterable implements Iterable<T> {

  @Override
  public Iterator<T> iterator() {
    return new CachingIterator();
  }

  public  LazyCachingIteratorToIterable(Iterator<T> iterator);

}