function CompositeEntityCollection(collections, owner) {
  this._owner = owner;
  this._composite = new EntityCollection(this);
  this._suspendCount = 0;
  this._collections = defined(collections) ? collections.slice() : [];
  this._collectionsCopy = [];
  this._id = createGuid();
  this._eventHash = {};
  recomposite(this);
  this._shouldRecomposite = false;
}
Non-destructively composites multiple {@link EntityCollection} instances into a single collection.
If a Entity with the same ID exists in multiple collections, it is non-destructively
merged into a single new entity instance.  If an entity has the same property in multiple
collections, the property of the Entity in the last collection of the list it
belongs to is used.  CompositeEntityCollection can be used almost anywhere that a
EntityCollection is used.

@alias CompositeEntityCollection
@constructor

@param {EntityCollection[]} [collections] The initial list of EntityCollection instances to merge.
@param {DataSource|CompositeEntityCollection} [owner] The data source (or composite entity collection) which created this collection.