if (getSourceViewer() == null || fRememberedSelection == null)
int startOffset= fRememberedSelectionStartOffset.getOffset(); int endOffset= fRememberedSelectionEndOffset.getOffset();   if (fRememberedSelectionSign) { if (startOffset != -1) startOffset++; } else { if (endOffset != -1) endOffset++; }  if (startOffset == -1) startOffset= endOffset;  if (endOffset == -1) endOffset= startOffset;  IJavaElement element; if (endOffset == -1) {  element= fRememberedSelectionEndOffset.getElement(); if (element == null) element= fRememberedSelectionStartOffset.getElement(); if (element != null) setSelection(element);
	protected void restoreSelection() {				try {						if (getSourceViewer() == null || fRememberedSelection == null)				return;							IJavaElement newElement= findElement(fRememberedElement);			int newOffset= getOffset(newElement);			int delta= (newOffset > -1 && fRememberedElementOffset > -1) ? newOffset - fRememberedElementOffset : 0;			if (isValidSelection(delta + fRememberedSelection.getOffset(), fRememberedSelection.getLength()))				selectAndReveal(delta + fRememberedSelection.getOffset(), fRememberedSelection.getLength());								} finally {			fRememberedSelection= null;			fRememberedElement= null;			fRememberedElementOffset= -1;		}	}