if (!fProcessSelectionEvents || part == this || !(selection instanceof IStructuredSelection))
if (!fProcessSelectionEvents || part == this || part instanceof ISearchResultView || !(selection instanceof IStructuredSelection))
	public void selectionChanged(IWorkbenchPart part, ISelection selection) {				if (!fProcessSelectionEvents || part == this || !(selection instanceof IStructuredSelection))			return;				// Set selection		Object selectedElement= getSingleElementFromSelection(selection);		if (selectedElement != null && part.equals(fPreviousSelectionProvider) && selectedElement.equals(fPreviousSelectedElement))			return;		fPreviousSelectedElement= selectedElement;				Object currentInput= (IJavaElement)getViewer().getInput();		if (selectedElement != null && selectedElement.equals(currentInput)) {			IJavaElement elementToSelect= findElementToSelect(getSingleElementFromSelection(selection));			if (elementToSelect != null && getTypeComparator().compare(selectedElement, elementToSelect) < 0)				setSelection(new StructuredSelection(elementToSelect), true);			fPreviousSelectionProvider= part;			return;		}				// Clear input if needed		if (part != fPreviousSelectionProvider && selectedElement != null && !selectedElement.equals(currentInput) && isInputResetBy(selectedElement, currentInput, part)) {			if (!isAncestorOf(selectedElement, currentInput))				setInput(null);			fPreviousSelectionProvider= part;			return;		} else	if (selection.isEmpty() && !isInputResetBy(part)) {			fPreviousSelectionProvider= part;			return;		} else if (selectedElement == null && part == fPreviousSelectionProvider) {			setInput(null);			fPreviousSelectionProvider= part;			return;		}		fPreviousSelectionProvider= part;				// Adjust input and set selection and 		if (selectedElement instanceof IJavaElement)			adjustInputAndSetSelection((IJavaElement)selectedElement);		else			setSelection(StructuredSelection.EMPTY, true);	}