public void AddEvent <TEntity>(string bucket, Id streamId, Id[] parents, Messages.IEvent @event) where TEntity : IEntity
        {
            var key       = $"{typeof(TEntity).FullName}.{bucket}.{streamId}.{parents.BuildParentsString()}";
            var fullEvent =
                new FullEvent
            {
                Descriptor = new EventDescriptor(),
                Event      = @event,
                EventId    = Guid.NewGuid()
            };

            if (!_events.ContainsKey(key))
            {
                _events[key] = new[] { fullEvent }
            }
            ;
            else
            {
                _events[key] = _events[key].Concat(new[] { fullEvent }).ToArray();
            }
        }
        public DidNotRaisedException(Messages.IEvent expectedEvent, Messages.IEvent[] raisedEvents)
        {
            var raised = raisedEvents.Any() ? raisedEvents.Select(x => JsonConvert.SerializeObject(x)).Aggregate((cur, next) => $"{cur}\n{next}") : "No raised events";

            _message = $"Expected raise: {JsonConvert.SerializeObject(expectedEvent)} did not occur.\nRaised Events:\n{raised}";
        }