public IInstrumentationAttacher CreateBinder(object createdObject, object[] constructorArgs, ConfigurationReflectionCache reflectionCache)
        {
            InstrumentationListenerAttribute listenerAttribute = GetInstrumentationListenerAttribute(createdObject, reflectionCache);

            if (listenerAttribute == null)
            {
                return(new NoBindingInstrumentationAttacher());
            }

            Type listenerType       = listenerAttribute.ListenerType;
            Type listenerBinderType = listenerAttribute.ListenerBinderType;

            if (listenerBinderType == null)
            {
                return(new ReflectionInstrumentationAttacher(createdObject, listenerType, constructorArgs));
            }
            return(new ExplicitInstrumentationAttacher(createdObject, listenerType, constructorArgs, listenerBinderType));
        }