public void forceRemoveDirectoryContents(@NonNull Path path) throws IOException {
        for (int retryAttempt = 0; ; retryAttempt++) {
            List<IOException> errors = tryRemoveDirectoryContents(path);
            if (errors.isEmpty()) return;
            if (retryStrategy.shouldRetry(retryAttempt)) continue;
            throw new CompositeIOException(retryStrategy.failureMessage(path, retryAttempt), errors);
        }
    }
@Test
    public void testForceRemoveDirectoryContents() throws IOException {
        File dir = tmp.newFolder();
        File d1 = new File(dir, "d1");
        File d2 = new File(dir, "d2");
        File f1 = new File(dir, "f1");
        File d1f1 = new File(d1, "d1f1");
        File d2f2 = new File(d2, "d1f2");
        mkdirs(d1, d2);
        touchWithFileName(f1, d1f1, d2f2);

        PathRemover remover = PathRemover.newSimpleRemover();
        remover.forceRemoveDirectoryContents(dir.toPath());

        assertTrue(dir.exists());
        assertFalse(d1.exists());
        assertFalse(d2.exists());
        assertFalse(f1.exists());
    }