public ProjectionEvent(Guid id, Event @event, DateTime dateRegistered, long sequenceNumber)
 {
     DateRegistered = dateRegistered;
     Event = @event;
     Id = id;
     SequenceNumber = sequenceNumber;
 }
		public EventStream(Guid id, int version, IEnumerable<Event> events, Event snapshot)
		{
			Id = id;
			Version = version;
			_initialVersion = version;
			Snapshot = snapshot;

			if (events != null)
			{
				_events.AddRange(events);
			}
		}
	    public IEnumerable<Event> EventsAfter(Event @event)
		{
			return _events.Where(e => e.Version > @event.Version);
		}
		public void AddSnapshot(object data)
		{
			Guard.AgainstNull(data, "data");

			Snapshot = new Event(Version, data.GetType().AssemblyQualifiedName, data);
		}