installOccurrencesFinder();
installOccurrencesFinder(true);
	protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {		String property= event.getProperty();		if (AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH.equals(property)) {			/*			 * Ignore tab setting since we rely on the formatter preferences.			 * We do this outside the try-finally block to avoid that EDITOR_TAB_WIDTH			 * is handled by the sub-class (AbstractDecoratedTextEditor).			 */			return;		}		try {			ISourceViewer sourceViewer= getSourceViewer();			if (sourceViewer == null)				return;			if (isJavaEditorHoverProperty(property))				updateHoverBehavior();			boolean newBooleanValue= false;			Object newValue= event.getNewValue();			if (newValue != null)				newBooleanValue= Boolean.valueOf(newValue.toString()).booleanValue();			if (PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE.equals(property)) {				if (newBooleanValue)					selectionChanged();				return;			}			if (PreferenceConstants.EDITOR_MARK_OCCURRENCES.equals(property)) {				if (newBooleanValue != fMarkOccurrenceAnnotations) {					fMarkOccurrenceAnnotations= newBooleanValue;					if (!fMarkOccurrenceAnnotations)						uninstallOccurrencesFinder();					else						installOccurrencesFinder();				}				return;			}			if (PreferenceConstants.EDITOR_MARK_TYPE_OCCURRENCES.equals(property)) {				fMarkTypeOccurrences= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_METHOD_OCCURRENCES.equals(property)) {				fMarkMethodOccurrences= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_CONSTANT_OCCURRENCES.equals(property)) {				fMarkConstantOccurrences= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_FIELD_OCCURRENCES.equals(property)) {				fMarkFieldOccurrences= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_LOCAL_VARIABLE_OCCURRENCES.equals(property)) {				fMarkLocalVariableypeOccurrences= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_EXCEPTION_OCCURRENCES.equals(property)) {				fMarkExceptions= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_METHOD_EXIT_POINTS.equals(property)) {				fMarkMethodExitPoints= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_BREAK_CONTINUE_TARGETS.equals(property)) {				fMarkBreakContinueTargets= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_MARK_IMPLEMENTORS.equals(property)) {				fMarkImplementors= newBooleanValue;				return;			}			if (PreferenceConstants.EDITOR_STICKY_OCCURRENCES.equals(property)) {				fStickyOccurrenceAnnotations= newBooleanValue;				return;			}			if (SemanticHighlightings.affectsEnablement(getPreferenceStore(), event)) {				if (isSemanticHighlightingEnabled())					installSemanticHighlighting();				else					uninstallSemanticHighlighting();				return;			}			if (JavaCore.COMPILER_SOURCE.equals(property)) {				if (event.getNewValue() instanceof String)					fBracketMatcher.setSourceVersion((String) event.getNewValue());				// fall through as others are interested in source change as well.			}			((JavaSourceViewerConfiguration)getSourceViewerConfiguration()).handlePropertyChangeEvent(event);			if (affectsOverrideIndicatorAnnotations(event)) {				if (isShowingOverrideIndicators()) {					if (fOverrideIndicatorManager == null)						installOverrideIndicator(true);				} else {					if (fOverrideIndicatorManager != null)						uninstallOverrideIndicator();				}				return;			}			if (PreferenceConstants.EDITOR_FOLDING_PROVIDER.equals(property)) {				if (sourceViewer instanceof ProjectionViewer) {					ProjectionViewer projectionViewer= (ProjectionViewer) sourceViewer;					if (fProjectionModelUpdater != null)						fProjectionModelUpdater.uninstall();					// either freshly enabled or provider changed					fProjectionModelUpdater= JavaPlugin.getDefault().getFoldingStructureProviderRegistry().getCurrentFoldingProvider();					if (fProjectionModelUpdater != null) {						fProjectionModelUpdater.install(this, projectionViewer);					}				}				return;			}			if (DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE.equals(property)					|| DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE.equals(property)					|| DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR.equals(property)) {				StyledText textWidget= sourceViewer.getTextWidget();				int tabWidth= getSourceViewerConfiguration().getTabWidth(sourceViewer);				if (textWidget.getTabs() != tabWidth)					textWidget.setTabs(tabWidth);				return;			}			if (PreferenceConstants.EDITOR_FOLDING_ENABLED.equals(property)) {				if (sourceViewer instanceof ProjectionViewer) {					new ToggleFoldingRunner().runWhenNextVisible();				}				return;			}		} finally {			super.handlePreferenceStoreChanged(event);		}				if (AbstractDecoratedTextEditorPreferenceConstants.SHOW_RANGE_INDICATOR.equals(property)) {			// superclass already installed the range indicator			Object newValue= event.getNewValue();			ISourceViewer viewer= getSourceViewer();			if (newValue != null && viewer != null) {				if (Boolean.valueOf(newValue.toString()).booleanValue()) {					// adjust the highlightrange in order to get the magnet right after changing the selection					Point selection= viewer.getSelectedRange();					adjustHighlightRange(selection.x, selection.y);				}			}		}	}