This generalizes the regular iterator to be compatible with both use cases. Passing in the list instance directly isn't needed, because the only way you'd ever get a valid instantiation of an iterator is from a list instance itself.