code: function Aggregate (meta, modelInitValues) {
    Definition.call(this, meta);
  
    meta = meta || {};
  
    this.version = meta.version || 0;
  
    this.defaultCommandPayload = meta.defaultCommandPayload || '';
    this.defaultEventPayload = meta.defaultEventPayload || '';
    this.defaultPreConditionPayload = meta.defaultPreConditionPayload || '';
    this.defaultPreLoadConditionPayload = meta.defaultPreLoadConditionPayload || '';
    this.skipHistory = meta.skipHistory || false;
    this.applyLastEvent = meta.applyLastEvent || false;
    this.disablePersistence = meta.disablePersistence || false;
  
    this.commands = [];
    this.events = [];
    this.businessRules = [];
    this.commandHandlers = [];
  
    this.loadingEventTransformers = [];
    this.committingEventTransformers = [];
  
    this.snapshotConversions = {};
    this.snapshotIgnores = {};
  
    this.loadingSnapshotTransformers = {};
    this.committingSnapshotTransformers = {};
  
    this.idGenerator(function () {
      return uuid().toString();
    });
  
    this.modelInitValues = modelInitValues || {};
  
    this.defaultCommandHandler = new DefaultCommandHandler(this);
    this.defaultCommandHandler.useAggregate(this);
  
    this.snapshotConversionRegistrations = [];
  
    this.loadingSnapshotTransformerRegistrations = [];
    this.committingSnapshotTransformerRegistrations = [];
  }
docs: Aggregate constructor
  @param {Object} meta            Meta infos like: { name: 'name', version: 1 }
  @param {Object} modelInitValues Initialization values for model like: { emails: [] } [optional]
  @constructor