public override DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value) {
var binderDefault = binder.FallbackSetMember(this, value);
Expression expression = GetSetValueExpression(binder.Name, value.Value);
var dynamicSuggestion = new DynamicMetaObject(expression, BindingRestrictions.GetTypeRestriction(Expression, LimitType)
.Merge(binderDefault.Restrictions));
return binder.FallbackSetMember(this, value, dynamicSuggestion);
}