The Stream.Dispose(bool) docs say:
This method is called by the public Dispose method and the Finalize method. [..] Finalize invokes Dispose with disposing set to false.
However, neither Stream nor its super class MarshalByRefObject have a destructor, and the destructor of Object is empty.
So how can Stream.Dispose(bool) get called by the Finalize method?