return new TrainModel(newEngine, newWagons, this.getCargoBundleNumber(), creationDate, state, scheduleIterator, trainMotionModel, priority, isBlocked, stateLastChanged, ticksInService, costTraversedSinceLoadingWater);
TrainModel tm = new TrainModel(newEngine, newWagons, this.getCargoBundleNumber(), creationDate, state, scheduleIterator, trainMotionModel, priority, isBlocked, stateLastChanged, ticksInService, costTraversedSinceLoadingWater); tm.trainMotionModel = tm.trainMotionModel.setTrainPathLength(tm.getLength()); return tm;
    public TrainModel getNewInstance(int newEngine, int[] newWagons) {        return new TrainModel(newEngine, newWagons, this.getCargoBundleNumber(),	    creationDate, state, scheduleIterator, trainMotionModel,	    priority, isBlocked, stateLastChanged, ticksInService,	    costTraversedSinceLoadingWater);    }