using System.Collections;
public static void Main() {
IEnumerator coroutine = startCoroutine(sequence());
while(coroutine.MoveNext()) {
Console.WriteLine(coroutine.Current);
public static IEnumerator startCoroutine(IEnumerator e) {
if(e.Current != null && e.Current is IEnumerator) {
IEnumerator next = startCoroutine((IEnumerator)(e.Current));
yield return next.Current;
public static IEnumerator sequence() {
Console.WriteLine("1st iterate");
Console.WriteLine("Pause");
Console.WriteLine("1st iterate");
public static IEnumerator pause (int n) {
for(int i = 0; i < n; i++) {
yield return "pause " + i;
public static IEnumerator iterate (int n) {
for(int i = 0; i < n; i++) {
yield return "iterate " + i;