Add IteratorPreference, IteratorStrategy, IteratorBuilderImpl abstraction