/// <summary>Pushes the value of i onto the evaluation stack as an int32.</summary>
        public static ILSugar LoadConstant(this ILSugar il, long i)
        {
            switch (i)
            {
            case 0:
                il.Ldc_I4_0();
                break;

            case 1:
                il.Ldc_I4_1();
                break;

            case 2:
                il.Ldc_I4_2();
                break;

            case 3:
                il.Ldc_I4_3();
                break;

            case 4:
                il.Ldc_I4_4();
                break;

            case 5:
                il.Ldc_I4_5();
                break;

            case 6:
                il.Ldc_I4_6();
                break;

            case 7:
                il.Ldc_I4_7();
                break;

            case 8:
                il.Ldc_I4_8();
                break;

            default:
                if (i <= byte.MaxValue)
                {
                    il.Ldc_I4_S((byte)i);
                }
                else if (i <= int.MaxValue)
                {
                    il.Ldc_I4((int)i);
                }
                else
                {
                    il.Ldc_I8(i);
                }
                break;
            }

            return(il);
        }