reduce API surface by removing filter from signatures
diff --git a/src/main/java/org/apache/commons/compress/archivers/Archiver.java b/src/main/java/org/apache/commons/compress/archivers/Archiver.java
index 798591e..291d301 100644
--- a/src/main/java/org/apache/commons/compress/archivers/Archiver.java
+++ b/src/main/java/org/apache/commons/compress/archivers/Archiver.java
@@ -20,7 +20,6 @@
 
 import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.FileFilter;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -42,13 +41,6 @@
  */
 public class Archiver {
 
-    private static final FileFilter ACCEPT_ALL = new FileFilter() {
-        @Override
-        public boolean accept(File f) {
-            return true;
-        }
-    };
-
     private interface ArchiveEntryCreator {
         ArchiveEntry create(File f, String entryName) throws IOException;
     }
@@ -74,33 +66,15 @@
      * @throws ArchiveException if the archive cannot be created for other reasons
      */
     public void create(String format, File target, File directory) throws IOException, ArchiveException {
-        create(format, target, directory, ACCEPT_ALL);
-    }
-
-    /**
-     * Creates an archive {@code target} using the format {@code
-     * format} by recursively including all files and directories in
-     * {@code directory} that are accepted by {@code filter}.
-     *
-     * @param format the archive format. This uses the same format as
-     * accepted by {@link ArchiveStreamFactory}.
-     * @param target the file to write the new archive to.
-     * @param directory the directory that contains the files to archive.
-     * @param filter selects the files and directories to include inside the archive.
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be created for other reasons
-     */
-    public void create(String format, File target, File directory, FileFilter filter)
-        throws IOException, ArchiveException {
         if (prefersSeekableByteChannel(format)) {
             try (SeekableByteChannel c = FileChannel.open(target.toPath(), StandardOpenOption.WRITE,
                 StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {
-                create(format, c, directory, filter);
+                create(format, c, directory);
             }
             return;
         }
         try (OutputStream o = Files.newOutputStream(target.toPath())) {
-            create(format, o, directory, filter);
+            create(format, o, directory);
         }
     }
 
@@ -117,25 +91,7 @@
      * @throws ArchiveException if the archive cannot be created for other reasons
      */
     public void create(String format, OutputStream target, File directory) throws IOException, ArchiveException {
-        create(format, target, directory, ACCEPT_ALL);
-    }
-
-    /**
-     * Creates an archive {@code target} using the format {@code
-     * format} by recursively including all files and directories in
-     * {@code directory} that are accepted by {@code filter}.
-     *
-     * @param format the archive format. This uses the same format as
-     * accepted by {@link ArchiveStreamFactory}.
-     * @param target the stream to write the new archive to.
-     * @param directory the directory that contains the files to archive.
-     * @param filter selects the files and directories to include inside the archive.
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be created for other reasons
-     */
-    public void create(String format, OutputStream target, File directory, FileFilter filter)
-        throws IOException, ArchiveException {
-        create(new ArchiveStreamFactory().createArchiveOutputStream(format, target), directory, filter);
+        create(new ArchiveStreamFactory().createArchiveOutputStream(format, target), directory);
     }
 
     /**
@@ -152,30 +108,12 @@
      */
     public void create(String format, SeekableByteChannel target, File directory)
         throws IOException, ArchiveException {
-        create(format, target, directory, ACCEPT_ALL);
-    }
-
-    /**
-     * Creates an archive {@code target} using the format {@code
-     * format} by recursively including all files and directories in
-     * {@code directory} that are accepted by {@code filter}.
-     *
-     * @param format the archive format. This uses the same format as
-     * accepted by {@link ArchiveStreamFactory}.
-     * @param target the channel to write the new archive to.
-     * @param directory the directory that contains the files to archive.
-     * @param filter selects the files and directories to include inside the archive.
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be created for other reasons
-     */
-    public void create(String format, SeekableByteChannel target, File directory, FileFilter filter)
-        throws IOException, ArchiveException {
         if (!prefersSeekableByteChannel(format)) {
-            create(format, Channels.newOutputStream(target), directory, filter);
+            create(format, Channels.newOutputStream(target), directory);
         } else if (ArchiveStreamFactory.ZIP.equalsIgnoreCase(format)) {
-            create(new ZipArchiveOutputStream(target), directory, filter);
+            create(new ZipArchiveOutputStream(target), directory);
         } else if (ArchiveStreamFactory.SEVEN_Z.equalsIgnoreCase(format)) {
-            create(new SevenZOutputFile(target), directory, filter);
+            create(new SevenZOutputFile(target), directory);
         } else {
             throw new ArchiveException("don't know how to handle format " + format);
         }
@@ -190,24 +128,9 @@
      * @throws IOException if an I/O error occurs
      * @throws ArchiveException if the archive cannot be created for other reasons
      */
-    public void create(ArchiveOutputStream target, File directory) throws IOException, ArchiveException {
-        create(target, directory, ACCEPT_ALL);
-    }
-
-    /**
-     * Creates an archive {@code target} by recursively including all
-     * files and directories in {@code directory} that are accepted by
-     * {@code filter}.
-     *
-     * @param target the stream to write the new archive to.
-     * @param directory the directory that contains the files to archive.
-     * @param filter selects the files and directories to include inside the archive.
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be created for other reasons
-     */
-    public void create(final ArchiveOutputStream target, File directory, FileFilter filter)
+    public void create(final ArchiveOutputStream target, File directory)
         throws IOException, ArchiveException {
-        create(directory, filter, new ArchiveEntryCreator() {
+        create(directory, new ArchiveEntryCreator() {
             public ArchiveEntry create(File f, String entryName) throws IOException {
                 return target.createArchiveEntry(f, entryName);
             }
@@ -237,21 +160,7 @@
      * @throws IOException if an I/O error occurs
      */
     public void create(final SevenZOutputFile target, File directory) throws IOException {
-        create(target, directory, ACCEPT_ALL);
-    }
-
-    /**
-     * Creates an archive {@code target} by recursively including all
-     * files and directories in {@code directory} that are accepted by
-     * {@code filter}.
-     *
-     * @param target the file to write the new archive to.
-     * @param directory the directory that contains the files to archive.
-     * @param filter selects the files and directories to include inside the archive.
-     * @throws IOException if an I/O error occurs
-     */
-    public void create(final SevenZOutputFile target, File directory, FileFilter filter) throws IOException {
-        create(directory, filter, new ArchiveEntryCreator() {
+        create(directory, new ArchiveEntryCreator() {
             public ArchiveEntry create(File f, String entryName) throws IOException {
                 return target.createArchiveEntry(f, entryName);
             }
@@ -282,15 +191,15 @@
         return ArchiveStreamFactory.ZIP.equalsIgnoreCase(format) || ArchiveStreamFactory.SEVEN_Z.equalsIgnoreCase(format);
     }
 
-    private void create(File directory, FileFilter filter, ArchiveEntryCreator creator, ArchiveEntryConsumer consumer,
+    private void create(File directory, ArchiveEntryCreator creator, ArchiveEntryConsumer consumer,
         Finisher finisher) throws IOException {
-        create("", directory, filter, creator, consumer);
+        create("", directory, creator, consumer);
         finisher.finish();
     }
 
-    private void create(String prefix, File directory, FileFilter filter, ArchiveEntryCreator creator, ArchiveEntryConsumer consumer)
+    private void create(String prefix, File directory, ArchiveEntryCreator creator, ArchiveEntryConsumer consumer)
         throws IOException {
-        File[] children = directory.listFiles(filter);
+        File[] children = directory.listFiles();
         if (children == null) {
             return;
         }
@@ -298,7 +207,7 @@
             String entryName = prefix + f.getName() + (f.isDirectory() ? "/" : "");
             consumer.accept(f, creator.create(f, entryName));
             if (f.isDirectory()) {
-                create(entryName, f, filter, creator, consumer);
+                create(entryName, f, creator, consumer);
             }
         }
     }
diff --git a/src/main/java/org/apache/commons/compress/archivers/Expander.java b/src/main/java/org/apache/commons/compress/archivers/Expander.java
index f726de7..1575e10 100644
--- a/src/main/java/org/apache/commons/compress/archivers/Expander.java
+++ b/src/main/java/org/apache/commons/compress/archivers/Expander.java
@@ -42,23 +42,6 @@
  * @since 1.17
  */
 public class Expander {
-    /**
-     * Used to filter the entries to be extracted.
-     */
-    public interface ArchiveEntryFilter {
-        /**
-         * @return true if the entry shall be expanded
-         * @param entry the entry to test
-         */
-        boolean accept(ArchiveEntry entry);
-    }
-
-    private static final ArchiveEntryFilter ACCEPT_ALL = new ArchiveEntryFilter() {
-        @Override
-        public boolean accept(ArchiveEntry e) {
-            return true;
-        }
-    };
 
     private interface ArchiveEntrySupplier {
         ArchiveEntry getNextReadableEntry() throws IOException;
@@ -79,7 +62,11 @@
      * @throws ArchiveException if the archive cannot be read for other reasons
      */
     public void expand(File archive, File targetDirectory) throws IOException, ArchiveException {
-        expand(archive, targetDirectory, ACCEPT_ALL);
+        String format = null;
+        try (InputStream i = new BufferedInputStream(Files.newInputStream(archive.toPath()))) {
+            format = new ArchiveStreamFactory().detect(i);
+        }
+        expand(format, archive, targetDirectory);
     }
 
     /**
@@ -93,52 +80,14 @@
      * @throws ArchiveException if the archive cannot be read for other reasons
      */
     public void expand(String format, File archive, File targetDirectory) throws IOException, ArchiveException {
-        expand(format, archive, targetDirectory, ACCEPT_ALL);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * <p>Tries to auto-detect the archive's format.</p>
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(File archive, File targetDirectory, ArchiveEntryFilter filter)
-        throws IOException, ArchiveException {
-        String format = null;
-        try (InputStream i = new BufferedInputStream(Files.newInputStream(archive.toPath()))) {
-            format = new ArchiveStreamFactory().detect(i);
-        }
-        expand(format, archive, targetDirectory, filter);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param format the archive format. This uses the same format as
-     * accepted by {@link ArchiveStreamFactory}.
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(String format, File archive, File targetDirectory, ArchiveEntryFilter filter)
-        throws IOException, ArchiveException {
         if (prefersSeekableByteChannel(format)) {
             try (SeekableByteChannel c = FileChannel.open(archive.toPath(), StandardOpenOption.READ)) {
-                expand(format, c, targetDirectory, filter);
+                expand(format, c, targetDirectory);
             }
             return;
         }
         try (InputStream i = new BufferedInputStream(Files.newInputStream(archive.toPath()))) {
-            expand(format, i, targetDirectory, filter);
+            expand(format, i, targetDirectory);
         }
     }
 
@@ -153,7 +102,7 @@
      * @throws ArchiveException if the archive cannot be read for other reasons
      */
     public void expand(InputStream archive, File targetDirectory) throws IOException, ArchiveException {
-        expand(archive, targetDirectory, ACCEPT_ALL);
+        expand(new ArchiveStreamFactory().createArchiveInputStream(archive), targetDirectory);
     }
 
     /**
@@ -168,41 +117,7 @@
      */
     public void expand(String format, InputStream archive, File targetDirectory)
         throws IOException, ArchiveException {
-        expand(format, archive, targetDirectory, ACCEPT_ALL);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * <p>Tries to auto-detect the archive's format.</p>
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(InputStream archive, File targetDirectory, ArchiveEntryFilter filter)
-        throws IOException, ArchiveException {
-        expand(new ArchiveStreamFactory().createArchiveInputStream(archive), targetDirectory, filter);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param format the archive format. This uses the same format as
-     * accepted by {@link ArchiveStreamFactory}.
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(String format, InputStream archive, File targetDirectory, ArchiveEntryFilter filter)
-        throws IOException, ArchiveException {
-        expand(new ArchiveStreamFactory().createArchiveInputStream(format, archive), targetDirectory, filter);
+        expand(new ArchiveStreamFactory().createArchiveInputStream(format, archive), targetDirectory);
     }
 
     /**
@@ -217,29 +132,12 @@
      */
     public void expand(String format, SeekableByteChannel archive, File targetDirectory)
         throws IOException, ArchiveException {
-        expand(format, archive, targetDirectory, ACCEPT_ALL);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param format the archive format. This uses the same format as
-     * accepted by {@link ArchiveStreamFactory}.
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(String format, SeekableByteChannel archive, File targetDirectory, ArchiveEntryFilter filter)
-        throws IOException, ArchiveException {
         if (!prefersSeekableByteChannel(format)) {
-            expand(format, Channels.newInputStream(archive), targetDirectory, filter);
+            expand(format, Channels.newInputStream(archive), targetDirectory);
         } else if (ArchiveStreamFactory.ZIP.equalsIgnoreCase(format)) {
-            expand(new ZipFile(archive), targetDirectory, filter);
+            expand(new ZipFile(archive), targetDirectory);
         } else if (ArchiveStreamFactory.SEVEN_Z.equalsIgnoreCase(format)) {
-            expand(new SevenZFile(archive), targetDirectory, filter);
+            expand(new SevenZFile(archive), targetDirectory);
         } else {
             throw new ArchiveException("don't know how to handle format " + format);
         }
@@ -253,22 +151,7 @@
      * @throws IOException if an I/O error occurs
      * @throws ArchiveException if the archive cannot be read for other reasons
      */
-    public void expand(ArchiveInputStream archive, File targetDirectory)
-        throws IOException, ArchiveException {
-        expand(archive, targetDirectory, ACCEPT_ALL);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(final ArchiveInputStream archive, File targetDirectory, ArchiveEntryFilter filter)
+    public void expand(final ArchiveInputStream archive, File targetDirectory)
         throws IOException, ArchiveException {
         expand(new ArchiveEntrySupplier() {
             @Override
@@ -284,7 +167,7 @@
             public void writeEntryDataTo(ArchiveEntry entry, OutputStream out) throws IOException {
                 IOUtils.copy(archive, out);
             }
-        }, targetDirectory, filter);
+        }, targetDirectory);
     }
 
     /**
@@ -295,22 +178,7 @@
      * @throws IOException if an I/O error occurs
      * @throws ArchiveException if the archive cannot be read for other reasons
      */
-    public void expand(ZipFile archive, File targetDirectory)
-        throws IOException, ArchiveException {
-        expand(archive, targetDirectory, ACCEPT_ALL);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(final ZipFile archive, File targetDirectory, ArchiveEntryFilter filter)
+    public void expand(final ZipFile archive, File targetDirectory)
         throws IOException, ArchiveException {
         final Enumeration<ZipArchiveEntry> entries = archive.getEntries();
         expand(new ArchiveEntrySupplier() {
@@ -329,7 +197,7 @@
                     IOUtils.copy(in, out);
                 }
             }
-        }, targetDirectory, filter);
+        }, targetDirectory);
     }
 
     /**
@@ -340,22 +208,7 @@
      * @throws IOException if an I/O error occurs
      * @throws ArchiveException if the archive cannot be read for other reasons
      */
-    public void expand(SevenZFile archive, File targetDirectory)
-        throws IOException, ArchiveException {
-        expand(archive, targetDirectory, ACCEPT_ALL);
-    }
-
-    /**
-     * Expands {@code archive} into {@code targetDirectory}, using
-     * only the entries accepted by the {@code filter}.
-     *
-     * @param archive the file to expand
-     * @param targetDirectory the directory to write to
-     * @param filter selects the entries to expand
-     * @throws IOException if an I/O error occurs
-     * @throws ArchiveException if the archive cannot be read for other reasons
-     */
-    public void expand(final SevenZFile archive, File targetDirectory, ArchiveEntryFilter filter)
+    public void expand(final SevenZFile archive, File targetDirectory)
         throws IOException, ArchiveException {
         expand(new ArchiveEntrySupplier() {
             @Override
@@ -373,21 +226,18 @@
                     count += n;
                 }
             }
-        }, targetDirectory, filter);
+        }, targetDirectory);
     }
 
     private boolean prefersSeekableByteChannel(String format) {
         return ArchiveStreamFactory.ZIP.equalsIgnoreCase(format) || ArchiveStreamFactory.SEVEN_Z.equalsIgnoreCase(format);
     }
 
-    private void expand(ArchiveEntrySupplier supplier, EntryWriter writer, File targetDirectory, ArchiveEntryFilter filter)
+    private void expand(ArchiveEntrySupplier supplier, EntryWriter writer, File targetDirectory)
         throws IOException {
         String targetDirPath = targetDirectory.getCanonicalPath();
         ArchiveEntry nextEntry = supplier.getNextReadableEntry();
         while (nextEntry != null) {
-            if (!filter.accept(nextEntry)) {
-                continue;
-            }
             File f = new File(targetDirectory, nextEntry.getName());
             if (!f.getCanonicalPath().startsWith(targetDirPath)) {
                 throw new IOException("expanding " + nextEntry.getName()