| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride StartIterations (LibOpt_Task task, LibOpt_TaskContextIterator context) as stream[JSON] | 
| { | 
|   Description: 'Loop until a stop criterion is met or the `LibOpt_StopCriterion.CanStartIteration` returns that we cannot add another iteration.' | 
|   TextBody: | 
|   [* | 
|     stopcriterion := this.StopCriterion(); | 
|      | 
|     result := stream[JSON]::Success(); | 
|     while( this.CanStartIteration( context ) | 
|            and stopcriterion.CanStartIteration( task ) | 
|            and not stopcriterion.ShouldStop( task ) ) | 
|     { | 
|       result := result->Merge( this.StartIteration( task, context ) ); | 
|     } | 
|      | 
|     return result; | 
|   *] | 
| } |