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);
    }
public static void eachFileRecurse ( Path self , @ ClosureParams ( value = SimpleType . class , options = "java.nio.file.Path" ) Closure closure ) throws IOException { eachFileRecurse ( self , FileType . ANY , closure ) ; }
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