docs: public void endElement(String uri, String name, String qName)
      {
          boolean isDebug = logger.isDebugEnabled();
          try
          {
              switch (getLiteralId(qName))
              {
                  case MAPPING_REPOSITORY:
                      {
                          if (isDebug) logger.debug(" < " + tags.getTagById(MAPPING_REPOSITORY));
                          this.m_CurrentAttrContainer = null;
                          m_CurrentCLD = null;
                          break;
                      }
                  case CLASS_DESCRIPTOR:
                      {
                          if (isDebug) logger.debug("  < " + tags.getTagById(CLASS_DESCRIPTOR));
                          m_CurrentCLD = null;
                          this.m_CurrentAttrContainer = null;
                          break;
                      }
                  case OBJECT_CACHE:
                      {
                          if(m_CurrentAttrContainer != null)
                          {
                              if (isDebug) logger.debug("     < " + tags.getTagById(OBJECT_CACHE));
                          }
                          this.m_CurrentAttrContainer = m_CurrentCLD;
                          break;
                      }
                  case CLASS_EXTENT:
                      {
                          break;
                      }
                  case FIELD_DESCRIPTOR:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(FIELD_DESCRIPTOR));
                          m_CurrentFLD = null;
                          m_CurrentAttrContainer = m_CurrentCLD;
                          break;
                      }
                  case REFERENCE_DESCRIPTOR:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(REFERENCE_DESCRIPTOR));
                          m_CurrentORD = null;
                          m_CurrentAttrContainer = m_CurrentCLD;
                          break;
                      }
                  case FOREIGN_KEY:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(FOREIGN_KEY));
                          break;
                      }
                  case COLLECTION_DESCRIPTOR:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(COLLECTION_DESCRIPTOR));
                          m_CurrentCOD = null;
                          m_CurrentAttrContainer = m_CurrentCLD;
                          break;
                      }
                  case INVERSE_FK:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(INVERSE_FK));
                          break;
                      }
                  case ORDERBY :
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(ORDERBY));
                          break;
                      }
                  case FK_POINTING_TO_THIS_CLASS:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(FK_POINTING_TO_THIS_CLASS));
                          break;
                      }
                  case FK_POINTING_TO_ITEMS_CLASS:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(FK_POINTING_TO_ITEMS_CLASS));
                          break;
                      }
                  case ATTRIBUTE:
                      {
                          if(m_CurrentAttrContainer != null)
                          {
                              if (isDebug) logger.debug("      < " + tags.getTagById(ATTRIBUTE));
                          }
                          break;
                      }
                  case DOCUMENTATION:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(DOCUMENTATION));
                          break;
                      }
  //                case SEQUENCE_MANAGER:
  //                    {
  //                        // currently not used on class-descriptor level
  //                        // if (isDebug) logger.debug("    < " + tags.getTagById(SEQUENCE_MANAGER));
  //                        this.m_CurrentAttrContainer = null;
  //                        break;
  //                    }
  //                case CONNECTION_POOL:
  //                    {
  //                        // not used on class-descriptor level
  //                        // if (isDebug) logger.debug("    < " + tags.getTagById(CONNECTION_POOL));
  //                        this.m_CurrentAttrContainer = null;
  //                        break;
  //                    }
  //                case JDBC_CONNECTION_DESCRIPTOR:
  //                    {
  //                        // not used on class-descriptor level
  //                        // if (isDebug) logger.debug("    < " + tags.getTagById(JDBC_CONNECTION_DESCRIPTOR));
  //                        this.m_CurrentAttrContainer = null;
  //                        break;
  //                    }
                  case QUERY_CUSTOMIZER:
                      {
                          m_CurrentAttrContainer = m_CurrentCOD;
                          break;
                      }
                  case INDEX_DESCRIPTOR:
                      {
                          m_CurrentCLD.getIndexes().add(m_CurrentIndexDescriptor);
                          m_CurrentIndexDescriptor = null;
                          break;
                      }
                  case INDEX_COLUMN:
                      {
                          // ignore; all processing done in startElement
                          break;
                      }
                  case INSERT_PROCEDURE:
                  {
                      if (isDebug) logger.debug("    < " + tags.getTagById(INSERT_PROCEDURE));
                      m_CurrentCLD.setInsertProcedure((InsertProcedureDescriptor)m_CurrentProcedure);
                      m_CurrentProcedure = null;
                      break;
                  }
                  case UPDATE_PROCEDURE:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(UPDATE_PROCEDURE));
                          m_CurrentCLD.setUpdateProcedure((UpdateProcedureDescriptor)m_CurrentProcedure);
                          m_CurrentProcedure = null;
                          break;
                      }
                  case DELETE_PROCEDURE:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(DELETE_PROCEDURE));
                          m_CurrentCLD.setDeleteProcedure((DeleteProcedureDescriptor)m_CurrentProcedure);
                          m_CurrentProcedure = null;
                          break;
                      }
                  case CONSTANT_ARGUMENT:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(CONSTANT_ARGUMENT));
                          break;
                      }
                  case RUNTIME_ARGUMENT:
                      {
                          if (isDebug) logger.debug("    < " + tags.getTagById(RUNTIME_ARGUMENT));
                          break;
                      }
  
                      // handle failure:
                  default :
                      {
                          logger.debug("Ignoring unused Element " + qName);
                      }
              }
          }
          catch (Exception ex)
          {
              if(ex instanceof MetadataException) throw (MetadataException) ex;
              else throw new MetadataException("Exception when reading metadata information,"+
                      " please check your repository.xml file", ex);
          }
      }