public void OnComponentCreated(ContractIdentity identity, IComponentFactory componentFactory, Type componentTargetType,
                                       ref object componentInstance, object originalInstance)
        {
            var match = false;

            if (IncludedContracts != null)
            {
                match |= IncludedContracts.Match(identity.Type);
            }

            if (!match)
            {
                return;
            }

            if (!identity.Type.IsInterface)
            {
                throw new ArgumentException(
                          "Can not create wrapper for non-interface type contracts. " +
                          "The transaction composition listener should be configured such that " +
                          "the non-interface type contracts do not match the wrapping criteria.");
            }


            var interceptor = new TracingInterceptor(identity.Type.Name);
            var callHanlder = new InterceptingAdapterEmittedTypeHanlder(componentInstance, interceptor);

            componentInstance = ClassEmitter.EmitInterfaceInstance(callHanlder, identity.Type);
        }