class SAXmyHandler extends SAXiTextHandler<XmlPeer> {

    /**
     * Constructs a new SAXiTextHandler that will translate all the events triggered by the parser to actions on the
     * <CODE>Document</CODE>-object.
     *
     * @param document this is the document on which events must be triggered
     * @param myTags   a user defined tagmap
     */

    public SAXmyHandler(DocListener document, Map<String, XmlPeer> myTags) {
        super(document, myTags);
    }

    /**
     * This method gets called when a start tag is encountered.
     *
     * @param uri       the Uniform Resource Identifier
     * @param localName the local name (without prefix), or the empty string if Namespace processing is not being
     *                  performed.
     * @param name      the name of the tag that is encountered
     * @param attrs     the list of attributes
     */

    public void startElement(String uri, String localName, String name, Attributes attrs) {
        if (myTags.containsKey(name)) {
            XmlPeer peer = myTags.get(name);
            handleStartingTags(peer.getTag(), peer.getAttributes(attrs));
        } else {
            Properties attributes = new Properties();
            if (attrs != null) {
                for (int i = 0; i < attrs.getLength(); i++) {
                    String attribute = attrs.getQName(i);
                    attributes.setProperty(attribute, attrs.getValue(i));
                }
            }
            handleStartingTags(name, attributes);
        }
    }

    /**
     * This method gets called when an end tag is encountered.
     *
     * @param uri   the Uniform Resource Identifier
     * @param lname the local name (without prefix), or the empty string if Namespace processing is not being
     *              performed.
     * @param name  the name of the tag that ends
     */

    public void endElement(String uri, String lname, String name) {<FILL_FUNCTION_BODY>}
}

        if (myTags.containsKey(name)) {
            XmlPeer peer = myTags.get(name);
            handleEndingTags(peer.getTag());
        } else {
            handleEndingTags(name);
        }
    
<methods>public void <init>(com.lowagie.text.DocListener) ,public void <init>(com.lowagie.text.DocListener, Map<java.lang.String,com.lowagie.text.xml.XmlPeer>, com.lowagie.text.pdf.BaseFont) ,public void <init>(com.lowagie.text.DocListener, Map<java.lang.String,com.lowagie.text.xml.XmlPeer>) ,public void characters(char[], int, int) ,public void endElement(java.lang.String, java.lang.String, java.lang.String) ,public void handleEndingTags(java.lang.String) ,public void handleStartingTags(java.lang.String, java.util.Properties) ,public void ignorableWhitespace(char[], int, int) ,public void setBaseFont(com.lowagie.text.pdf.BaseFont) ,public void setControlOpenClose(boolean) ,public void startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) <variables>private com.lowagie.text.pdf.BaseFont bf,private float bottomMargin,protected int chapters,private boolean controlOpenClose,protected com.lowagie.text.Chunk currentChunk,protected com.lowagie.text.DocListener document,protected boolean ignore,private float leftMargin,protected Map<java.lang.String,com.lowagie.text.xml.XmlPeer> myTags,private float rightMargin,protected Stack<com.lowagie.text.Element> stack,private float topMargin