Confusion about the definition of IterableFactoryDefaults

I think a few different variations of this theme would have worked equally well. Some of this is down to preference or simply coincidence.

IterableFactoryDefaults should extend IterableOps because it needs access to iterableFactory. Having a separate definition for it doesn’t look very clean to me. But we could have used a self type instead of extending the trait.

Extending both in traits like Iterable is not necessary but I find it cleaner. The intention is not that you extend IterableFactoryDefaults. The intention is to extend IterableOps and also mix in IterableFactoryDefaults.