if (je == null) return null;
	public static IJavaElement getJavaElement(IMarker marker) {		if (marker == null || !marker.exists())			return null;		try {			String handleId= (String)marker.getAttribute(IJavaSearchUIConstants.ATT_JE_HANDLE_ID);			IJavaElement je= JavaCore.create(handleId);			if (!marker.getAttribute(IJavaSearchUIConstants.ATT_IS_WORKING_COPY, false)) {				if (je != null && je.exists())					return je;			}			if (isBinary(je) || fgJavaElementTypeComparator.compare(je, IJavaElement.COMPILATION_UNIT) > 0)				return je;						ICompilationUnit cu= findCompilationUnit(je);			if (cu == null || !cu.exists()) {				cu= (ICompilationUnit)JavaCore.create(marker.getResource());			}			// Find working copy element			IWorkingCopy[] workingCopies= JavaUI.getSharedWorkingCopies();			int i= 0;			while (i < workingCopies.length) {				if (workingCopies[i].getOriginalElement().equals(cu)) {					je= findInWorkingCopy(workingCopies[i], je, true);					break;				}				i++;			}			if (je != null && !je.exists()) {				IJavaElement[] jElements= cu.findElements(je);				if (jElements == null || jElements.length == 0)					je= cu.getElementAt(marker.getAttribute(IMarker.CHAR_START, 0));				else					je= jElements[0];			}			return je;		} catch (CoreException ex) {			ExceptionHandler.handle(ex, SearchMessages.getString("Search.Error.createJavaElement.title"), SearchMessages.getString("Search.Error.createJavaElement.message")); //$NON-NLS-2$ //$NON-NLS-1$			return null;		}	}