src/Model.js
function Model(name, referenceModel, modellingElements, transitive) {
  /** @memberOf Model
   * @member {string} name - The name of the model
   */
  this.__name = name
  _.set(this, ['__jsmf__','conformsTo'], Model)
  _.set(this, ['__jsmf__','uuid'], generateId())
  /** @memberof Model
   * @member {Model} referenceModel - The referenceModel (an empty object if undefined)
   */
  this.referenceModel = referenceModel || {}
  /** @memberof Model
   * @member {Object} modellingElements - The objects of the model, classified by their class name
   */
  this.modellingElements = {}
  /** @memberOf Model
   * @member {Object} classes - classes and enums of the model, classified by their name
   */
  this.classes = {}
  if (modellingElements !== undefined) {
    modellingElements = _.isArray(modellingElements) ?  modellingElements : [modellingElements]
    if (transitive) {
      modellingElements = crawlElements(modellingElements)
    }
    _.forEach(modellingElements, e => this.addModellingElement(e))
  }
}
function Model(name, referenceModel, modellingElements, transitive) {
  /** @memberOf Model
   * @member {string} name - The name of the model
   */
  this.__name = name
  _.set(this, ['__jsmf__','conformsTo'], Model)
  _.set(this, ['__jsmf__','uuid'], generateId())
  /** @memberof Model
   * @member {Model} referenceModel - The referenceModel (an empty object if undefined)
   */
  this.referenceModel = referenceModel || {}
  /** @memberof Model
   * @member {Object} modellingElements - The objects of the model, classified by their class name
   */
  this.modellingElements = {}
  /** @memberOf Model
   * @member {Object} classes - classes and enums of the model, classified by their name
   */
  this.classes = {}
  if (modellingElements !== undefined) {
    modellingElements = _.isArray(modellingElements) ?  modellingElements : [modellingElements]
    if (transitive) {
      modellingElements = crawlElements(modellingElements)
    }
    _.forEach(modellingElements, e => this.addModellingElement(e))
  }
}
function Model ( name , referenceModel , modellingElements , transitive ) { /** @memberOf Model
   * @member {string} name - The name of the model
   */ this . __name = name _ . set ( this , [ '__jsmf__' , 'conformsTo' ] , Model ) _ . set ( this , [ '__jsmf__' , 'uuid' ] , generateId ( ) ) /** @memberof Model
   * @member {Model} referenceModel - The referenceModel (an empty object if undefined)
   */ this . referenceModel = referenceModel || { } /** @memberof Model
   * @member {Object} modellingElements - The objects of the model, classified by their class name
   */ this . modellingElements = { } /** @memberOf Model
   * @member {Object} classes - classes and enums of the model, classified by their name
   */ this . classes = { } if ( modellingElements !== undefined ) { modellingElements = _ . isArray ( modellingElements ) ? modellingElements : [ modellingElements ] if ( transitive ) { modellingElements = crawlElements ( modellingElements ) } _ . forEach ( modellingElements , e => this . addModellingElement ( e ) ) } }
A Model is basically a set of elements
@constructor
@param {string} name - The model name
@param {Model} referenceModel - The reference model (indicative and used for conformance)
@param {Class~ClassInstance[]} modellingElements - Either an element or an array of elements that
should be included in the model
@param {boolean} transitive - If false, only the elements in modellingElements will be in the model,
otherwise all theelements that can be reach from modellingElements
references are included in the model
A Model is basically a set of elements