SerialDisposable
Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource.
            
                using System.Runtime.CompilerServices;
namespace System.Reactive.Disposables
{
    public sealed class SerialDisposable : ICancelable, IDisposable
    {
        private SerialDisposableValue _current;
        public bool IsDisposed => _current.IsDisposed;
        [System.Runtime.CompilerServices.Nullable(2)]
        public IDisposable Disposable {
            [System.Runtime.CompilerServices.NullableContext(2)]
            get {
                return _current.Disposable;
            }
            [System.Runtime.CompilerServices.NullableContext(2)]
            set {
                _current.Disposable = value;
            }
        }
        public void Dispose()
        {
            _current.Dispose();
        }
    }
}