public static QueryValidationResult Validate(string query)
        {
            if (String.IsNullOrEmpty(query))
            {
                return new QueryValidationResult {
                           IsValid = true
                }
            }
            ;

            GroupNode result;

            try {
                var parser = new QueryParser();

                result = parser.Parse(query);
            } catch (Exception ex) {
                return(new QueryValidationResult {
                    Message = ex.Message
                });
            }

            var validator = new QueryValidationVisitor(new HashSet <string> {
                "hidden", "fixed", "type"
            });

            result.Accept(validator);

            return(new QueryValidationResult {
                IsValid = true, UsesPremiumFeatures = validator.UsesPremiumFeatures
            });
        }
    }
            public static void Validate(IQueryable query)
            {
                QueryValidationVisitor visitor = new QueryValidationVisitor();

                visitor.Visit(query.Expression);
            }
 public virtual void Validate(IQueryable query)
 {
     QueryValidationVisitor.Validate(query);
 }