pm.beginTask("", 3); //$NON-NLS-1$
ITypeHierarchy hierarchy= type.newSupertypeHierarchy(new SubProgressMonitor(pm, 1));
IProgressMonitor subPm= new SubProgressMonitor(pm, 2);
List<IType> typeList= Arrays.asList(hierarchy.getAllSupertypes(type));
subPm.beginTask("", typeList.size()); //$NON-NLS-1$
Set<IType> types= new HashSet<IType>(typeList);
for (Iterator iter= typeList.iterator(); iter.hasNext();) {
IType superType= (IType)iter.next();
IType[] superTypes= getAllSuperTypes(superType, new SubProgressMonitor(subPm, 1));
types.addAll(Arrays.asList(superTypes));