public static Func <T, T, T> CreateTwoParametricFunction <T>(Expression <T> expression, string firstVarName, string secondVarName)
        {
            VariableExpression <T> variable1 = expression.FindVariable(firstVarName);

            if (variable1 == null)
            {
                throw new ArgumentException(String.Format(Properties.Resources.EXC_VARIABLE_NOT_FOUND, firstVarName));
            }

            VariableExpression <T> variable2 = expression.FindVariable(secondVarName);

            if (variable2 == null)
            {
                throw new ArgumentException(String.Format(Properties.Resources.EXC_VARIABLE_NOT_FOUND, secondVarName));
            }

            TwoParametricFunctionCreator <T> creator = new TwoParametricFunctionCreator <T>(expression, variable1, variable2);

            return(creator.Evaluate);
        }
        public static Func <T, T, T> CreateTwoParametricFunction <T>(Expression <T> expression, VariableExpression <T> firstVar, VariableExpression <T> secondVar)
        {
            TwoParametricFunctionCreator <T> creator = new TwoParametricFunctionCreator <T>(expression, firstVar, secondVar);

            return(creator.Evaluate);
        }