return new CustomSourceInformationControl(shell, IDocument.DEFAULT_CONTENT_TYPE);
return new SourceViewerInformationControl(shell);
	protected final ISourceViewer createSourceViewer(Composite parent, IVerticalRuler verticalRuler, int styles) {		IPreferenceStore store= getPreferenceStore();		ISourceViewer viewer= createJavaSourceViewer(parent, verticalRuler, getOverviewRuler(), isOverviewRulerVisible(), styles, store);		JavaUIHelp.setHelp(this, viewer.getTextWidget(), IJavaHelpContextIds.JAVA_EDITOR);				JavaSourceViewer javaSourceViewer= null;		if (viewer instanceof JavaSourceViewer)			javaSourceViewer= (JavaSourceViewer)viewer;		/*		 * This is a performance optimization to reduce the computation of		 * the text presentation triggered by {@link #setVisibleDocument(IDocument)}		 */		if (javaSourceViewer != null && isFoldingEnabled() && (store == null || !store.getBoolean(PreferenceConstants.EDITOR_SHOW_SEGMENTS)))			javaSourceViewer.prepareDelayedProjection();				ProjectionViewer projectionViewer= (ProjectionViewer)viewer;		fProjectionSupport= new ProjectionSupport(projectionViewer, getAnnotationAccess(), getSharedColors());		fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.error"); //$NON-NLS-1$		fProjectionSupport.addSummarizableAnnotationType("org.eclipse.ui.workbench.texteditor.warning"); //$NON-NLS-1$		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);		// ensure source viewer decoration support has been created and configured		getSourceViewerDecorationSupport(viewer);		return viewer;	}