Bug 67090 JDT UI breaks api rules by implementing SourceRange [refactoring]
3.0rc1 jdt ui has an implementation of ISourceRange (because the one from jcore is internal and we did not feel like creating a n-th class for the same thing: pair of ints). however, according to the API ISourceRange should not be implemented
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/compare/JavaReplaceWithEditionActionImpl.java
EditionSelectionDialog d= new EditionSelectionDialog(shell, bundle);
			d.setHelpContextId(IJavaHelpContextIds.REPLACE_ELEMENT_WITH_HISTORY_DIALOG);
			
			ITypedElement target= new JavaTextBufferNode(file, buffer, inEditor);
			ITypedElement[] editions= buildEditions(target, file);
			ITypedElement ti= null;
			if (fPrevious) {
				ti= d.selectPreviousEdition(target, editions, input);
				if (ti == null) {
					MessageDialog.openInformation(shell, errorTitle, CompareMessages.getString("ReplaceFromHistory.parsingErrorMessage"));	
					return;
				}
			} else
				ti= d.selectEdition(target, editions, input);
						
			if (ti instanceof IStreamContentAccessor) {
				
				String content= JavaCompareUtilities.readString((IStreamContentAccessor)ti);
				String newContent= trimTextBlock(content, buffer.getLineDelimiter());
				if (newContent == null) {
					MessageDialog.openError(shell, errorTitle, errorMessage);
					return;
				}
				
				CompilationUnit root= parsePartialCompilationUnit(input.getCompilationUnit());
				
				
				final ISourceRange nameRange= input.getNameRange();
				
				ISourceRange myRange= new ISourceRange() {