private static FeedbackDelayGenerator resolveDelayGenerator(
        final Context ctx,
        final UdpChannel channel,
        final boolean isMulticastSemantics)
    {
        if (isMulticastSemantics)
        {
            return ctx.multicastFeedbackDelayGenerator();
        }

        final Long nakDelayNs = channel.nakDelayNs();
        if (null != nakDelayNs)
        {
            final long retryDelayNs = nakDelayNs * ctx.nakUnicastRetryDelayRatio();
            return new StaticDelayGenerator(nakDelayNs, retryDelayNs);
        }
        else
        {
            return ctx.unicastFeedbackDelayGenerator();
        }
    }
@Test
    void shouldInferFeedbackGeneratorBasedOnReceiverGroupFlag()
    {
        final MediaDriver.Context context = new MediaDriver.Context()
            .multicastFeedbackDelayGenerator(new OptimalMulticastDelayGenerator(10, 10))
            .unicastFeedbackDelayGenerator(new StaticDelayGenerator(10));
        final UdpChannel udpChannel = UdpChannel.parse("aeron:udp?endpoint=192.168.0.1:24326");

        final FeedbackDelayGenerator feedbackDelayGenerator = DriverConductor.resolveDelayGenerator(
            context, udpChannel, InferableBoolean.INFER, SetupFlyweight.GROUP_FLAG);

        assertSame(context.multicastFeedbackDelayGenerator(), feedbackDelayGenerator);
    }