buffer.setLength(0);
	public IStatus merge(final OutputStream output, final String outputEncoding, final InputStream ancestor, final String ancestorEncoding, final InputStream target, final String targetEncoding, final InputStream source, final String sourceEncoding, final IProgressMonitor monitor) {		try {			final RefactoringDescriptorProxy[] sourceProxies= RefactoringHistoryManager.readRefactoringDescriptorProxies(source, null, 0, Long.MAX_VALUE);			final RefactoringDescriptorProxy[] targetProxies= RefactoringHistoryManager.readRefactoringDescriptorProxies(target, null, 0, Long.MAX_VALUE);			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.append(proxy.getTimeStamp());				buffer.append(RefactoringHistoryManager.DELIMITER_STAMP);				buffer.append(proxy.getDescription());				buffer.append(RefactoringHistoryManager.DELIMITER_ENTRY);				output.write(buffer.toString().getBytes(outputEncoding));			}		} catch (IOException exception) {			return new Status(IStatus.ERROR, RefactoringUIPlugin.getPluginId(), 1, RefactoringUIMessages.RefactoringHistoryMerger_error_auto_merge, exception);		}		return Status.OK_STATUS;	}