class PathAccepter {

    private static final Logger LOGGER = LoggerFactory.getLogger(PathAccepter.class);

    private final IgnoredNames ignoredNames;
    private final Filter includedNames;

    /**
     * Package-private to be initialized from the runtime environment.
     */
    PathAccepter(IgnoredNames ignoredNames, Filter includedNames) {
        this.ignoredNames = ignoredNames;
        this.includedNames = includedNames;
    }

    /**
     * Evaluates the specified {@code file} versus the runtime configuration of
     * ignored files and directories or of specified inclusive filtering, and
     * returns a value whether the {@code file} is to be accepted.
     * @param file a defined instance under the source root
     */
    public boolean accept(File file) {<FILL_FUNCTION_BODY>}
}

        if (!includedNames.isEmpty()
                && // the filter should not affect directory names
                (!(file.isDirectory() || includedNames.match(file)))) {

            LOGGER.finer(() -> String.format("not including '%s'", launderLog(file.getAbsolutePath())));
            return false;
        }

        if (ignoredNames.ignore(file)) {
            LOGGER.finer(() -> String.format("ignoring '%s'", launderLog(file.getAbsolutePath())));
            return false;
        }

        return true;
    
<no_super_class>