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; 
 | 
  *] 
 | 
} 
 |