if (!c2.exists()) return false;
	public boolean equals(Object o1, Object o2) {		if (o1 == o2)	// this handles also the case that both are null			return true;		if (o1 == null)  			return false; // o2 != null if we reach this point 		if (o1.equals(o2))			return true;		IJavaElement j1= (o1 instanceof IJavaElement) ? (IJavaElement)o1 : null;		IJavaElement j2= (o2 instanceof IJavaElement) ? (IJavaElement)o2 : null;		if (j1 == null || j2 == null)			return false;		ICompilationUnit c1= (ICompilationUnit)j1.getAncestor(IJavaElement.COMPILATION_UNIT);		ICompilationUnit c2= (ICompilationUnit)j2.getAncestor(IJavaElement.COMPILATION_UNIT);		if (c1 == null || c2 == null)			return false;		if (c1.isWorkingCopy() && c2.isWorkingCopy() || !c1.isWorkingCopy() && !c2.isWorkingCopy())			return false;		if (c1.isWorkingCopy()) {			j1= c1.getOriginal(j1);		} else if (c2.isWorkingCopy()) {			j2= c2.getOriginal(j2); 		}		if (j1 == null || j2 == null)			return false;		return j1.equals(j2);	}