use guava AbstractIterator