using System.Collections;
public static class Ext {
public static IEnumerator GetRecursiveEnumerator(this IEnumerable i) {
foreach (object v in i) {
var _v = v as IEnumerable;
var _n = _v.GetRecursiveEnumerator();
public static IEnumerable f0() {
Console.WriteLine("f0 1");
Console.WriteLine("f0 2");
public static IEnumerable f1() {
Console.WriteLine("f1 1");
Console.WriteLine("f1 2");
public static IEnumerable f2() {
Console.WriteLine("f2 0");
Console.WriteLine("f2 1");
public static void Main()
var f = f2().GetRecursiveEnumerator();