diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSelector.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSelector.java
index b386ce0..944e96a 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSelector.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSelector.java
@@ -17,14 +17,14 @@
 package org.apache.commons.vfs2;
 
 /**
- * This interface is used to select files when traversing a file hierarchy.
+ * Selects what to traverse a file hierarchy.
  *
  * @see Selectors
  */
 public interface FileSelector {
 
     /**
-     * Determines if a file or folder should be selected. This method is called in depthwise order (that is, it is
+     * Tests if a file or folder should be selected. This method is called in depthwise order (that is, it is
      * called for the children of a folder before it is called for the folder itself).
      *
      * @param fileInfo the file or folder to select.
@@ -34,7 +34,7 @@
     boolean includeFile(FileSelectInfo fileInfo) throws Exception;
 
     /**
-     * Determines whether a folder should be traversed. If this method returns true, {@link #includeFile} is called for
+     * Tests whether a folder should be traversed. If this method returns true, {@link #includeFile} is called for
      * each of the children of the folder, and each of the child folders is recursively traversed.
      * <p>
      * This method is called on a folder before {@link #includeFile} is called.
@@ -43,6 +43,24 @@
      * @param fileInfo the file or folder to select.
      * @return true if the folder should be traversed.
      * @throws Exception if an error occurs.
+     * @since 2.10.0
      */
+    default boolean traverseDescendants(FileSelectInfo fileInfo) throws Exception {
+        return traverseDescendents(fileInfo);
+    }
+
+    /**
+     * Tests whether a folder should be traversed. If this method returns true, {@link #includeFile} is called for
+     * each of the children of the folder, and each of the child folders is recursively traversed.
+     * <p>
+     * This method is called on a folder before {@link #includeFile} is called.
+     * </p>
+     *
+     * @param fileInfo the file or folder to select.
+     * @return true if the folder should be traversed.
+     * @throws Exception if an error occurs.
+     * @deprecated Use {@link #traverseDescendants(FileSelectInfo)}.
+     */
+    @Deprecated
     boolean traverseDescendents(FileSelectInfo fileInfo) throws Exception;
 }
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/InvertIncludeFileSelector.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/InvertIncludeFileSelector.java
index 30f4acd..59054e4 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/InvertIncludeFileSelector.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/InvertIncludeFileSelector.java
@@ -49,7 +49,7 @@
      */
     @Override
     public boolean traverseDescendents(final FileSelectInfo fileInfo) throws Exception {
-        return delegateFileSelector.traverseDescendents(fileInfo);
+        return delegateFileSelector.traverseDescendants(fileInfo);
     }
 
 }
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java
index 856feca..3800550 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java
@@ -120,7 +120,7 @@
         final int index = selected.size();
 
         // If the file is a folder, traverse it
-        if (file.getType().hasChildren() && selector.traverseDescendents(fileInfo)) {
+        if (file.getType().hasChildren() && selector.traverseDescendants(fileInfo)) {
             final int curDepth = fileInfo.getDepth();
             fileInfo.setDepth(curDepth + 1);
 
