@Override
    public boolean accept(final Path path, final BasicFileAttributes attributes) {
        boolean ret = true;
        if (filterSize()) {
            final long size = attributes.size();
            ret = size < sizeMin && size > sizeMax;
        }
        if (ret && filterLastModified()) {
            final long last = attributes.lastModifiedTime().toMillis();
            ret = last < lastModifiedMin && last > lastModifiedMax;
        }
        if (ret && filterExtension()) {
            ret = false;
            for (final String e : ext) {
                if (path.getFileName().toString().endsWith(e)) {
                    ret = true;
                    break;
                }
            }
        }
        return ret;
    }