public static IEnumerable <T> ToList <T>(this IEnumerator iterator) { return(iterator.Cast <T>().ToList()); }
private static IEnumerable <TResult> Cast <TResult>(this IEnumerator iterator) => iterator.MoveNext() ? ((TResult)iterator.Current).Concat(iterator.Cast <TResult>()) : Empty <TResult>();