void PrinterVisitor::visitOrderBySpec( PlanIterator const &i ) {
  if (!hasToVisit(&i))
    return;

  thePrinter.startBeginVisit( "OrderBySpec", ++theId );
  thePrinter.endBeginVisit( theId );
  i.accept( *this );
  thePrinter.startEndVisit();
  thePrinter.endEndVisit();
}
void PrinterVisitor::visitUDFunctionBody( PlanIterator const &i ) {
  if (!hasToVisit(&i))
    return;

  thePrinter.startBeginVisit( "UDFunctionBody", ++theId );
  thePrinter.endBeginVisit( theId );
  i.accept( *this );
  thePrinter.startEndVisit();
  thePrinter.endEndVisit();
}
void PrinterVisitor::visitFlworWhereClause( PlanIterator const &i ) {
  if (!hasToVisit(&i))
    return;

  thePrinter.startBeginVisit( "WhereClause", ++theId );
  thePrinter.endBeginVisit( theId );
  i.accept( *this );
  thePrinter.startEndVisit();
  thePrinter.endEndVisit();
}
void PrinterVisitor::beginVisitOrderBySpec( PlanIterator const &i ) {
  thePrinter.startBeginVisit( "OrderBySpec", ++theId );
  thePrinter.endBeginVisit( theId );
  i.accept( *this );
}
void PrinterVisitor::beginVisitFlworWhereClause( PlanIterator const &i ) {
  thePrinter.startBeginVisit( "WhereClause", ++theId );
  thePrinter.endBeginVisit( theId );
  i.accept( *this );
}