protected BaseSingleSourceLogic(SourceShape <TMessage> shape, Attributes attributes,
                                        Func <BaseSingleSourceLogic <K, V, TMessage>, IMessageBuilder <K, V, TMessage> > messageBuilderFactory)
            : base(shape)
        {
            _shape          = shape;
            _messageBuilder = messageBuilderFactory(this);
            Control         = new BaseSingleSourceControl(_shape, Complete, SetKeepGoing, GetAsyncCallback, PerformShutdown);

            var supervisionStrategy = attributes.GetAttribute <ActorAttributes.SupervisionStrategy>(null);

            _decider = supervisionStrategy != null ? supervisionStrategy.Decider : Deciders.ResumingDecider;

            SetHandler(shape.Outlet, onPull: Pump, onDownstreamFinish: PerformShutdown);
        }
        protected BaseSingleSourceLogic(
            SourceShape <TMessage> shape,
            Attributes attributes,
            Func <BaseSingleSourceLogic <K, V, TMessage>, IMessageBuilder <K, V, TMessage> > messageBuilderFactory,
            bool autoCreateTopics)
            : base(shape)
        {
            _shape          = shape;
            _messageBuilder = messageBuilderFactory(this);
            Control         = new BaseSingleSourceControl(_shape, Complete, SetKeepGoing, GetAsyncCallback, PerformShutdown);

            // TODO: Move this to the GraphStage.InitialAttribute when it is fixed (https://github.com/akkadotnet/akka.net/issues/5388)
            var supervisionStrategy = attributes.GetAttribute <ActorAttributes.SupervisionStrategy>();

            Decider = supervisionStrategy.Decider;

            SetHandler(shape.Outlet, onPull: Pump, onDownstreamFinish: PerformShutdown);
        }