code: public static <T> T withReader(Path self, @ClosureParams(value = SimpleType.class, options = "java.io.Reader") Closure<T> closure) throws IOException {
          return IOGroovyMethods.withReader(newReader(self), closure);
      }
docs: Create a new BufferedReader for this file and then
  passes it into the closure, ensuring the reader is closed after the
  closure returns.
  
  @param self    a file object
  @param closure a closure
  @return the value returned by the closure
  @throws java.io.IOException if an IOException occurs.
  @since 2.3.0