| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride ShouldStop ( | 
|   LibOpt_Task task | 
| ) as Boolean | 
| { | 
|   Description: | 
|   [* | 
|     Whether the `LibOpt_Iterator` should stop. | 
|     When `true` is returned, all ongoing iterations spawned by the `LibOpt_Iterator` will be aborted. | 
|   *] | 
|   TextBody: | 
|   [* | 
|     context         := task.TaskContext().astype( LibOpt_TaskContextIterator ); | 
|     iterations      := context.CurrentIteration() >= this.MaxIterations() | 
|     local_duration  := DateTime::ActualTime() - context.TimeStamp() >= this.MaxDurationLocal(); | 
|     global_duration := DateTime::ActualTime() - task.Run().StartedOn() >= this.MaxDurationGlobal(); | 
|      | 
|     return iterations or local_duration or global_duration; | 
|   *] | 
| } |