KernelDebuggerProxy
                    class KernelDebuggerProxy
                
                using Castle.MicroKernel;
using Castle.Windsor.Diagnostics.DebuggerViews;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace Castle.Windsor.Diagnostics
{
    [DebuggerDisplay("")]
    internal class KernelDebuggerProxy
    {
        private readonly IEnumerable<IContainerDebuggerExtension> extensions;
        [DebuggerDisplay("")]
        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
        public DebuggerViewItem[] Extensions {
            get {
                return extensions.SelectMany((IContainerDebuggerExtension e) => e.Attach()).ToArray();
            }
        }
        public KernelDebuggerProxy(IWindsorContainer container)
            : this(container.Kernel)
        {
        }
        public KernelDebuggerProxy(IKernel kernel)
        {
            if (kernel == null)
                throw new ArgumentNullException("kernel");
            IEnumerable<IContainerDebuggerExtension> enumerable = kernel.GetSubSystem(SubSystemConstants.DiagnosticsKey) as IContainerDebuggerExtensionHost;
            extensions = (enumerable ?? new IContainerDebuggerExtension[0]);
        }
    }
}