public DemultiplexingPipelineStep(string name, IPipelineStep <TOutput> input, IPipelineStep <TSelect> select) { Name = name ?? throw new ArgumentNullException(nameof(name)); Input = input ?? throw new ArgumentNullException(nameof(input)); Select = select ?? throw new ArgumentNullException(nameof(select)); Signaler = Input.Signaler; Signaler.RegisterMultiple(this, Input, Select); Outputs = new Dictionary <TSelect, IPipelineStep <TOutput> >(); }