JavaSourceViewer javaSourceViewer= null; if (viewer instanceof JavaSourceViewer) javaSourceViewer= (JavaSourceViewer)viewer;   if (javaSourceViewer != null && isFoldingEnabled()) javaSourceViewer.prepareDelayedProjection();  ProjectionViewer projectionViewer= (ProjectionViewer)viewer; fProjectionSupport= new ProjectionSupport(projectionViewer, getAnnotationAccess(), getSharedColors()); fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.error"); fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.warning"); fProjectionSupport.setHoverControlCreator(new IInformationControlCreator() { public IInformationControl createInformationControl(Shell shell) { return new CustomSourceInformationControl(shell, IDocument.DEFAULT_CONTENT_TYPE); } }); fProjectionSupport.install();  fProjectionModelUpdater= JavaPlugin.getDefault().getFoldingStructureProviderRegistry().getCurrentFoldingProvider(); if (fProjectionModelUpdater != null) fProjectionModelUpdater.install(this, projectionViewer);
	protected final ISourceViewer createSourceViewer(Composite parent, IVerticalRuler verticalRuler, int styles) {		ISourceViewer viewer= createJavaSourceViewer(parent, verticalRuler, getOverviewRuler(), isOverviewRulerVisible(), styles, getPreferenceStore());		// ensure source viewer decoration support has been created and configured		getSourceViewerDecorationSupport(viewer);		return viewer;	}