private RabbitMQProducerDeclaration GetDeclaration <TPayload>(Action <IRabbitMQProducerBuilder <TPayload> > overrides)
        {
            var producerDeclaration = options.ProducerDeclarations.TryGetValue(typeof(TPayload), out var declaration)
                                ? declaration
                                : throw new RabbitMQMissingDeclarationException(typeof(TPayload));

            if (overrides != null)
            {
                producerDeclaration = RabbitMQProducerDeclaration.FromDeclaration(producerDeclaration);
                overrides(new RabbitMQProducerBuilder <TPayload>(producerDeclaration));
            }

            return(producerDeclaration);
        }