public void Save(ISagaEx saga, Guid commitId, Action <IDictionary <string, object> > updateHeaders)
        {
            if (saga == null)
            {
                throw new ArgumentNullException("saga");
            }

            Dictionary <string, object> headers = PrepareHeaders(saga, updateHeaders);
            IEventStream stream = PrepareStream(saga, headers);

            Persist(stream, commitId);
            ReleaseAggregateId(saga.Id);
            saga.ClearUncommittedEvents();
            saga.ClearUndispatchedMessages();
        }