using System;
using System.Collections;
 
class X {
        delegate void A ();
 
        static IEnumerable GetIt (int [] args)
        {
                foreach (int arg in args) {
                        Console.WriteLine ("OUT: {0}", arg);
                        A a = delegate {
                                Console.WriteLine ("arg: {0}", arg);
				return;
                        };
                        a ();
                        yield return arg;
                }
        }
 
        public static int Main ()
        {
                int total = 0;
                foreach (int i in GetIt (new int [] { 1, 2, 3})){
                        Console.WriteLine ("Got: " + i);
                        total += i;
                }
 
                if (total != 6)
                        return 1;
 
                return 0;
        }
}