docs: function EventSourcedAggregate(){
  	/**
  	 * Aggregate ID, used when loading (rehydrating) the object from an Event Sink.
  	 * @private
  	 * @type string
  	 */
  	this._aggregateID = undefined;
  	/**
  	 * Pending event sequence number, used for event ordering and optimistic concurrency collision detection.
  	 * @private
  	 * @type number
  	 */
  	this._nextSequenceNumber = 1;
  	/**
  	 * Array of the events to be saved to the Event Sink within a single commit when commit() is called.
  	 * @private
  	 * @type module:esdf/core/Event~Event[]
  	 */
  	this._stagedEvents = undefined;
  	/**
  	 * The assigned Event Sink that events will be committed to. This variable should be assigned from the outside using the assignEventSink method.
  	 * @private
  	 * @type Object
  	 */
  	this._eventSink = undefined;
  	/**
  	 * Aggregate's proper type name - used to check if commits belong here when loading. Validation makes it impossible to apply another class's commits.
  	 * @private
  	 * @type string
  	 */
  	this._aggregateType = undefined;
  	/**
  	 * Snapshotting strategy used while committing changes. The default is to save a snapshot every commit (if a snapshotter is at all available).
  	 * @private
  	 * @type function
  	 */
  	this._snapshotStrategy = SnapshotStrategy.every(1);
  	/**
  	 * Whether to ignore missing event handlers when applying events (both online and during rehydration).
  	 * For example, if "Done" is the event name and there is no onDone method defined within the aggregate, an error would normally be thrown.
  	 * This safety mechanism is in place to catch programmer errors early.
  	 * Setting this flag to true will prevent error generation in such cases (when you need events without any handlers). It should be done in the aggregate's constructor or prototype, preferably.
  	 * @private
  	 * @type boolean
  	 */
  	this._allowMissingEventHandlers = false;
  	/**
  	 * The object whose emit(operationOutcomeName, operationDetails) method shall be called when I/O operations finish or fail.
  	 * Supported operation names are ['CommitSinkSuccess', 'CommitSinkFailure', 'SnapshotSaveSuccess' 'SnapshotSaveFailure'].
  	 * For CommitSinkSuccess and CommitSinkFailure, the following fields in the operationDetails object are defined:
  	 *   commitObject: contains the complete commit object which was due to be saved
  	 * Additionally, CommitSinkFailure defines the following fields:
  	 *   failureReason: an error (from a lower layer - not necessarily an Error object) explaining why the sink operation failed
  	 * For SnapshotSaveSuccess and SnapshotSaveFailure, the following fields in the operationDetails object are defined:
  	 *   snapshotObject: contains the complete snapshot object which was due to be saved
  	 * Additionally, SnapshotSaveFailure defines the following fields:
  	 *   failureReason: an error (from a lower layer - not necessarily an Error object) explaining why the save operation failed
  	 * @private
  	 * @type {external:EventEmitter}
  	 */
  	this._IOObserver = null;
  }