protected override void When()
        {
            TestCorrelationId = Guid.NewGuid();
            var msg = new TestDomainEvent(TestCorrelationId, Guid.Empty);

            TestMessageId = msg.MsgId;
            Bus.Publish(msg);

            var msg2 = new ParentTestDomainEvent(TestCorrelationId, TestMessageId);

            ParentMsgId = msg2.MsgId;
            Bus.Publish(msg2);
            Assert.Equal(BusMessages.Count, 2);

            var msg3 = new ChildTestDomainEvent(TestCorrelationId, ParentMsgId);

            ChildMsgId = msg3.MsgId;
            Bus.Publish(msg3);
            Assert.Equal(BusMessages.Count, 3);

            var msg4 = new GrandChildTestDomainEvent(TestCorrelationId, ChildMsgId);

            Bus.Publish(msg4);
            Assert.Equal(BusMessages.Count, 4);
            //used in multiple_message_handle_invocations_are_correct test
        }
 public void Handle(GrandChildTestDomainEvent message)
 {
     Interlocked.Increment(ref GrandChildTestDomainEventHandleCount);
 }