if (!change.entryAlreadyExists()) {
if (change.validateClasspath()) {
	public static void importNotFoundProposals(IInvocationContext context, IProblemLocation problem, Collection proposals) throws CoreException {		ICompilationUnit cu= context.getCompilationUnit();		IJavaProject project= cu.getJavaProject();		ASTNode selectedNode= problem.getCoveringNode(context.getASTRoot());		if (selectedNode != null) {			ImportDeclaration importDeclaration= (ImportDeclaration) ASTNodes.getParent(selectedNode, ASTNode.IMPORT_DECLARATION);			if (importDeclaration == null) {				return;			}			String name= ASTNodes.asString(importDeclaration.getName());			char[] packageName;			char[] typeName= null;			if (importDeclaration.isOnDemand()) {				packageName= name.toCharArray();			} else {				packageName= Signature.getQualifier(name).toCharArray();				typeName= Signature.getSimpleName(name).toCharArray();			}			IJavaSearchScope scope= SearchEngine.createWorkspaceScope();			ArrayList res= new ArrayList();			TypeNameRequestor requestor= new TypeInfoRequestor(res);			new SearchEngine().searchAllTypeNames(packageName, typeName,					SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE, IJavaSearchConstants.TYPE, scope, requestor,					IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null);			if (res.isEmpty()) {				return;			}			HashSet addedClaspaths= new HashSet();			for (int i= 0; i < res.size(); i++) {				TypeInfo curr= (TypeInfo) res.get(i);				IType type= curr.resolveType(scope);				if (type != null) {					IPackageFragmentRoot root= (IPackageFragmentRoot) type.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);					IClasspathEntry entry= root.getRawClasspathEntry();					if (entry == null) {						continue;					}					IJavaProject other= root.getJavaProject();					int entryKind= entry.getEntryKind();					if ((entry.isExported() || entryKind == IClasspathEntry.CPE_SOURCE) && addedClaspaths.add(other)) {						String[] args= { other.getElementName(), project.getElementName() };						String label= Messages.format(CorrectionMessages.ReorgCorrectionsSubProcessor_addcp_project_description, args);						IClasspathEntry newEntry= JavaCore.newProjectEntry(other.getPath());						AddToClasspathChange change= new AddToClasspathChange(project, newEntry);						if (!change.entryAlreadyExists()) {							ChangeCorrectionProposal proposal= new ChangeCorrectionProposal(label, change, 8, JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE));							proposals.add(proposal);						}					}					if ((entryKind == IClasspathEntry.CPE_LIBRARY || entryKind == IClasspathEntry.CPE_VARIABLE || entryKind == IClasspathEntry.CPE_CONTAINER) && addedClaspaths.add(entry)) {						String label= getAddClasspathLabel(entry, root, project);						if (label != null) {							AddToClasspathChange change= new AddToClasspathChange(project, entry);							if (!change.entryAlreadyExists()) {								ChangeCorrectionProposal proposal= new ChangeCorrectionProposal(label, change, 7, JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE));								proposals.add(proposal);							}						}					}				}			}		}	}