public static Expression Replace (Expression replacedExpression, Expression replacementExpression, Expression sourceTree)
    {
      ArgumentUtility.CheckNotNull ("replacedExpression", replacedExpression);
      ArgumentUtility.CheckNotNull ("replacementExpression", replacementExpression);
      ArgumentUtility.CheckNotNull ("sourceTree", sourceTree);

      var visitor = new ReplacingExpressionTreeVisitor (replacedExpression, replacementExpression);
      return visitor.VisitExpression (sourceTree);
    }
        public static Expression Replace(Expression replacedExpression, Expression replacementExpression, Expression sourceTree)
        {
            ArgumentUtility.CheckNotNull("replacedExpression", replacedExpression);
            ArgumentUtility.CheckNotNull("replacementExpression", replacementExpression);
            ArgumentUtility.CheckNotNull("sourceTree", sourceTree);

            var visitor = new ReplacingExpressionTreeVisitor(replacedExpression, replacementExpression);

            return(visitor.VisitExpression(sourceTree));
        }