fTypeMatches= solver.getTypeOccurrences();
fTypeMatches= solver.getTypeMatches();
	protected final void computeSupertypeChanges(final IType type, final ITypeBinding subType, final ITypeBinding superType, final IProgressMonitor monitor, final RefactoringStatus status) throws JavaModelException {		Assert.isNotNull(type);		Assert.isNotNull(subType);		Assert.isNotNull(superType);		Assert.isNotNull(monitor);		Assert.isNotNull(status);		final SuperTypeConstraintsModel model= new SuperTypeConstraintsModel();		final SuperTypeConstraintsCreator creator= new SuperTypeConstraintsCreator(model);		try {			monitor.beginTask("", 2); //$NON-NLS-1$			monitor.setTaskName(RefactoringCoreMessages.getString("SuperTypeRefactoringProcessor.creating")); //$NON-NLS-1$			final Map firstPass= getReferencingCompilationUnits(type, new SubProgressMonitor(monitor, 1), status);			final Map secondPass= new HashMap(firstPass.size());			IJavaProject project= null;			Collection collection= null;			for (final Iterator iterator= firstPass.keySet().iterator(); iterator.hasNext();) {				project= (IJavaProject) iterator.next();				collection= (Collection) firstPass.get(project);				if (collection != null) {					final Map groups= new HashMap(collection.size());					for (final Iterator iter= collection.iterator(); iter.hasNext();) {						final SearchResultGroup group= (SearchResultGroup) iter.next();						groups.put(group.getCompilationUnit(), group);					}					final ASTParser parser= ASTParser.newParser(AST.JLS3);					parser.setCompilerOptions(RefactoringASTParser.getCompilerOptions(project));					parser.setResolveBindings(true);					parser.setProject(project);					final Set keys= groups.keySet();					parser.createASTs((ICompilationUnit[]) keys.toArray(new ICompilationUnit[keys.size()]), new String[0], new ASTRequestor() {						public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {							monitor.subTask(unit.getElementName());							node.setProperty(RefactoringASTParser.SOURCE_PROPERTY, unit);							node.accept(creator);							final SearchResultGroup group= (SearchResultGroup) groups.get(unit);							if (group != null) {								final ASTNode[] nodes= ASTNodeSearchUtil.getAstNodes(group.getSearchResults(), node);								try {									getMethodReferencingCompilationUnits(secondPass, nodes);									getFieldReferencingCompilationUnits(secondPass, nodes);								} catch (JavaModelException exception) {									JavaPlugin.log(exception);								}							}						}						public final void acceptBinding(final String key, final IBinding binding) {							// Do nothing						}					}, new SubProgressMonitor(monitor, 1));				}			}			for (final Iterator iterator= secondPass.keySet().iterator(); iterator.hasNext();) {				project= (IJavaProject) iterator.next();				collection= (Set) secondPass.get(project);				if (collection != null) {					final ASTParser parser= ASTParser.newParser(AST.JLS3);					parser.setCompilerOptions(RefactoringASTParser.getCompilerOptions(project));					parser.setResolveBindings(true);					parser.setProject(project);					parser.createASTs((ICompilationUnit[]) collection.toArray(new ICompilationUnit[collection.size()]), new String[0], new ASTRequestor() {						public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {							monitor.subTask(unit.getElementName());							node.setProperty(RefactoringASTParser.SOURCE_PROPERTY, unit);							node.accept(creator);						}						public final void acceptBinding(final String key, final IBinding binding) {							// Do nothing						}					}, new SubProgressMonitor(monitor, 1));				}			}			final SuperTypeConstraintsSolver solver= new SuperTypeConstraintsSolver(model);			solver.solveConstraints();			fTypeMatches= solver.getTypeOccurrences();			fObsoleteCasts= solver.getObsoleteCasts();		} finally {			monitor.done();		}	}