/**
  * Returns the contents (owned elements) of this classifier and all its parents as specified in
  * section 2.5.3.8 of the UML 1.3 spec
  *
  * @param clazz
  * @return Collection
  */
 public Collection getAllContents(MClassifier clazz) {
   if (clazz == null) return new ArrayList();
   List list = new ArrayList();
   Iterator it = clazz.getOwnedElements().iterator();
   while (it.hasNext()) {
     MModelElement element = (MModelElement) it.next();
     if (element.getVisibility().equals(MVisibilityKind.PUBLIC)
         || element.getVisibility().equals(MVisibilityKind.PROTECTED)) {
       list.add(element);
     }
   }
   it = clazz.getGeneralizations().iterator();
   while (it.hasNext()) {
     list.addAll(getAllContents((MClassifier) it.next()));
   }
   return list;
 }