protected static FunctionExpression GetTranslatedAst(
            System.Linq.Expressions.Expression expression,
            object[] translators       = null,
            object[] validationOptions = null)
        {
            var translation = Translate(expression, translators, validationOptions);
            var jsParser    = new JavaScriptParser();

            return(jsParser.ParseFunctionExpression(translation));
        }
        protected static string Translate(System.Linq.Expressions.Expression expression, object[] translators = null, object[] validationOptions = null)
        {
            if (validationOptions == null)
            {
                validationOptions = new object[0];
            }

            var args        = validationOptions.Union(new object[] { "" }).ToArray();
            var translator  = CreateTranslator(translators);
            var translation = translator.Translate(expression, (System.Linq.Expressions.MemberExpression)null).Factory(args);

            return(translation);
        }