private IEnumerable <MismatchedLifestyleDependency> GetMismatch(MismatchedLifestyleDependency parent, ComponentModel component,
                                                                        IDictionary <ComponentModel, IHandler> model2Handler)
        {
            if (parent.Checked(component))
            {
                yield break;
            }

            var handler = model2Handler[component];
            var item    = new MismatchedLifestyleDependency(handler, parent);

            if (item.Mismatched())
            {
                yield return(item);
            }
            else
            {
                foreach (ComponentModel dependent in handler.ComponentModel.Dependents)
                {
                    foreach (var mismatch in GetMismatch(item, dependent, model2Handler))
                    {
                        yield return(mismatch);
                    }
                }
            }
        }
		private IEnumerable<MismatchedLifestyleDependency> GetMismatch(MismatchedLifestyleDependency parent, ComponentModel component,
		                                                               IDictionary<ComponentModel, IHandler> model2Handler)
		{
			if (parent.Checked(component))
			{
				yield break;
			}

			var handler = model2Handler[component];
			var item = new MismatchedLifestyleDependency(handler, parent);
			if (item.Mismatched())
			{
				yield return item;
			}
			else
			{
				foreach (ComponentModel dependent in handler.ComponentModel.Dependents)
				{
					foreach (var mismatch in GetMismatch(item, dependent, model2Handler))
					{
						yield return mismatch;
					}
				}
			}
		}
		private IEnumerable<MismatchedLifestyleDependency> GetMismatches(IHandler handler, IDictionary<ComponentModel, IHandler> model2Handler)
		{
			if (IsSingleton(handler) == false)
			{
				yield break;
			}
			var root = new MismatchedLifestyleDependency(handler);
			foreach (ComponentModel dependent in handler.ComponentModel.Dependents)
			{
				foreach (var mismatch in GetMismatch(root, dependent, model2Handler))
				{
					yield return mismatch;
				}
			}
		}
        private IEnumerable <MismatchedLifestyleDependency> GetMismatches(IHandler handler, IDictionary <ComponentModel, IHandler> model2Handler)
        {
            if (IsSingleton(handler) == false)
            {
                yield break;
            }
            var root = new MismatchedLifestyleDependency(handler);

            foreach (ComponentModel dependent in handler.ComponentModel.Dependents)
            {
                foreach (var mismatch in GetMismatch(root, dependent, model2Handler))
                {
                    yield return(mismatch);
                }
            }
        }
            public MismatchedLifestyleDependency(IHandler handler, MismatchedLifestyleDependency parent = null)
            {
                Handler = handler;
                Parent  = parent;

                if (parent == null)
                {
                    checkedComponents = new HashSet <ComponentModel> {
                        handler.ComponentModel
                    };
                }
                else
                {
                    checkedComponents = new HashSet <ComponentModel> {
                        parent.Handler.ComponentModel
                    };
                }
            }
			public MismatchedLifestyleDependency(IHandler handler, MismatchedLifestyleDependency parent = null)
			{
				Handler = handler;
				Parent = parent;

				if (parent == null)
				{
					checkedComponents = new HashSet<ComponentModel> { handler.ComponentModel };
				}
				else
				{
					checkedComponents = new HashSet<ComponentModel> { parent.Handler.ComponentModel };
				}
			}