/// <summary>
        /// Returns <c>true</c> iff the expression has a constant value, assuming all literals to be variable.
        /// </summary>
        public static bool IsConst(this Expression e)
        {
            ExpressionConstPredicate pred = new ExpressionConstPredicate(new HashSet <object>(),
                                                                         ExpressionConstPredicate.EMode.GivenConstants);

            return(e.Accept(pred));
        }
        public static bool IsConst(this Expression e, HashSet <object> variables, ExpressionConstPredicate.EMode mode)
        {
            ExpressionConstPredicate pred = new ExpressionConstPredicate(variables, mode);

            return(e.Accept(pred));
        }