android/guava/src/com/google/common/io/ByteSink.java
public OutputStream openBufferedStream() throws IOException {
    OutputStream out = openStream();
    return (out instanceof BufferedOutputStream)
        ? (BufferedOutputStream) out
        : new BufferedOutputStream(out);
  }
public OutputStream openBufferedStream() throws IOException {
    OutputStream out = openStream();
    return (out instanceof BufferedOutputStream)
        ? (BufferedOutputStream) out
        : new BufferedOutputStream(out);
  }
Opens a new buffered {@link OutputStream} for writing to this sink. The returned stream is not
required to be a {@link BufferedOutputStream} in order to allow implementations to simply
delegate to {@link #openStream()} when the stream returned by that method does not benefit from
additional buffering (for example, a {@code ByteArrayOutputStream}). This method returns a new,
independent stream each time it is called.

<p>The caller is responsible for ensuring that the returned stream is closed.

@throws IOException if an I/O error occurs while opening the stream
@since 15.0 (in 14.0 with return type {@link BufferedOutputStream})