private static AmbiguousLifestylesDiagnosticResult CreateDiagnosticResult(
            InstanceProducer diagnosedProducer,
            InstanceProducer[] conflictingProducers)
        {
            Type serviceType = diagnosedProducer.ServiceType;
            Type implementationType = diagnosedProducer.Registration.ImplementationType;

            var lifestyles =
                from producer in conflictingProducers.Concat(new[] { diagnosedProducer })
                let lifestyle = producer.Registration.Lifestyle
                group lifestyle by lifestyle.GetType() into g
                select g.First();

            string description = BuildDescription(diagnosedProducer, conflictingProducers);

            return new AmbiguousLifestylesDiagnosticResult(serviceType, description,
                lifestyles.ToArray(), implementationType, diagnosedProducer, conflictingProducers);
        }