//public static Expression WrapIntoNamedExpression(string memberName, Expression argumentExpression)
        //{
        //    var expressionAsNamedExpression = argumentExpression as NamedExpression;
        //    if (expressionAsNamedExpression != null && expressionAsNamedExpression.Name == memberName)
        //        return expressionAsNamedExpression;

        //    return CreateFromMemberName(memberName, argumentExpression);
        //}

        public static Expression WrapIntoNamedExpression(IArangoDatabase db, MemberInfo memberInfo, Expression argumentExpression)
        {
            var memberName = LinqUtility.ResolveMemberNameRaw(db, memberInfo);

            var expressionAsNamedExpression = argumentExpression as NamedExpression;

            if (expressionAsNamedExpression != null && expressionAsNamedExpression.Name == memberName)
            {
                return(expressionAsNamedExpression);
            }

            var namedExpression = CreateFromMemberName(memberName, argumentExpression);

            return(namedExpression);
        }