public static MemberExpression Field(Expression expression, FieldInfo field) { ContractUtils.RequiresNotNull(field, nameof(field)); if (field.IsStatic) { if (expression != null) { throw Error.OnlyStaticFieldsHaveNullInstance(nameof(expression)); } } else { if (expression == null) { throw Error.OnlyStaticFieldsHaveNullInstance(nameof(field)); } RequiresCanRead(expression, nameof(expression)); if (!TypeUtils.AreReferenceAssignable(field.DeclaringType, expression.Type)) { throw Error.FieldInfoNotDefinedForType(field.DeclaringType, field.Name, expression.Type); } } return(MemberExpression.Make(expression, field)); }