GroupedObservable<TKey, TElement>
                    sealed class GroupedObservable<TKey, TElement> : ObservableBase<TElement>, IGroupedObservable<TKey, TElement>, IObservable<TElement>
                
                using System.Reactive.Disposables;
using System.Reactive.Subjects;
using System.Runtime.CompilerServices;
namespace System.Reactive.Linq
{
    [System.Runtime.CompilerServices.NullableContext(1)]
    [System.Runtime.CompilerServices.Nullable(new byte[] {
        0,
        1
    })]
    internal sealed class GroupedObservable<[System.Runtime.CompilerServices.Nullable(2)] TKey, [System.Runtime.CompilerServices.Nullable(2)] TElement> : ObservableBase<TElement>, IGroupedObservable<TKey, TElement>, IObservable<TElement>
    {
        private readonly IObservable<TElement> _subject;
        [System.Runtime.CompilerServices.Nullable(2)]
        private readonly RefCountDisposable _refCount;
        public TKey Key { get; }
        public GroupedObservable(TKey key, ISubject<TElement> subject, RefCountDisposable refCount)
        {
            Key = key;
            _subject = subject;
            _refCount = refCount;
        }
        public GroupedObservable(TKey key, ISubject<TElement> subject)
        {
            Key = key;
            _subject = subject;
        }
        protected override IDisposable SubscribeCore(IObserver<TElement> observer)
        {
            if (_refCount != null) {
                IDisposable disposable = _refCount.GetDisposable();
                IDisposable disposable2 = _subject.Subscribe(observer);
                return StableCompositeDisposable.Create(disposable, disposable2);
            }
            return _subject.Subscribe(observer);
        }
    }
}