protected void ConfigureChannelFactory(ChannelFactory channelFactory, IWcfClientModel clientModel, IWcfBurden burden)
		{
			var extensions = new ChannelFactoryExtensions(channelFactory, Kernel)
				.Install(burden, new WcfChannelExtensions());

			var endpointExtensions = new ServiceEndpointExtensions(channelFactory.Endpoint, true, Kernel)
				.Install(burden, new WcfEndpointExtensions(WcfExtensionScope.Clients));

			if (clientModel != null)
			{
				extensions.Install(clientModel.Extensions, burden);
				endpointExtensions.Install(clientModel.Extensions, burden);
				endpointExtensions.Install(clientModel.Endpoint.Extensions, burden);
			}

			burden.Add(new ChannelFactoryHolder(channelFactory));
		}
 internal static void AddBehaviors <T>(IKernel kernel, WcfExtensionScope scope,
                                       KeyedByTypeCollection <T> behaviors, IWcfBurden burden,
                                       Predicate <T> predicate)
 {
     foreach (var handler in FindExtensions <T>(kernel, scope))
     {
         T behavior = (T)handler.Resolve(CreationContext.Empty);
         if (predicate == null || predicate(behavior))
         {
             if (behaviors != null)
             {
                 behaviors.Add(behavior);
             }
             if (burden != null)
             {
                 burden.Add(behavior);
             }
         }
     }
 }
		protected override object GetExtensionInstance(IKernel kernel, IWcfBurden burden)
		{
			burden.Add(Instance);
			return Instance;
		}
		protected override object GetExtensionInstance(IKernel kernel, IWcfBurden burden)
		{
			object extension = kernel.Resolve(ServiceType);
			burden.Add(extension);
			return extension;
		}
		protected override object GetExtensionInstance(IKernel kernel, IWcfBurden burden)
		{
			object extension = kernel.Resolve(Key, WcfUtils.EmptyArguments);
			burden.Add(extension);
			return extension;
		}
		protected override object GetExtensionInstance(IKernel kernel, IWcfBurden burden)
		{
			object extension = kernel[key];
			burden.Add(extension);
			return extension;
		}
		private object GetInstance(IKernel kernel, IWcfBurden burden)
		{
			if (instance == null)
			{
				instance = ResolveExtension(kernel);
				burden.Add(instance);
			}
			return instance;
		}