public static string GetName <TProperty>(Expression <Func <TProperty> > expression)
        {
label_1:
            int num1 = -1214815627;
            string propertyName;

            while (true)
            {
                int  num2 = -1310253325;
                uint num3;
                switch ((num3 = (uint)(num1 ^ num2)) % 3U)
                {
                case 1:
                    propertyName = ExpressionUtilities.GetPropertyName <TProperty>(expression);
                    num1         = (int)num3 * -1011852755 ^ -1335856473;
                    continue;

                case 2:
                    goto label_1;

                default:
                    goto label_4;
                }
            }
label_4:
            return(propertyName);
        }
        public static string GetName <TClass>(Expression <Func <TClass, object> > expression)
        {
label_1:
            int num1 = 1000859716;
            string propertyName;

            while (true)
            {
                int  num2 = 6155730;
                uint num3;
                switch ((num3 = (uint)(num1 ^ num2)) % 3U)
                {
                case 0:
                    goto label_1;

                case 2:
                    propertyName = ExpressionUtilities.GetPropertyName <TClass>(expression);
                    num1         = (int)num3 * 2057970788 ^ -263082944;
                    continue;

                default:
                    goto label_4;
                }
            }
label_4:
            return(propertyName);
        }
        public static string GetName <TClass, TProperty>(Expression <Func <TClass, TProperty> > expression)
        {
label_1:
            int num1 = 765084080;
            string propertyName;

            while (true)
            {
                int  num2 = 542021591;
                uint num3;
                switch ((num3 = (uint)(num1 ^ num2)) % 4U)
                {
                case 0:
                    num1 = (int)num3 * -1296494272 ^ -1841687354;
                    continue;

                case 2:
                    goto label_1;

                case 3:
                    propertyName = ExpressionUtilities.GetPropertyName <TClass, TProperty>(expression);
                    num1         = (int)num3 * -701321050 ^ 513466501;
                    continue;

                default:
                    goto label_5;
                }
            }
label_5:
            return(propertyName);
        }