public Collection getAllModelElementsOfKind(Object nsa, Object type) {
    if (!(nsa instanceof Element)) {
      return new ArrayList<Element>();
    }
    Class theType = null;
    if (type instanceof String) {
      try {
        theType = Class.forName((String) type);
      } catch (ClassNotFoundException e) {
        throw new IllegalArgumentException(e);
      }
    } else if (type instanceof Class) {
      theType = (Class) type;
    } else {
      throw new IllegalArgumentException("type must be instance of Class or String"); // $NON-NLS-1$
    }
    if (!Element.class.isAssignableFrom(theType)) {
      throw new IllegalArgumentException("type must represent an Element"); // $NON-NLS-1$
    }

    Collection<Element> result = new ArrayList<Element>();

    for (Element element : ((Namespace) nsa).allOwnedElements()) {
      if (theType.isAssignableFrom(element.getClass())) {
        result.add(element);
      }
    }

    return result;
  }
 /**
  * Returns the image for the element
  *
  * @param editPart the edit part that displays the element
  * @return the image
  */
 public Image getImage(GraphicalEditPart editPart) {
   Element element = getUMLElement(editPart);
   String key = "";
   if (element instanceof NamedElement) {
     key = ((NamedElement) element).getName() + "::" + ((NamedElement) element).getVisibility();
   } else if (element != null) {
     key = element.getClass().getName();
   } else {
     return null;
   }
   ImageRegistry imageRegistry = Activator.getDefault().getImageRegistry();
   Image image = imageRegistry.get(key);
   ImageDescriptor descriptor = null;
   if (image == null) {
     AdapterFactory factory = Activator.getDefault().getItemProvidersAdapterFactory();
     IItemLabelProvider labelProvider =
         (IItemLabelProvider) factory.adapt(getUMLElement(editPart), IItemLabelProvider.class);
     if (labelProvider != null) {
       descriptor =
           ExtendedImageRegistry.getInstance()
               .getImageDescriptor(labelProvider.getImage(getUMLElement(editPart)));
     }
     if (descriptor == null) {
       descriptor = ImageDescriptor.getMissingImageDescriptor();
     }
     imageRegistry.put(key, descriptor);
     image = imageRegistry.get(key);
   }
   return image;
 }