Creates a new lazy Iterable with all elements that have type
The matching elements have the same order in the returned iterable as they have in iterator.
This method returns a view of the mapped elements. Iterating will not cache results, and thus iterating multiple times over the returned Iterable may yield different results, if the underlying elements change between iterations.
Iterable<T> whereType<T>() => WhereTypeIterable<T>(this);