private void TestConstructor()
        {
            object payload = new object();
            long   seqNo   = 0;
            string id      = Guid.NewGuid().ToString();
            GenericDomainEventMessage <object>    message1    = new GenericDomainEventMessage <object>("type", id, seqNo, payload);
            IImmutableDictionary <string, object> metaDataMap = ImmutableDictionary <string, object> .Empty.Add("key", "value");

            MetaData metaData = MetaData.From(metaDataMap);
            GenericDomainEventMessage <object> message2 =
                new GenericDomainEventMessage <object>("type", id, seqNo, payload, metaData);
            GenericDomainEventMessage <object> message3 =
                new GenericDomainEventMessage <object>("type", id, seqNo, payload, metaDataMap);

            Assert.Same(id, message1.GetAggregateIdentifier());
            Assert.Equal(seqNo, message1.GetSequenceNumber());
            Assert.Same(MetaData.EmptyInstance, message1.GetMetaData());
            Assert.Equal(typeof(object), message1.GetPayload() !.GetType());
            Assert.Equal(typeof(object), message1.GetPayloadType());

            Assert.Same(id, message2.GetAggregateIdentifier());
            Assert.Equal(seqNo, message2.GetSequenceNumber());
            Assert.Same(metaData, message2.GetMetaData());
            Assert.Equal(typeof(object), message2.GetPayload() !.GetType());
            Assert.Equal(typeof(object), message2.GetPayloadType());

            Assert.Same(id, message3.GetAggregateIdentifier());
            Assert.Equal(seqNo, message3.GetSequenceNumber());
            Assert.NotSame(metaDataMap, message3.GetMetaData());
            Assert.Equal(metaDataMap, message3.GetMetaData());
            Assert.Equal(typeof(object), message3.GetPayload() !.GetType());
            Assert.Equal(typeof(object), message3.GetPayloadType());

            Assert.NotEqual(message1.GetIdentifier(), message2.GetIdentifier());
            Assert.NotEqual(message1.GetIdentifier(), message3.GetIdentifier());
            Assert.NotEqual(message2.GetIdentifier(), message3.GetIdentifier());
        }