class LocationTravelRequest{

	destination:LocationIdentifier;
	from:LocationIdentifier;
	tags:string[];
	time:number;
	vars:{[key:string]:any}={};

	constructor(destination:LocationIdentifier=undefined,from:LocationIdentifier=undefined,time:number=undefined,tags=[]){
		this.destination = destination;
		this.from = from;
		this.time = time;
		this.tags = tags;
	}

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

			return this;
		}

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

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

setup.LocationTravelRequest = LocationTravelRequest;