@Override
    public void endElement(String uri, String localName, String qName) 
              throws SAXException {
        if ("events".equals (qName)) {
            endEventsElement ();
        }
        else if ("event".equals (qName)) {
            try {
                endEventElement ();
            }
            catch (IOException e) {
                throw new SAXException ("Parsing aborted due to I/O problem", e);
            }
        }
        else if ("comment".equals (qName)) {
            endCommentElement ();
        }
        else if ("body".equals (qName)) {
            endBodyElement ();
        }
        else if ("subject".equals (qName)) {
            endSubjectElement ();
        }
        else if ("date".equals (qName)) {
            endDateElement ();
        }
        else if ("props".equals (qName)) {
            endPropsElement ();
        }
        else if ("prop".equals (qName)) {
            endPropElement ();
        }
    }