pub trait OutputStreamImpl: ObjectImpl + OutputStreamImplExt + Send {
    fn write(
        &self,
        stream: &Self::Type,
        buffer: &[u8],
        cancellable: Option<&Cancellable>
    ) -> Result<usize, Error> { ... }
    fn close(
        &self,
        stream: &Self::Type,
        cancellable: Option<&Cancellable>
    ) -> Result<(), Error> { ... }
    fn flush(
        &self,
        stream: &Self::Type,
        cancellable: Option<&Cancellable>
    ) -> Result<(), Error> { ... }
    fn splice(
        &self,
        stream: &Self::Type,
        input_stream: &InputStream,
        flags: OutputStreamSpliceFlags,
        cancellable: Option<&Cancellable>
    ) -> Result<usize, Error> { ... }
}