if (preference == null || !fStore.getBoolean(preference.getVerticalRulerPreferenceKey()))
if (preference == null || preference.getVerticalRulerPreferenceKey() != null && !fStore.getBoolean(preference.getVerticalRulerPreferenceKey()))
	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()) {			Object o= e.next();			if (o instanceof IJavaAnnotation) {				IJavaAnnotation a= (IJavaAnnotation)o;				if (OVERVIEW_RULER_HOVER.equals(fType)) {									AnnotationPreference preference= getAnnotationPreference(a.getAnnotationType());					if (preference == null || !fStore.getBoolean(preference.getOverviewRulerPreferenceKey()))						continue;				} else if (TEXT_RULER_HOVER.equals(fType)) {									AnnotationPreference preference= getAnnotationPreference(a.getAnnotationType());					if (preference == null || !(fStore.getBoolean(preference.getTextPreferenceKey()) || (preference.getHighlightPreferenceKey() != null && fStore.getBoolean(preference.getHighlightPreferenceKey()))))						continue;				} else if (VERTICAL_RULER_HOVER.equals(fType)) {					AnnotationPreference preference= getAnnotationPreference(a.getAnnotationType());					if (preference == null || !fStore.getBoolean(preference.getVerticalRulerPreferenceKey()))						continue;				}								if (!a.hasOverlay()) {					Position position= model.getPosition((Annotation)a);					if (position == null)						continue;					if (isDuplicateJavaAnnotation(messagesAtPosition, position, a.getMessage()))						continue;						switch (compareRulerLine(position, document, line)) {						case 1:							exact.add(a);							break;						case 2:							including.add(a);							break;					}				}			} else if (o instanceof IAnnotationExtension) {				IAnnotationExtension a= (IAnnotationExtension) o;				if (OVERVIEW_RULER_HOVER.equals(fType)) {					Object type= fAnnotationAccess.getType((Annotation)a);					if (type != null) {						AnnotationPreference preference= getAnnotationPreference(type.toString());						if (preference == null || !fStore.getBoolean(preference.getOverviewRulerPreferenceKey()))							continue;					} else						continue;				} else if (TEXT_RULER_HOVER.equals(fType)) {									Object type= fAnnotationAccess.getType((Annotation)a);					if (type != null) {						AnnotationPreference preference= getAnnotationPreference(type.toString());						if (preference == null || !(fStore.getBoolean(preference.getTextPreferenceKey()) || fStore.getBoolean(preference.getHighlightPreferenceKey())))							continue;					} else						continue;				} else					continue; // only take Java annotations for the vertical ruler								Position position= model.getPosition((Annotation)a);				if (position == null)					continue;				if (isDuplicateJavaAnnotation(messagesAtPosition, position, a.getMessage()))					continue;					switch (compareRulerLine(position, document, line)) {					case 1:						exact.add(a);						break;					case 2:						including.add(a);						break;				}			}		}				return select(exact, including);	}