pub trait Stream: AsyncRead + AsyncWrite + Unpin + Send + 'static { // Provided method fn downcast<S: Stream + 'static>(self) -> Result<S, Self> where Self: Sized + 'static { ... } }