public void Configure(IComponentRegistry container, SerializationContractRegistry types)
        {
            _scanner.Constrain(_hint);
            var mappings = _scanner.Build(_hint.ConsumerTypeDefinition);


            var messageTypes = mappings
                               .Select(m => m.Message)
                               .Where(m => !m.IsAbstract)
                               .Distinct();

            types.AddRange(messageTypes);

            var builder = new MessageDirectoryBuilder(mappings);

            var provider = _contextManager.GetContextProvider();

            var consumers = mappings
                            .Select(x => x.Consumer)
                            .Where(x => !x.IsAbstract)
                            .Distinct()
                            .ToArray();

            var cb = new ContainerBuilder();

            foreach (var consumer in consumers)
            {
                cb.RegisterType(consumer);
            }
            cb.RegisterInstance(provider).AsSelf();
            cb.Update(container);
            container.Register <IMessageDispatchStrategy>(c =>
            {
                var scope = c.Resolve <ILifetimeScope>();
                var tx    = Factory(TransactionScopeOption.RequiresNew);
                return(new AutofacDispatchStrategy(scope, tx, _hint.Lookup, _contextManager));
            });

            container.Register(builder);
        }