Change change= creator.createChange(); if (change != null) fDelegateChanges.add(change);
	void addOccurrences(TextChangeManager manager, IProgressMonitor pm, RefactoringStatus status) throws CoreException/*thrown in subtype*/{		pm.beginTask("", fOccurrences.length);				 //$NON-NLS-1$		for (int i= 0; i < fOccurrences.length; i++){			ICompilationUnit cu= fOccurrences[i].getCompilationUnit();			if (cu == null)					continue;						SearchMatch[] results= fOccurrences[i].getSearchResults();			// Split matches into declaration and non-declaration matches						List declarationsInThisCu= new ArrayList();			List referencesInThisCu= new ArrayList();			 			for (int j= 0; j < results.length; j++) {				if (results[j] instanceof MethodDeclarationMatch)					declarationsInThisCu.add(results[j]);				else					referencesInThisCu.add(results[j]);			}			// First, handle the declarations			if (declarationsInThisCu.size() > 0) {				if (fDelegateUpdating) {					// Update with delegates					CompilationUnitRewrite rewrite= new CompilationUnitRewrite(cu);					rewrite.setResolveBindings(true);					for (Iterator iter= declarationsInThisCu.iterator(); iter.hasNext();) {						SearchMatch element= (SearchMatch) iter.next();						MethodDeclaration method= ASTNodeSearchUtil.getMethodDeclarationNode((IMethod) element.getElement(), rewrite.getRoot());						DelegateCreator creator= new DelegateMethodCreator();						creator.setDeclareDeprecated(fDelegateDeprecation);						creator.setDeclaration(method);						creator.setSourceRewrite(rewrite);						creator.setNewElementName(getNewElementName());						creator.prepareDelegate();						creator.createEdit();					}					// Need to handle all delegates first as this					// creates a completely new change object.					TextChange changeForThisCu= rewrite.createChange();					changeForThisCu.setKeepPreviewEdits(true);					manager.manage(cu, changeForThisCu);				}				// Update the normal methods				for (Iterator iter= declarationsInThisCu.iterator(); iter.hasNext();) {					SearchMatch element= (SearchMatch) iter.next();					simpleUpdate(element, cu, manager.get(cu));				}			}			// Second, handle references			if (fUpdateReferences) {				for (Iterator iter= referencesInThisCu.iterator(); iter.hasNext();) {					SearchMatch element= (SearchMatch) iter.next();					simpleUpdate(element, cu, manager.get(cu));				}			}						pm.worked(1);			if (pm.isCanceled())				throw new OperationCanceledException();		}		pm.done();	}