private IEnumerable <MemberBinding> GetMemberBindingsForNewExpression(NewExpression newExpression)
 {
     for (int i = 0; i < newExpression.Members.Count; ++i)
     {
         yield return(MemberBinding.Bind(newExpression.Members[i], newExpression.Arguments[i]));
     }
 }
        private IEnumerable <MemberBinding> GetMemberBindingsCreatedByExpression(Expression expression)
        {
            var memberInitExpression = expression as MemberInitExpression;

            if (memberInitExpression != null)
            {
                return(memberInitExpression.Bindings
                       .Where(binding => binding is MemberAssignment)
                       .Select(assignment => MemberBinding.Bind(assignment.Member, ((MemberAssignment)assignment).Expression)));
            }
            else
            {
                var newExpression = expression as NewExpression;
                if (newExpression != null && newExpression.Members != null)
                {
                    return(GetMemberBindingsForNewExpression(newExpression));
                }
                else
                {
                    return(null);
                }
            }
        }