public Route clone() { Route r = new Route(this.nw, this.id, this.period); r.emptyDistance = this.emptyDistance; r.loadedDistance = this.loadedDistance; r.waitTime = this.waitTime; // This clone copies the TA as well not just reference. int taskSetSize = taskSet.size(); for (int i = 0; i < taskSetSize; i++) { r.taskSet.add(taskSet.get(i).clone()); } return r; }