if (annotation.getText() == null) continue;
	protected List getJavaAnnotationsForLine(ISourceViewer viewer, int line) {				IDocument document= viewer.getDocument();		IAnnotationModel model= viewer.getAnnotationModel();				if (model == null)			return null;					List exact= new ArrayList();		List including= new ArrayList();				Iterator e= model.getAnnotationIterator();		HashMap messagesAtPosition= new HashMap();		while (e.hasNext()) {			Annotation annotation= (Annotation) e.next();						Position position= model.getPosition(annotation);			if (position == null)				continue;						AnnotationPreference preference= getAnnotationPreference(annotation);			if (preference == null)				continue;						if (OVERVIEW_RULER_HOVER.equals(fType)) {								String key= preference.getOverviewRulerPreferenceKey();				if (key == null || !fStore.getBoolean(key))					continue;			} else if (TEXT_RULER_HOVER.equals(fType)) {				String key= preference.getTextPreferenceKey();				if (key != null) {					if (!fStore.getBoolean(key))						continue;				} else {					key= preference.getHighlightPreferenceKey();					if (key == null || !fStore.getBoolean(key))						continue;				}			} else if (VERTICAL_RULER_HOVER.equals(fType)) {				String key= preference.getVerticalRulerPreferenceKey();				// backward compatibility				if (key != null && !fStore.getBoolean(key))					continue;			}						if (isDuplicateJavaAnnotation(messagesAtPosition, position, annotation.getText()))				continue;						switch (compareRulerLine(position, document, line)) {			case 1:				exact.add(annotation);				break;			case 2:				including.add(annotation);				break;			}		}				return select(exact, including);	}