code: function Collection(obj) {
  	this._init();
  
  	if ((0, _types.isString)(obj)) {
  		this.data = obj.split('');
  	} else if ((0, _types.isNumber)(obj)) {
  		let i = isFinite(obj) ? Math.abs(obj) : false,
  		    done = false,
  		    value;
  
  		this.p.use = 'for of';
  		this.data = {
  			next: () => {
  				done = i === false ? done : done || !i--;
  				return { done, value };
  			},
  
  			throw(err) {
  				throw err;
  			},
  
  			return: v => {
  				done = true;
  				value = v;
  			}
  		};
  	} else {
  		this.data = (0, _types.isObjectInstance)(obj) ? (0, _gcc.any)(obj) : [];
  	}
  }
docs: Collection constructor
  
  @constructor
  @implements {$$Collection}
  @param {$$CollectionType} obj