@Override
    public boolean find(final Path file, final ListProgressListener listener) throws BackgroundException {
        if(file.isRoot()) {
            return true;
        }
        try {
            new SwiftAttributesFinderFeature(session).find(file, listener);
            return true;
        }
        catch(NotfoundException e) {
            return false;
        }
    }
@Test
    public void testFindKeyWithSameSuffix() throws Exception {
        final Path container = new Path("test.cyberduck.ch", EnumSet.of(Path.Type.directory, Path.Type.volume));
        container.attributes().setRegion("IAD");
        final String suffix = new AlphanumericRandomStringService().random();
        final Path other = new Path(container, String.format("%s.%s", new AlphanumericRandomStringService().random(), suffix), EnumSet.of(Path.Type.file));
        new SwiftTouchFeature(session, new SwiftRegionService(session)).touch(other, new TransferStatus());
        final Path file = new Path(container, suffix, EnumSet.of(Path.Type.file));
        final SwiftFindFeature feature = new SwiftFindFeature(session);
        assertFalse(feature.find(file));
        assertFalse(feature.find(new Path(file).withType(EnumSet.of(Path.Type.directory))));
        new SwiftTouchFeature(session, new SwiftRegionService(session)).touch(file, new TransferStatus());
        assertTrue(feature.find(file));
        assertFalse(feature.find(new Path(file).withType(EnumSet.of(Path.Type.directory))));
        assertFalse(feature.find(new Path(String.format("%s-", file.getAbsolute()), EnumSet.of(Path.Type.file))));
        assertFalse(feature.find(new Path(String.format("%s-", file.getAbsolute()), EnumSet.of(Path.Type.directory))));
        assertFalse(feature.find(new Path(String.format("-%s", file.getAbsolute()), EnumSet.of(Path.Type.file))));
        assertFalse(feature.find(new Path(String.format("-%s", file.getAbsolute()), EnumSet.of(Path.Type.directory))));
        assertNotNull(new SwiftAttributesFinderFeature(session).find(file));
        new SwiftDeleteFeature(session).delete(Arrays.asList(file, other), new DisabledLoginCallback(), new Delete.DisabledCallback());
    }