/// <summary>
 /// Determines whether the node may be evaluated locally and whether
 /// it is a variable. Assumes that all children are also variable client expressions.
 /// </summary>
 private bool IsClosureExpression(Expression expression)
 {
     if (null == expression)
     {
         return(false);
     }
     if (IsImmutable(expression))
     {
         return(true);
     }
     if (ExpressionType.MemberAccess == expression.NodeType)
     {
         MemberExpression member = (MemberExpression)expression;
         if (member.Member.MemberType == MemberTypes.Property)
         {
             return(ExpressionConverter.CanFuncletizePropertyInfo((PropertyInfo)member.Member));
         }
         return(true);
     }
     return(false);
 }