message= finder.initialize(astRoot, selection.getOffset(), selection.getLength());
String message= finder.initialize(astRoot, selection.getOffset(), selection.getLength());
	protected void updateOccurrenceAnnotations(ITextSelection selection, CompilationUnit astRoot) {		if (fOccurrencesFinderJob != null)			fOccurrencesFinderJob.cancel();		if (!fMarkOccurrenceAnnotations)			return;				if (astRoot == null || selection == null)			return;				IDocument document= getSourceViewer().getDocument();		if (document == null)			return;						List matches= new ArrayList();		String message;		if (fMarkExceptionOccurrences || fMarkTypeOccurrences) {			ExceptionOccurrencesFinder exceptionFinder= new ExceptionOccurrencesFinder();			message= exceptionFinder.initialize(astRoot, selection.getOffset(), selection.getLength());			if (message == null) {				matches= exceptionFinder.perform();			}		}		if (matches.size() == 0) {			if (fMarkMethodExitPoints || fMarkTypeOccurrences) {				MethodExitsFinder finder= new MethodExitsFinder();				message= finder.initialize(astRoot, selection.getOffset(), selection.getLength());				if (message == null) {					matches= finder.perform();				}			}			if (matches.size() == 0) {				ASTNode node= NodeFinder.perform(astRoot, selection.getOffset(), selection.getLength());				if (!(node instanceof Name)) {					if (!fStickyOccurrenceAnnotations)						removeOccurrenceAnnotations();					return;				}								IBinding binding= ((Name)node).resolveBinding();				if (binding == null && fStickyOccurrenceAnnotations)					return;								if (!markOccurrencesOfType(binding)) {					if (!fStickyOccurrenceAnnotations)						removeOccurrenceAnnotations();					return;				}								// Find the matches && extract positions so we can forget the AST				OccurrencesFinder finder = new OccurrencesFinder(binding);				message= finder.initialize(astRoot, selection.getOffset(), selection.getLength());				if (message == null)					matches= finder.perform();			} else if (!fMarkMethodExitPoints) {				if (!fStickyOccurrenceAnnotations)					removeOccurrenceAnnotations();				return;			}		} else if (!fMarkExceptionOccurrences) {			if (!fStickyOccurrenceAnnotations)				removeOccurrenceAnnotations();			return;		}				Position[] positions= new Position[matches.size()];		int i= 0;		for (Iterator each= matches.iterator(); each.hasNext();) {			ASTNode currentNode= (ASTNode)each.next();			positions[i++]= new Position(currentNode.getStartPosition(), currentNode.getLength());		}				fOccurrencesFinderJob= new OccurrencesFinderJob(document, positions, selection);		//fOccurrencesFinderJob.setPriority(Job.DECORATE);		//fOccurrencesFinderJob.setSystem(true);		//fOccurrencesFinderJob.schedule();		fOccurrencesFinderJob.run(new NullProgressMonitor());	}