code: @NullableDecl
    public String readFirstLine() throws IOException {
      Closer closer = Closer.create();
      try {
        BufferedReader reader = closer.register(openBufferedStream());
        return reader.readLine();
      } catch (Throwable e) {
        throw closer.rethrow(e);
      } finally {
        closer.close();
      }
    }
docs: Reads the first line of this source as a string. Returns {@code null} if this source is empty.
  
  <p>Like {@link BufferedReader#readLine()}, this method considers a line to be a sequence of
  text that is terminated by (but does not include) one of {@code \r\n}, {@code \r} or {@code
  \n}. If the source's content does not end in a line termination sequence, it is treated as if
  it does.
  
  @throws IOException if an I/O error occurs while reading from this source