// TODO: THIS USE OF REFLECTION IS FRAGILE AND MUST BE RECONSIDERED private static IModel?ExtractModelFromInternalConsumer(IConsumer consumer, ILogger?logger) { IModel?model = null; var consumerType = consumer.GetType(); var internalConsumersField = consumerType.GetField("internalConsumers", BindingFlags.Instance | BindingFlags.NonPublic); if (internalConsumersField != null) { var internalConsumers = (ConcurrentSet <IInternalConsumer>)internalConsumersField.GetValue(consumer); // ReSharper disable once AssignNullToNotNullAttribute // ReSharper disable once ConstantConditionalAccessQualifier model = ((InternalConsumer)internalConsumers.FirstOrDefault())?.Model; } var internalConsumerField = consumerType.GetField("internalConsumer", BindingFlags.Instance | BindingFlags.NonPublic); if (internalConsumerField != null) { var internalConsumer = (IInternalConsumer)internalConsumerField.GetValue(consumer); // ReSharper disable once ConstantConditionalAccessQualifier model = ((InternalConsumer)internalConsumer)?.Model; } if (model == null) { logger?.LogCritical( $"Could not extract a non null {nameof(IModel)} " + $"from the provided {nameof(IConsumer)}."); } return(model); }