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

			var handler = model2Handler[component];
			var item = new MismatchedLifestyleDependencyViewBuilder(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;
					}
				}
			}
		}
		public MismatchedLifestyleDependencyViewBuilder(IHandler handler, MismatchedLifestyleDependencyViewBuilder parent = null)
		{
			this.handler = handler;
			this.parent = parent;
			if(parent == null)
			{
				ultimateRootComponent = handler.ComponentModel;
			}
			else
			{
				ultimateRootComponent = parent.ultimateRootComponent;
			}
		}
		public MismatchedLifestyleDependencyViewBuilder(IHandler handler, MismatchedLifestyleDependencyViewBuilder parent = null)
		{
			this.handler = handler;
			this.parent = parent;
			if(parent == null)
			{
				checkedComponents = new HashSet<ComponentModel> { handler.ComponentModel };
			}
			else
			{
				checkedComponents = new HashSet<ComponentModel> { parent.Handler.ComponentModel };
			}
		}
 public MismatchedLifestyleDependencyViewBuilder(IHandler handler, MismatchedLifestyleDependencyViewBuilder parent = null)
 {
     this.handler = handler;
     this.parent  = parent;
     if (parent == null)
     {
         checkedComponents = new HashSet <ComponentModel> {
             handler.ComponentModel
         };
     }
     else
     {
         checkedComponents = new HashSet <ComponentModel> {
             parent.Handler.ComponentModel
         };
     }
 }
		public MismatchedLifestyleDependencyViewBuilder(IHandler handler, MismatchedLifestyleDependencyViewBuilder parent = null)
		{
			this.handler = handler;
			this.parent = parent;
		}
		private IEnumerable<DebuggerViewItem> GetMismatches(Dictionary<ComponentModel, IHandler> model2Handler, IHandler handler)
		{
			if (IsSingleton(handler) == false)
			{
				yield break;
			}
			var root = new MismatchedLifestyleDependencyViewBuilder(handler);
			foreach (ComponentModel dependent in handler.ComponentModel.Dependents)
			{
				foreach (var mismatch in GetMismatch(root, dependent, model2Handler))
				{
					yield return mismatch.ViewItem;
				}
			}
		}