ICompilationUnit cu= getWorkingCopy(fInput);
			public void endReporting() {				if (!isActive())					return;									if (fProgressMonitor != null && fProgressMonitor.isCanceled())					return;													boolean isCanceled= false;				boolean temporaryProblemsChanged= false;								synchronized (fAnnotations) {										fPreviouslyOverlaid= fCurrentlyOverlaid;					fCurrentlyOverlaid= new ArrayList();					if (fGeneratedAnnotations.size() > 0) {						temporaryProblemsChanged= true;							removeAnnotations(fGeneratedAnnotations, false, true);						fGeneratedAnnotations.clear();					}										if (fCollectedProblems != null && fCollectedProblems.size() > 0) {																		Iterator e= fCollectedProblems.iterator();						while (e.hasNext()) {														IProblem problem= (IProblem) e.next();														if (fProgressMonitor != null && fProgressMonitor.isCanceled()) {								isCanceled= true;								break;							}															Position position= createPositionFromProblem(problem);							if (position != null) {																ProblemAnnotation annotation= new ProblemAnnotation(problem);								overlayMarkers(position, annotation);																fGeneratedAnnotations.add(annotation);								addAnnotation(annotation, position, false);																temporaryProblemsChanged= true;							}						}												fCollectedProblems.clear();					}										removeMarkerOverlays(isCanceled);					fPreviouslyOverlaid.clear();					fPreviouslyOverlaid= null;				}									if (temporaryProblemsChanged)					fireModelChanged();			}