All of the finalizers in the library are no-ops, but their existence means that
when Dispose (and thus GC.SuppressFinalize) is not called, the objects' lifetimes
are extended unnecessarily while they are waiting to be finalized.
Co-authored-by: Wojciech Nagórski <wojtpl2@gmail.com>