RefCountDisposable
Represents a disposable resource that only disposes its underlying disposable resource when all  GetDisposabledependent disposable objects have been disposed.
            
                
Gets a value that indicates whether the object is disposed.
            
Initializes a new instance of the  RefCountDisposable class with the specified disposable.
            
Initializes a new instance of the  RefCountDisposable class with the specified disposable.
            
Disposes the underlying disposable only when all dependent disposables have been disposed.
            
Returns a dependent disposable that when disposed decreases the refcount on the underlying disposable.