public void Teststtt()
        {
            var messageFactory  = new MessageFactory(typeof(TransitionEnvelopeSerializer_Event), typeof(TransitionEnvelopeSerializer_Child_Event));
            var identityFactory = new IdentityFactory(typeof(TransitionEnvelopeSerializer_Id));

            var serializer = new ProtobufSerializer();

            serializer.RegisterMessages(messageFactory.MessageDefinitions);
            serializer.RegisterIdentities(identityFactory.IdentityDefinitions);

            var header = new TransitionEnvelopeDataHeader()
            {
                MessageTags = new[]
                {
                    Guid.Parse("74467730-33c0-418a-bd83-963258ce6fa9"),
                    Guid.Parse("f55856e9-66b3-4fd4-9f6a-de9c2606a692")
                }
            };

            var message1 = new TransitionEnvelopeSerializer_Event()
            {
                Rate  = 0.7,
                Title = "Muahaha!"
            };

            var memory = new MemoryStream();

            serializer.Model.SerializeWithLengthPrefix(memory, header, header.GetType(), PrefixStyle.Base128, 0);
            serializer.Model.SerializeWithLengthPrefix(memory, message1, message1.GetType(), PrefixStyle.Fixed32, 0);

            memory.Position = 0;

            var back         = serializer.Model.DeserializeWithLengthPrefix(memory, null, header.GetType(), PrefixStyle.Base128, 0, null);
            var backMessage1 = serializer.Model.DeserializeWithLengthPrefix(memory, null, typeof(TransitionEnvelopeSerializer_Event), PrefixStyle.Fixed32, 0, null);
        }
        public void mongo_rongo()
        {
            var message1 = new TransitionEnvelopeSerializer_Event()
            {
                Rate  = 0.7,
                Title = "Muahaha!"
            };


            var transition = new Transition(null, DateTime.Now, new List <IEvent>()
            {
                message1, message1, message1, message1, message1, message1, message1, message1
            }, null);

            var watch = Stopwatch.StartNew();

            for (int i = 0; i < _iterations; i++)
            {
                var bson = Serialize(transition);
                //var text = bson.ToJson();

                var back = Deserialize(bson, typeof(Transition));
            }
            watch.Stop();
            Console.WriteLine("Bson. In {0} iterations takes {1} ms", _iterations, watch.ElapsedMilliseconds);
        }
        public void tra_ta_ta()
        {
            var messageFactory  = new MessageFactory(typeof(TransitionEnvelopeSerializer_Event), typeof(TransitionEnvelopeSerializer_Child_Event));
            var identityFactory = new IdentityFactory(typeof(TransitionEnvelopeSerializer_Id));

            var serializer = new ProtobufSerializer();

            serializer.RegisterMessages(messageFactory.MessageDefinitions);
            serializer.RegisterIdentities(identityFactory.IdentityDefinitions);

            var message1 = new TransitionEnvelopeSerializer_Event()
            {
                Rate  = 0.7,
                Title = "Muahaha!"
            };


            var transition = new Transition(null, DateTime.Now, new List <IEvent>()
            {
                message1, message1, message1, message1, message1, message1, message1, message1
            }, null);

            var watch = Stopwatch.StartNew();

            for (int i = 0; i < _iterations; i++)
            {
                var envelopeSerializer = new TransitionEnvelopeSerializer();
                var envelope           = envelopeSerializer.Serialize(messageFactory, serializer, transition);

                var doc = Serialize(envelope);

                var envelopeBack = (TransitionEnvelope)Deserialize(doc, typeof(TransitionEnvelope));
                var back         = envelopeSerializer.Deserialize(messageFactory, serializer, envelopeBack);
            }
            watch.Stop();
            Console.WriteLine("ProtoBuf. In {0} iterations takes {1} ms", _iterations, watch.ElapsedMilliseconds);

//            Assert.That(back.Events.Count, Is.EqualTo(transition.Events.Count));
        }