Collection constructor

@constructor
@implements {$$Collection}
@param {$$CollectionType} obj
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) : [];
	}
}