code: public static long size(File path, FileFilter fileFilter) {
      long size = 0;
  
      for (File file : safeListFiles(path, fileFilter)) {
        size += (isDirectory(file) ? size(file, fileFilter) : file.length());
      }
  
      return (ComposableFileFilter.and(FileUtils::isFile, fileFilter).accept(path) ? path.length() : size);
    }
docs: Determines the size of the path in bytes.  The path size is determined by the byte size of all the files
  contained within the path itself as well as all files in sub-directories, which are accepted
  by the {@link FileFilter}.
  
  @param path the {@link File} denoting the path to evaluate.
  @param fileFilter the {@link FileFilter} used to determine whether files identified will be included in the size.
  @return a long value indicating the size of the path in bytes.
  @see java.io.File#length()
  @see java.io.FileFilter#accept(File)