private static bool IsProperty(Expression expression)
{
if (!(expression is MemberExpression))
return false;
var memberExpression = expression as MemberExpression;
return (memberExpression.Expression is ParameterExpression && memberExpression.Member is PropertyInfo)
|| (IsProperty(memberExpression.Expression));
}