@Override
    public boolean find(final Path file, final ListProgressListener listener) throws BackgroundException {
        if(file.isRoot()) {
            return true;
        }
        try {
            try {
                try {
                    final HttpHead request = new HttpHead(new DAVPathEncoder().encode(file));
                    for(Header header : this.headers()) {
                        request.addHeader(header);
                    }
                    return session.getClient().execute(request, new ExistsResponseHandler());
                }
                catch(SardineException e) {
                    throw new DAVExceptionMappingService().map("Failure to read attributes of {0}", e, file);
                }
                catch(IOException e) {
                    throw new HttpExceptionMappingService().map(e, file);
                }
            }
            catch(AccessDeniedException | InteroperabilityException e) {
                // 400 Multiple choices
                return new DefaultFindFeature(session).find(file, listener);
            }
        }
        catch(AccessDeniedException e) {
            // Parent directory may not be accessible. Issue #5662
            return true;
        }
        catch(LoginFailureException | NotfoundException e) {
            return false;
        }
    }
@Test
    public void testFindNotFound() throws Exception {
        assertFalse(new DAVFindFeature(session).find(new Path(new DefaultHomeFinderService(session).find(), new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory))));
        assertFalse(new DAVFindFeature(session).find(new Path(new DefaultHomeFinderService(session).find(), new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file))));
    }