public FibonacciDistributedSequencesManager(int count, Func <FibonacciState, IFibonacciSequence> sequencerCreator, FibonacciState firstState, FibonacciState secondState)
 {
     Count            = count;
     SequencerCreator = sequencerCreator;
     FirstState       = firstState;
     SecondState      = secondState;
 }
        private TransformBlock <UpdateMessage, UpdateMessage> CreateUpdateSequenceBlock(FibonacciState state)
        {
            var sequencer = SequencerCreator(state);

            return(new TransformBlock <UpdateMessage, UpdateMessage>(um =>
            {
                Thread.Sleep(500); //For demonstration
                return new UpdateMessage {
                    SequenceId = um.SequenceId, State = sequencer.Next(um.State)
                };
            }));
        }