private CommittedEventStream Read(IEnumerable<Commit> commits, bool applySnapshot) { var streamId = Guid.Empty; Commit last = null; long sequence = 0; long revision = 0; object snapshot = null; ICollection<object> events = new LinkedList<object>(); foreach (var commit in commits) { streamId = commit.StreamId; last = commit; sequence = commit.CommitSequence; revision = commit.StreamRevision; snapshot = commit.Snapshot ?? snapshot; events.AddEventsOrClearOnSnapshot(commit, applySnapshot); this.commitIdentifiers.Add(commit.CommitId); } if (last != null) this.streamHeads[streamId] = last; snapshot = applySnapshot ? snapshot : null; return new CommittedEventStream(streamId, revision, sequence, events.ToArray(), snapshot); }