*/
protected Rectangle computeBoundsBelowAbove(Shell shell, Point preferred, int offset, CompletionProposalPopup popup) {
Control subjectControl= fContentAssistSubjectControlAdapter.getControl();
Display display= subjectControl.getDisplay();
Rectangle caret= getCaretRectangle(offset);
Monitor monitor= getClosestMonitor(display, caret);
Rectangle bounds= monitor.getClientArea();
Geometry.moveInside(caret, bounds);
int threshold= popup == null ? Integer.MAX_VALUE : popup.getMinimalHeight();
int spaceAbove= caret.y - bounds.y;
int spaceBelow= bounds.y + bounds.height - (caret.y + caret.height);