@Override
    public boolean find(final Path file, final ListProgressListener listener) throws BackgroundException {
        try {
            if(containerService.isContainer(file)) {
                final List<B2BucketResponse> buckets = session.getClient().listBuckets();
                for(B2BucketResponse bucket : buckets) {
                    if(StringUtils.equals(containerService.getContainer(file).getName(), bucket.getBucketName())) {
                        return true;
                    }
                }
            }
            else {
                try {
                    attributes.find(file, listener);
                    return true;
                }
                catch(NotfoundException e) {
                    return false;
                }
            }
            return false;
        }
        catch(B2ApiException e) {
            throw new B2ExceptionMappingService(fileid).map("Failure to read attributes of {0}", e, file);
        }
        catch(IOException e) {
            throw new DefaultIOExceptionMappingService().map("Failure to read attributes of {0}", e, file);
        }
    }
@Test
    public void testFindLargeUpload() throws Exception {
        final Path bucket = new Path("test-cyberduck", EnumSet.of(Path.Type.directory, Path.Type.volume));
        final Path file = new Path(bucket, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file, Path.Type.upload));
        final B2StartLargeFileResponse startResponse = session.getClient().startLargeFileUpload(
                new B2VersionIdProvider(session).getVersionId(bucket),
                file.getName(), null, Collections.emptyMap());
        assertTrue(new B2FindFeature(session, new B2VersionIdProvider(session)).find(file));
        session.getClient().cancelLargeFileUpload(startResponse.getFileId());
    }