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 String encoding, final InputStream target, final InputStream source) throws IOException, UnsupportedEncodingException {		final RefactoringDescriptorProxy[] sourceProxies= RefactoringHistoryManager.readRefactoringDescriptorProxies(source, null, 0, Long.MAX_VALUE, RefactoringDescriptor.NONE);		final RefactoringDescriptorProxy[] targetProxies= RefactoringHistoryManager.readRefactoringDescriptorProxies(target, null, 0, Long.MAX_VALUE, RefactoringDescriptor.NONE);		final Set set= new HashSet();		for (int index= 0; index < sourceProxies.length; index++)			set.add(sourceProxies[index]);		for (int index= 0; index < targetProxies.length; index++)			set.add(targetProxies[index]);		final RefactoringDescriptorProxy[] outputProxies= new RefactoringDescriptorProxy[set.size()];		set.toArray(outputProxies);		Arrays.sort(outputProxies, new Comparator() {			public final int compare(final Object first, final Object second) {				final RefactoringDescriptorProxy predecessor= (RefactoringDescriptorProxy) first;				final RefactoringDescriptorProxy successor= (RefactoringDescriptorProxy) second;				return (int) (successor.getTimeStamp() - predecessor.getTimeStamp());			}		});		final StringBuffer buffer= new StringBuffer(256);		for (int index= 0; index < outputProxies.length; index++) {			final RefactoringDescriptorProxy proxy= outputProxies[index];			buffer.setLength(0);			buffer.append(proxy.getTimeStamp());			buffer.append(RefactoringHistoryManager.DELIMITER_COMPONENT);			buffer.append(RefactoringHistoryManager.escapeString(proxy.getDescription()));			buffer.append(RefactoringHistoryManager.DELIMITER_ENTRY);			output.write(buffer.toString().getBytes(encoding));		}	}