code: public static void traverse(final Path self, @ClosureParams(value = SimpleType.class, options = "java.nio.file.Path") final Closure closure)
              throws IOException {
          traverse(self, new HashMap<String, Object>(), closure);
      }
docs: Processes each descendant file in this directory and any sub-directories.
  Convenience method for {@link #traverse(Path, java.util.Map, groovy.lang.Closure)} when
  no options to alter the traversal behavior are required.
  
  @param self    a Path (that happens to be a folder/directory)
  @param closure the Closure to invoke on each file/directory and optionally returning a {@link groovy.io.FileVisitResult} value
  which can be used to control subsequent processing
  @throws java.io.FileNotFoundException if the given directory does not exist
  @throws IllegalArgumentException      if the provided Path object does not represent a directory
  @see #traverse(Path, java.util.Map, groovy.lang.Closure)
  @since 2.3.0