@Override
    public Write.Append append(final Path file, final TransferStatus status) throws BackgroundException {
        try {
            final S3DefaultMultipartService multipartService = new S3DefaultMultipartService(session);
            final List<MultipartUpload> upload = multipartService.find(file);
            if(!upload.isEmpty()) {
                Long size = 0L;
                for(MultipartPart completed : multipartService.list(upload.iterator().next())) {
                    size += completed.getSize();
                }
                return new Write.Append(true).withStatus(status).withOffset(size);
            }
        }
        catch(AccessDeniedException | InteroperabilityException e) {
            log.warn(String.format("Ignore failure listing incomplete multipart uploads. %s", e));
        }
        return Write.override;
    }
@Test
    public void testAppendNoMultipartFound() throws Exception {
        final Path container = new Path("test-eu-central-1-cyberduck", EnumSet.of(Path.Type.directory, Path.Type.volume));
        final S3AccessControlListFeature acl = new S3AccessControlListFeature(session);
        final S3MultipartUploadService feature = new S3MultipartUploadService(session, new S3WriteFeature(session, acl), acl, 5 * 1024L * 1024L, 5);
        assertFalse(feature.append(new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file)), new TransferStatus().withLength(Long.MAX_VALUE)).append);
        assertEquals(Write.override, feature.append(new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file)), new TransferStatus().withLength(Long.MAX_VALUE)));
        assertEquals(Write.override, feature.append(new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file)), new TransferStatus().withLength(0L)));
    }