public static IInterfaceToProxy CreateProxy(
            ListLogger log,
            IAsyncInterceptor interceptor,
            out ClassWithInterfaceToProxy target)
        {
            var localTarget = new ClassWithInterfaceToProxy(log);

            target = localTarget;
            return(CreateProxy(() => localTarget, interceptor));
        }
        public static IInterfaceToProxy CreateProxy(List <string> log, IAsyncInterceptor interceptor)
        {
            // Arrange
            var classWithInterfaceToProxy = new ClassWithInterfaceToProxy(log);

            var proxy = Generator.CreateInterfaceProxyWithTargetInterface <IInterfaceToProxy>(
                classWithInterfaceToProxy,
                interceptor);

            return(proxy);
        }
        public static (IInterfaceToProxy, Logger) Factory(Timing beforeProceedTiming = Timing.Sync, Timing afterProceedTiming = Timing.Sync)
        {
            var logger      = new Logger();
            var target      = new ClassWithInterfaceToProxy(logger);
            var interceptor = new TestInterceptorAsync(logger, new Delays(beforeProceedTiming, afterProceedTiming));

            var proxyGenerator = new ProxyGenerator();
            var proxy          = proxyGenerator.CreateInterfaceProxyWithTarget <IInterfaceToProxy>(target, interceptor);

            return(proxy, logger);
        }