protected void writeEnd(SAXElement element) throws IOException {
   if (!isStartWritten(element)) {
     // It's an empty element...
     SAXElementWriterUtil.writeEmptyElement(
         element, element.getWriter(writerOwner), rewriteEntities);
   } else {
     SAXElementWriterUtil.writeEndElement(element, element.getWriter(writerOwner));
   }
 }
 public void onChildText(SAXElement element, SAXText text, ExecutionContext executionContext)
     throws SmooksException, IOException {
   writeStartElement(element);
   if (element.isWriterOwner(writerOwner)) {
     text.toWriter(element.getWriter(writerOwner), rewriteEntities);
   }
 }
 protected void writeStart(SAXElement element) throws IOException {
   SAXElementWriterUtil.writeStartElement(
       element, element.getWriter(writerOwner), rewriteEntities);
 }
 public void visitBefore(SAXElement element, ExecutionContext executionContext)
     throws SmooksException, IOException {
   // Do nothing here apart from acquiring ownership of the element writer.
   // See is there any child text/elements first...
   element.getWriter(writerOwner);
 }