<PackageReference Include="System.Reactive" Version="6.0.0-preview.16" />
    
	
	
		
		
		
	 
	
	
        
                
                ActivePlan
                
                
                
                
using System.
Collections.
Generic;
using System.
Runtime.
CompilerServices;
namespace System.
Reactive.
Joins
{
    [
System.
Runtime.
CompilerServices.
NullableContext(
1)]
    [
System.
Runtime.
CompilerServices.
Nullable(
0)]
    
internal abstract class ActivePlan
    {
        
private readonly Dictionary<
IJoinObserver, 
IJoinObserver> 
_joinObservers = 
new Dictionary<
IJoinObserver, 
IJoinObserver>();
        
protected readonly Action _onCompleted;
        
internal abstract void Match();
        
protected ActivePlan(
Action onCompleted)
        {
            
_onCompleted = 
onCompleted;
        }
        
protected void AddJoinObserver(
IJoinObserver joinObserver)
        {
            
if (!
_joinObservers.
ContainsKey(
joinObserver))
                
_joinObservers.
Add(
joinObserver, 
joinObserver);
        }
        
protected void Dequeue()
        {
            
foreach (
IJoinObserver value in _joinObservers.
Values) {
                
value.
Dequeue();
            }
        }
    }
}