else names.add(type.getFullyQualifiedName());
	public IType[] getCandidateTypes(final RefactoringStatus status, final IProgressMonitor monitor) {		Assert.isNotNull(monitor);		if (fPossibleCandidates == null || fPossibleCandidates.length == 0) {			final IType declaring= getDeclaringType();			if (declaring != null) {				try {					monitor.beginTask(RefactoringCoreMessages.ExtractSupertypeProcessor_computing_possible_types, 10);					final IType superType= getDeclaringSuperTypeHierarchy(new SubProgressMonitor(monitor, 1, SubProgressMonitor.SUPPRESS_SUBTASK_LABEL)).getSuperclass(declaring);					if (superType != null) {						fPossibleCandidates= superType.newTypeHierarchy(fOwner, new SubProgressMonitor(monitor, 9, SubProgressMonitor.SUPPRESS_SUBTASK_LABEL)).getSubtypes(superType);						final LinkedList list= new LinkedList(Arrays.asList(fPossibleCandidates));						for (final Iterator iterator= list.iterator(); iterator.hasNext();) {							final IType type= (IType) iterator.next();							if (type.isReadOnly() || type.isBinary() || type.isAnonymous() || !type.isClass())								iterator.remove();						}						fPossibleCandidates= (IType[]) list.toArray(new IType[list.size()]);					}				} catch (JavaModelException exception) {					JavaPlugin.log(exception);				} finally {					monitor.done();				}			}		}		return fPossibleCandidates;	}