public static bool RequiresParameter(Expression node)
        {
            RequiresParameterVisitor visitor = new RequiresParameterVisitor();

            visitor.Visit(node);
            return(visitor.result);
        }
 public override Expression Visit(Expression node)
 {
     if (!RequiresParameterVisitor.RequiresParameter(node))
     {
         Expression <Func <object> > funct = () => new object();
         funct = Expression.Lambda <Func <object> >(Expression.Convert(node, typeof(object)), funct.Parameters);
         object res = funct.Compile()();
         return(ConstantExpression.Constant(res, node.Type));
     }
     return(base.Visit(node));
 }