internal static Expression ReduceMemberInit(Expression objExpression, ReadOnlyCollection<MemberBinding> bindings, bool keepOnStack)
{
ParameterExpression objVar = Expression.Variable(objExpression.Type, name: null);
int count = bindings.Count;
var block = new Expression[count + 2];
block[0] = Expression.Assign(objVar, objExpression);
for (int i = 0; i < count; i++)
{
block[i + 1] = ReduceMemberBinding(objVar, bindings[i]);
}
block[count + 1] = keepOnStack ? (Expression)objVar : Utils.Empty;
return Expression.Block(new TrueReadOnlyCollection<Expression>(block));
}