public static PropertyInfo GetPropertyAccess([NotNull] this LambdaExpression propertyAccessExpression) { Contract.Assert(propertyAccessExpression.Parameters.Count == 1); var propertyInfo = propertyAccessExpression .Parameters .Single() .MatchSimplePropertyAccess(propertyAccessExpression.Body); if (propertyInfo == null) { throw new ArgumentException( Strings.FormatInvalidPropertyExpression(propertyAccessExpression), "propertyAccessExpression"); } return(propertyInfo); }