code: public void process() throws ConstraintException
      {
          ClassDescriptorDef classDef;
  
          // process all classes
          for (Iterator it = getClasses(); it.hasNext();)
          {
              classDef = (ClassDescriptorDef)it.next();
              if (!classDef.hasBeenProcessed())
              {
                  classDef.process();
              }
          }
      }
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).
  
  @throws ConstraintException If a constraint has been violated