return (int) (successor.getTimeStamp() - predecessor.getTimeStamp());
final long delta= successor.getTimeStamp() - predecessor.getTimeStamp(); if (delta > 0) return 1; else if (delta < 0) return -1; return 0;
	private void performMerge(final OutputStream output, final InputStream target, final InputStream source) throws CoreException {		final RefactoringDescriptor[] sourceDescriptors= RefactoringHistoryManager.readRefactoringDescriptors(source, 0, Long.MAX_VALUE);		final RefactoringDescriptor[] targetDescriptors= RefactoringHistoryManager.readRefactoringDescriptors(target, 0, Long.MAX_VALUE);		final Set set= new HashSet();		for (int index= 0; index < sourceDescriptors.length; index++)			set.add(sourceDescriptors[index]);		for (int index= 0; index < targetDescriptors.length; index++)			set.add(targetDescriptors[index]);		final RefactoringDescriptor[] outputDescriptors= new RefactoringDescriptor[set.size()];		set.toArray(outputDescriptors);		Arrays.sort(outputDescriptors, new Comparator() {			public final int compare(final Object first, final Object second) {				final RefactoringDescriptor predecessor= (RefactoringDescriptor) first;				final RefactoringDescriptor successor= (RefactoringDescriptor) second;				return (int) (successor.getTimeStamp() - predecessor.getTimeStamp());			}		});		RefactoringHistoryManager.writeRefactoringDescriptors(output, outputDescriptors, true);	}