public static IEnumerator <ICounter> Infinite(this ICounter counter) { while (true) { foreach (var item in counter.AsEnumerable()) { yield return(item.Current); } counter.Reset(); } }