/// <summary>
        /// Convert a lambda expression to NHibernate Order
        /// </summary>
        /// <param name="expression">The lambda expression to convert</param>
        /// <param name="orderStringDelegate">The appropriate order delegate (order direction)</param>
        /// <param name="orderProjectionDelegate">The appropriate order delegate (order direction)</param>
        /// <returns>NHibernate Order</returns>
        public static Order ProcessOrder(LambdaExpression expression,
                                         Func <string, Order> orderStringDelegate,
                                         Func <IProjection, Order> orderProjectionDelegate)
        {
            ProjectionInfo projection = FindMemberProjection(expression.Body);
            Order          order      = projection.CreateOrder(orderStringDelegate, orderProjectionDelegate);

            return(order);
        }