public static IRegistrationBuilder <TLimit, TConcreteReflectionActivatorData, TRegistrationStyle> CustomEnableClassInterceptors <TLimit, TConcreteReflectionActivatorData, TRegistrationStyle>(this IRegistrationBuilder <TLimit, TConcreteReflectionActivatorData, TRegistrationStyle> registration) where TConcreteReflectionActivatorData : ConcreteReflectionActivatorData
        {
            if (registration == null)
            {
                throw new ArgumentNullException(nameof(registration));
            }

            // Create a new proxy generator per call...
            var proxyGenerator = new ProxyGenerator();

            registration.ActivatorData.ImplementationType = (Type)proxyGenerator.ProxyBuilder.CreateClassProxyType((Type)registration.ActivatorData.ImplementationType, new Type[0], ProxyGenerationOptions.Default);
            registration.OnPreparing((Action <PreparingEventArgs>)(e => e.Parameters = (IEnumerable <Parameter>)Enumerable.ToArray <Parameter>(Enumerable.Concat <Parameter>((IEnumerable <Parameter>) new Parameter[1]
            {
                (Parameter) new PositionalParameter(0, (object)Enumerable.ToArray <IInterceptor>(Enumerable.Cast <IInterceptor>((IEnumerable)Enumerable.Select <Service, object>(GetInterceptorServices(e.Component, (Type)registration.ActivatorData.ImplementationType), (Func <Service, object>)(s => ResolutionExtensions.ResolveService(e.Context, s))))))
            }, (IEnumerable <Parameter>)e.Parameters))));
            return(registration);
        }