Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride DoExecute (Algorithm algorithm, LibOpt_Task task) as stream[JSON] 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    result := null( stream[JSON] ); 
 | 
     
 | 
    if( this.InOneTransaction() ) 
 | 
    { 
 | 
      program := algorithm.astype( MathematicalProgram ); 
 | 
       
 | 
      // Register type descriptors if the program hasn't been executed before. 
 | 
      if( this.AutoRegisterTypeDescriptors() ) 
 | 
      { 
 | 
        if( program.ExecutionCounter() = 0 ) 
 | 
        { 
 | 
          this.RegisterTypeDescriptors( program ); 
 | 
        } 
 | 
        program.GenerateNames(); 
 | 
      } 
 | 
      LibOpt_SuboptimizerMP::ExecuteMP( program ); 
 | 
      result := this.DoHandleResultCall( program, task ); 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      result := this->DoExecuteReactive( algorithm, task ); 
 | 
    } 
 | 
     
 | 
    return result; 
 | 
  *] 
 | 
} 
 |