private Type[] ScanForInterceptorTypes()
        {
            var types = AllInstantiableTypesInScannedAssemblies
                        .Where(t => typeof(IInboundInterceptor).IsAssignableFrom(t) || typeof(IOutboundInterceptor).IsAssignableFrom(t))
                        .ToArray();

            return(types);
        }
        private Type[] ScanForMulticastResponseTypes()
        {
            var types = AllInstantiableTypesInScannedAssemblies
                        .Where(t => typeof(IBusMulticastResponse).IsAssignableFrom(t))
                        .ToArray();

            return(types);
        }
        private Type[] ScanForMulticastRequestTypes()
        {
            var types = AllInstantiableTypesInScannedAssemblies
                        .Where(t => t.IsClosedTypeOf(typeof(IBusMulticastRequest <,>)))
                        .ToArray();

            return(types);
        }
        private Type[] ScanForRequestHandlerTypes()
        {
            var types = AllInstantiableTypesInScannedAssemblies
                        .Where(t => t.IsClosedTypeOf(typeof(IHandleRequest <,>)))
                        .ToArray();

            return(types);
        }
        private Type[] ScanForEventTypes()
        {
            var types = AllInstantiableTypesInScannedAssemblies
                        .Where(t => typeof(IBusEvent).IsAssignableFrom(t))
                        .ToArray();

            return(types);
        }
        private Type[] ScanForCompetingEventHandlerTypes()
        {
            var types = AllInstantiableTypesInScannedAssemblies
                        .Where(t => t.IsClosedTypeOf(typeof(IHandleCompetingEvent <>)))
                        .ToArray();

            return(types);
        }