public void Run()
        {
            int __ruleIndex = 0;

            __res          = new __MetaCnvResult <int>();
            __res.Value    = default(int);
            __res.HasValue = false;

            switch (__ruleIndex)
            {
            case 0:
            {
                int x = default(int);
                Tuples.Tuple <int, unit> xs = default(Tuples.Tuple <int, unit>);
                int y = default(int);
                if (!(__arg0 is __opComma <int, Tuples.Tuple <int, unit> >))
                {
                    goto default;
                }
                __opComma <int, Tuples.Tuple <int, unit> > __tmp0 = (__opComma <int, Tuples.Tuple <int, unit> >)__arg0;
                x  = __tmp0.__arg0;
                xs = __tmp0.__arg1;

                Getter0.get __tmp1 = new Getter0.get();
                __tmp1.__arg0 = xs;
                __tmp1.Run();
                if (!(__tmp1.__res.HasValue))
                {
                    goto default;
                }
                __MetaCnvResult <int> __tmp2 = __tmp1.__res;
                y = __tmp2.Value;
                __res.HasValue = true;
                __res.Value    = y;
                break;
            }

            default:
                break;
            }
        }
        public static void TestRecords(int components)
        {
            Random r    = new Random();
            int    last = r.Next(-100, 100);

            Tuples.Tuple <int, unit> item1 = new __opComma <int, unit>(last, new unit());
            Tuples.Tuple <int, Tuples.Tuple <int, unit> > item2 = new __opComma <int, Tuples.Tuple <int, unit> >(3, item1);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > item3 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > >(0, item2);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > item4 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > >(-1, item3);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > item5 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > >(-1, item4);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > item6 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > >(0, item5);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > > item7 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > >(9, item6);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > > > item8 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > > >(4, item7);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > > > > item9 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > > > >(3, item8);
            Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > > > > > item10 = new __opComma <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, Tuples.Tuple <int, unit> > > > > > > > > >(5, item9);
            switch (components)
            {
            case 1:
            {
                Getter0.get getTest = new Getter0.get();
                getTest.__arg0 = item1;
                getTest.Run();
                break;
            }

            case 2:
            {
                Getter1.get getTest = new Getter1.get();
                getTest.__arg0 = item2;
                getTest.Run();
                break;
            }

            case 3:
            {
                Getter2.get getTest = new Getter2.get();
                getTest.__arg0 = item3;
                getTest.Run();
                break;
            }

            case 4:
            {
                Getter3.get getTest = new Getter3.get();
                getTest.__arg0 = item4;
                getTest.Run();
                break;
            }

            case 5:
            {
                Getter4.get getTest = new Getter4.get();
                getTest.__arg0 = item5;
                getTest.Run();
                break;
            }

            case 6:
            {
                Getter5.get getTest = new Getter5.get();
                getTest.__arg0 = item6;
                getTest.Run();
                break;
            }

            case 7:
            {
                Getter6.get getTest = new Getter6.get();
                getTest.__arg0 = item7;
                getTest.Run();
                break;
            }

            case 8:
            {
                Getter7.get getTest = new Getter7.get();
                getTest.__arg0 = item8;
                getTest.Run();
                break;
            }

            case 9:
            {
                Getter8.get getTest = new Getter8.get();
                getTest.__arg0 = item9;
                getTest.Run();
                break;
            }

            case 10:
            {
                Getter9.get getTest = new Getter9.get();
                getTest.__arg0 = item10;
                getTest.Run();
                break;
            }

            default:
                break;
            }
        }