code: private void cloneInheritedFeatures(ClassDescriptorDef baseDef, ArrayList newFields, ArrayList newReferences, ArrayList newCollections)
      {
          FieldDescriptorDef      copyFieldDef;
          ReferenceDescriptorDef  copyRefDef;
          CollectionDescriptorDef copyCollDef;
  
          // note that we also copy features with the ignore-property set to true
          // they will be ignored later on
          for (Iterator fieldIt = baseDef.getFields(); fieldIt.hasNext();)
          {
              copyFieldDef = cloneField((FieldDescriptorDef)fieldIt.next(), null);
              if (!contains(newFields, copyFieldDef))
              {
                  copyFieldDef.setInherited();
                  newFields.add(copyFieldDef);
              }
          }
          for (Iterator refIt = baseDef.getReferences(); refIt.hasNext();)
          {
              copyRefDef = cloneReference((ReferenceDescriptorDef)refIt.next(), null);
              if (!contains(newReferences, copyRefDef))
              {
                  copyRefDef.setInherited();
                  newReferences.add(copyRefDef);
              }
          }
          for (Iterator collIt = baseDef.getCollections(); collIt.hasNext();)
          {
              copyCollDef = cloneCollection((CollectionDescriptorDef)collIt.next(), null);
              if (!contains(newCollections, copyCollDef))
              {
                  copyCollDef.setInherited();
                  newCollections.add(copyCollDef);
              }
          }
      }
docs: Clones the features of the given base class (using modifications if available) and puts them into
  the given lists.
  
  @param baseDef        The base class descriptor
  @param newFields      Recieves the field copies
  @param newReferences  Recieves the reference copies
  @param newCollections Recieves the collection copies