code: public static <T> T withReader(File file, @ClosureParams(value = SimpleType.class, options = "java.io.BufferedReader") Closure<T> closure) throws IOException {
          return IOGroovyMethods.withReader(newReader(file), 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 file    a file object
  @param closure a closure
  @return the value returned by the closure
  @throws IOException if an IOException occurs.
  @since 1.5.2