docs: protected Database readModel()
      {
          DatabaseIO reader = new DatabaseIO();
          Database   model  = null;
  
          reader.setUseInternalDtd(_useInternalDtd);
          if ((_singleSchemaFile != null) && !_fileSets.isEmpty())
          {
              throw new BuildException("Please use either the schemafile attribute or the sub fileset element, but not both");
          }
          if (_singleSchemaFile != null)
          {
              model = readSingleSchemaFile(reader, _singleSchemaFile);
          }
          else
          {
              for (Iterator it = _fileSets.iterator(); it.hasNext();)
              {
                  FileSet          fileSet    = (FileSet)it.next();
                  File             fileSetDir = fileSet.getDir(getProject());
                  DirectoryScanner scanner    = fileSet.getDirectoryScanner(getProject());
                  String[]         files      = scanner.getIncludedFiles();
      
                  for (int idx = 0; (files != null) && (idx < files.length); idx++)
                  {
                      Database curModel = readSingleSchemaFile(reader, new File(fileSetDir, files[idx]));
      
                      if (model == null)
                      {
                          model = curModel;
                      }
                      else if (curModel != null)
                      {
                          try
                          {
                              model.mergeWith(curModel);
                          }
                          catch (IllegalArgumentException ex)
                          {
                              throw new BuildException("Could not merge with schema from file "+files[idx]+": "+ex.getLocalizedMessage(), ex);
                          }
                      }
                  }
              }
          }
          return model;
      }