diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
index d80a677..07ef2e6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/fs/DeleteTrashFolders.java
@@ -37,22 +37,33 @@
 public class DeleteTrashFolders implements LifecycleListener {
   private static final Logger log = LoggerFactory.getLogger(DeleteTrashFolders.class);
 
-  /**
-   * Search for name which ends with a dot, 13 digits and the string ".deleted". A folder 'f' is
-   * renamed to 'f.<currentTimeMillis>.deleted'. <currentTimeMillis> happens to be exactly 13 digits
-   * for commits created between 2002 (before git was born) and 2285.
-   */
-  private static final Pattern TRASH_1 = Pattern.compile(".*\\.\\d{13}.deleted");
+  static class TrashFolderPredicate {
 
-  /**
-   * New trash folder name format. It adds % chars around the "deleted" string and keeps the ".git"
-   * extension.
-   */
-  private static final Pattern TRASH_2 = Pattern.compile(".*\\.\\d{13}.%deleted%.git");
+    private TrashFolderPredicate() {
+      // Avoid this class being instantiated by using the default empty constructor
+    }
 
-  @VisibleForTesting
-  static final boolean isTrashFolderName(String fName) {
-    return TRASH_1.matcher(fName).matches() || TRASH_2.matcher(fName).matches();
+    /**
+     * Search for name which ends with a dot, 13 digits and the string ".deleted". A folder 'f' is
+     * renamed to 'f.<currentTimeMillis>.deleted'. <currentTimeMillis> happens to be exactly 13
+     * digits for commits created between 2002 (before git was born) and 2285.
+     */
+    private static final Pattern TRASH_1 = Pattern.compile(".*\\.\\d{13}.deleted");
+
+    /**
+     * New trash folder name format. It adds % chars around the "deleted" string and keeps the
+     * ".git" extension.
+     */
+    private static final Pattern TRASH_2 = Pattern.compile(".*\\.\\d{13}.%deleted%.git");
+
+    @VisibleForTesting
+    static final boolean match(String fName) {
+      return TRASH_1.matcher(fName).matches() || TRASH_2.matcher(fName).matches();
+    }
+
+    static boolean match(Path dir) {
+      return match(dir.getFileName().toString());
+    }
   }
 
   private Set<Path> repoFolders;
@@ -72,7 +83,7 @@
     public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
         throws IOException {
       String fName = dir.getFileName().toString();
-      if (isTrashFolderName(fName)) {
+      if (TrashFolderPredicate.match(fName)) {
         log.warn("Will delete this folder: {}", dir);
         recursiveDelete(dir);
         return FileVisitResult.SKIP_SUBTREE;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java
index 7b9b055..6ce8206 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/deleteproject/fs/TrashFolderNameMatcherTest.java
@@ -15,7 +15,7 @@
 package com.googlesource.gerrit.plugins.deleteproject.fs;
 
 import static com.google.common.truth.Truth.assertThat;
-import static com.googlesource.gerrit.plugins.deleteproject.fs.DeleteTrashFolders.isTrashFolderName;
+import static com.googlesource.gerrit.plugins.deleteproject.fs.DeleteTrashFolders.TrashFolderPredicate.match;
 
 import org.junit.Test;
 
@@ -54,10 +54,10 @@
   }
 
   private void matches(String name) {
-    assertThat(isTrashFolderName(name)).isTrue();
+    assertThat(match(name)).isTrue();
   }
 
   private void doesNotMatch(String name) {
-    assertThat(isTrashFolderName(name)).isFalse();
+    assertThat(match(name)).isFalse();
   }
 }
