docs: public Iterator getAllBaseTypes()
      {
          ArrayList baseTypes = new ArrayList();
  
          baseTypes.addAll(_directBaseTypes.values());
  
          for (int idx = baseTypes.size() - 1; idx >= 0; idx--)
          {
              ClassDescriptorDef curClassDef = (ClassDescriptorDef)baseTypes.get(idx);
  
              for (Iterator it = curClassDef.getDirectBaseTypes(); it.hasNext();)
              {
                  ClassDescriptorDef curBaseTypeDef = (ClassDescriptorDef)it.next();
  
                  if (!baseTypes.contains(curBaseTypeDef))
                  {
                      baseTypes.add(0, curBaseTypeDef);
                      idx++;
                  }
              }
          }
          return baseTypes.iterator();
      }