class LocationIdentifier{

    _passage='';            get passage(){return this._passage;}
    _passageArguments=[];   get passageArguments(){return this._passageArguments;}

    constructor(passageId:string='',passageArguments:any|Array<any> = []){
        this._passage=passageId;
		if(Array.isArray(passageArguments))
        	this._passageArguments=passageArguments;
		else
			this._passageArguments=[passageArguments];
    }

    get tags():string[]{
        return tags(this._passage);
    }

    _init(data){
		Object.keys(data).forEach(function (pn) {
			this[pn] = clone(data[pn]);
		}, this);

		return this;
	}

	clone = function () {
		return (new setup.LocationIdentifier())._init(this);
	};

	toJSON = function () {
		var ownData = {};
		Object.keys(this).forEach(function (pn) {
			if(typeof this[pn] !== "function")
				ownData[pn] = clone(this[pn]);
		}, this);
		return JSON.reviveWrapper('(new setup.LocationIdentifier())._init($ReviveData$)', ownData);
	};
}

setup.LocationIdentifier = LocationIdentifier;