public static IList <PropertyInfo> GetPropertyAccessList([NotNull] this LambdaExpression propertyAccessExpression) { Contract.Assert(propertyAccessExpression.Parameters.Count == 1); var propertyPaths = MatchPropertyAccessList(propertyAccessExpression, (p, e) => e.MatchSimplePropertyAccess(p)); if (propertyPaths == null) { throw new ArgumentException( Strings.FormatInvalidPropertiesExpression(propertyAccessExpression), "propertyAccessExpression"); } return(propertyPaths); }