I am using ConversationPartCollection and it does not implement Iterator, as most of the Collections (in this SDK) do. Because of that, the code was looking pretty bad, as I couldn't use the TypedDataCollectionIterator either, as it is package-level. The solution to this is to make TypedDataCollection implement Iterator directly, and all its subclasses will benefit from it.
How?
First thing, TypedDataCollection now implements Iterator, it is delegating the hasNext(), next() and remove() methods to a TypedDataCollectionIterator instance. Second, I have removed all specific implementations of Iterator from all Collection classes, which were just copy-paste.
Why?
I am using ConversationPartCollection and it does not implement Iterator, as most of the Collections (in this SDK) do. Because of that, the code was looking pretty bad, as I couldn't use the TypedDataCollectionIterator either, as it is package-level. The solution to this is to make TypedDataCollection implement Iterator directly, and all its subclasses will benefit from it.
How?
First thing, TypedDataCollection now implements Iterator, it is delegating the hasNext(), next() and remove() methods to a TypedDataCollectionIterator instance. Second, I have removed all specific implementations of Iterator from all Collection classes, which were just copy-paste.