public override void Handle(Deposit command)
        {
            Contract.Assume(command != null);
            Contract.Assume(command.Amount > decimal.Zero);

            var accountAggregate = new AccountAggregateRoot();

            var events = accountAggregate.Credit(command.Amount, new CanCreditAccount(CanCreditAccount));

            Contract.Assume(Contract.ForAll(events, o => o != null));

            _domainEventDispatcher.PublishAll(events);
        }