if (hoverInfo == null) return null;  GC gc= new GC(display); try {  StringBuffer buffer= new StringBuffer(); int maxNumberOfLines= Math.round((float)maxHeight / gc.getFontMetrics().getHeight());  fCounter= 0; LineBreakingReader reader= new LineBreakingReader(createReader(hoverInfo, presentation), gc, maxWidth);  boolean lastLineFormatted= false; String lastLineIndent= null;  String line=reader.readLine(); boolean lineFormatted= reader.isFormattedLine(); boolean firstLineProcessed= false;  while (line != null) {  if (fEnforceUpperLineLimit && maxNumberOfLines <= 0) break;  if (firstLineProcessed) { if (!lastLineFormatted) append(buffer, LINE_DELIM, null); else { append(buffer, LINE_DELIM, presentation); if (lastLineIndent != null) append(buffer, lastLineIndent, presentation); } }  append(buffer, line, null); firstLineProcessed= true;  lastLineFormatted= lineFormatted; if (!lineFormatted) lastLineIndent= null; else if (lastLineIndent == null) lastLineIndent= getIndent(line);  line= reader.readLine(); lineFormatted= reader.isFormattedLine();  maxNumberOfLines--; }  if (line != null && buffer.length() > 0) { append(buffer, LINE_DELIM, lineFormatted ? presentation : null); append(buffer, JavaUIMessages.HTMLTextPresenter_ellipsis, presentation); }  return trim(buffer, presentation);  } catch (IOException e) {  JavaPlugin.log(e); return null;  } finally { gc.dispose(); }
return updatePresentation((Drawable)display, hoverInfo, presentation, maxWidth, maxHeight);
	public String updatePresentation(Display display, String hoverInfo, TextPresentation presentation, int maxWidth, int maxHeight) {		if (hoverInfo == null)			return null;		GC gc= new GC(display);		try {			StringBuffer buffer= new StringBuffer();			int maxNumberOfLines= Math.round((float)maxHeight / gc.getFontMetrics().getHeight());			fCounter= 0;			LineBreakingReader reader= new LineBreakingReader(createReader(hoverInfo, presentation), gc, maxWidth);			boolean lastLineFormatted= false;			String lastLineIndent= null;			String line=reader.readLine();			boolean lineFormatted= reader.isFormattedLine();			boolean firstLineProcessed= false;			while (line != null) {				if (fEnforceUpperLineLimit && maxNumberOfLines <= 0)					break;				if (firstLineProcessed) {					if (!lastLineFormatted)						append(buffer, LINE_DELIM, null);					else {						append(buffer, LINE_DELIM, presentation);						if (lastLineIndent != null)							append(buffer, lastLineIndent, presentation);					}				}				append(buffer, line, null);				firstLineProcessed= true;				lastLineFormatted= lineFormatted;				if (!lineFormatted)					lastLineIndent= null;				else if (lastLineIndent == null)					lastLineIndent= getIndent(line);				line= reader.readLine();				lineFormatted= reader.isFormattedLine();				maxNumberOfLines--;			}			if (line != null && buffer.length() > 0) {				append(buffer, LINE_DELIM, lineFormatted ? presentation : null);				append(buffer, JavaUIMessages.HTMLTextPresenter_ellipsis, presentation);			}			return trim(buffer, presentation);		} catch (IOException e) {			JavaPlugin.log(e);			return null;		} finally {			gc.dispose();		}	}