code: function createCollection(proto, objectOnly){
      function Collection(a){
        if (!this || this.constructor !== Collection) return new Collection(a);
        this._keys = [];
        this._values = [];
        this._itp = []; // iteration pointers
        this.objectOnly = objectOnly;
  
        //parse initial iterable argument passed
        if (a) init.call(this, a);
      }
  
      //define size for non object-only collections
      if (!objectOnly) {
        defineProperty(proto, 'size', {
          get: sharedSize
        });
      }
  
      //set prototype
      proto.constructor = Collection;
      Collection.prototype = proto;
  
      return Collection;
    }
docs: ES6 collection constructor
  @return {Function} a collection class