code: public static void eachFileRecurse(Path self, @ClosureParams(value = SimpleType.class, options = "java.nio.file.Path") Closure closure) throws IOException { // throws FileNotFoundException, IllegalArgumentException {
          eachFileRecurse(self, FileType.ANY, closure);
      }
docs: Processes each descendant file in this directory and any sub-directories.
  Processing consists of calling <code>closure</code> passing it the current
  file (which may be a normal file or subdirectory) and then if a subdirectory was encountered,
  recursively processing the subdirectory.
  
  @param self    a Path (that happens to be a folder/directory)
  @param closure a Closure
  @throws java.io.FileNotFoundException if the given directory does not exist
  @throws IllegalArgumentException      if the provided Path object does not represent a directory
  @see #eachFileRecurse(Path, groovy.io.FileType, groovy.lang.Closure)
  @since 2.3.0