code: public String prepare() throws XDocletException
      {
          String             checkLevel = (String)getDocletContext().getConfigParam(CONFIG_PARAM_CHECKS);
          ArrayList          queue      = new ArrayList();
          ClassDescriptorDef classDef, baseDef;
          XClass             original;
          boolean            isFinished;
  
          // determine inheritance relationships
          for (Iterator it = _model.getClasses(); it.hasNext();)
          {
              classDef   = (ClassDescriptorDef)it.next();
              original   = classDef.getOriginalClass();
              isFinished = false;
              queue.clear();
              while (!isFinished)
              {
                  if (original == null)
                  {
                      isFinished = true;
                      for (Iterator baseIt = queue.iterator(); baseIt.hasNext();)
                      {
                          original = (XClass)baseIt.next();
                          baseDef  = _model.getClass(original.getQualifiedName());
                          baseIt.remove();
                          if (baseDef != null)
                          {
                              classDef.addDirectBaseType(baseDef);
                          }
                          else
                          {
                              isFinished = false;
                              break;
                          }
                      }
                  }
                  if (!isFinished)
                  {    
                      if (original.getInterfaces() != null)
                      {
                          for (Iterator baseIt = original.getInterfaces().iterator(); baseIt.hasNext();)
                          {
                              queue.add(baseIt.next());
                          }
                      }
                      if (original.getSuperclass() != null)
                      {
                          queue.add(original.getSuperclass());
                      }
                      original = null;
                  }
              }
          }
          try
          {
              _model.process();
              _model.checkConstraints(checkLevel);
          }
          catch (ConstraintException ex)
          {
              throw new XDocletException(ex.getMessage());
          }
          return "";
      }
docs: Processes all classes (flattens the hierarchy such that every class has declarations for all fields,
  references,collections that it will have in the descriptor) and applies modifications (removes ignored
  features, changes declarations).
  
  @return  An empty string
  @doc.tag type="content"