protected virtual IHandler BuildSubHandler(Type closedImplementationType, Type requestedType)
{
// TODO: we should probably match the requested type to existing services and close them over its generic arguments
var newModel = Kernel.ComponentModelBuilder.BuildModel(
ComponentModel.ComponentName,
AdaptServices(closedImplementationType, requestedType),
closedImplementationType,
GetExtendedProperties());
CloneParentProperties(newModel);
// Create the handler and add to type2SubHandler before we add to the kernel.
// Adding to the kernel could satisfy other dependencies and cause this method
// to be called again which would result in extra instances being created.
return Kernel.CreateHandler(newModel);
}