protected virtual Expression VisitSelect(SelectExpression node)
 {
     Append("SELECT");
     if (node.Top != null)
     {
         Append("TOP ");
         Visit(node.Top);
     }
     Visit(node.Selection);
     Append("FROM");
     Visit(node.From);
     if (node.Where != null)
     {
         Append("WHERE");
         Visit(node.Where);
     }
     Visit(node.OrderBy);
     return node;
 }