Factoring our type-safe iterators through Guavas ForwardingIterator