docs: public DescriptorRepository readDescriptorRepository(String filename)
              throws MalformedURLException, ParserConfigurationException, SAXException, IOException
      {
          DescriptorRepository result;
          if (useSerializedRepository)
          // use serialized repository
          {
              // build File object pointing to serialized repository location
              Configuration config = OjbConfigurator.getInstance().getConfigurationFor(null);
              String pathPrefix = config.getString(SERIALIZED_REPOSITORY_PATH, ".");
              File serFile = new File(pathPrefix + File.separator + filename + "." + SER_FILE_SUFFIX);
  
              if (serFile.exists() && serFile.length() > 0)
              // if file exists load serialized version of repository
              {
                  try
                  {
                      long duration = System.currentTimeMillis();
                      result = deserialize(serFile);
                      log.info("Read serialized repository in " + (System.currentTimeMillis() - duration) + " ms");
                  }
                  catch (Exception e)
                  {
                      log.error("error in loading serialized repository. Will try to use XML version.", e);
                      result = (DescriptorRepository) buildRepository(filename, DescriptorRepository.class);
                  }
              }
              else
              // if no serialized version exists, read it from xml and write serialized file
              {
                  long duration = System.currentTimeMillis();
                  result = (DescriptorRepository) buildRepository(filename, DescriptorRepository.class);
                  log.info("Read repository from file took " + (System.currentTimeMillis() - duration) + " ms");
                  serialize(result, serFile);
              }
          }
          // don't use serialized repository
          else
          {
              long duration = System.currentTimeMillis();
              result = (DescriptorRepository) buildRepository(filename, DescriptorRepository.class);
              log.info("Read class descriptors took " + (System.currentTimeMillis() - duration) + " ms");
          }
          return result;
      }