| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetDecendentsInOptimizerSubset ( | 
|   OptimizerPuzzle optimizerPuzzle, | 
|   Boolean isParentIncluded | 
| ) as owning Units | 
| { | 
|   TextBody: | 
|   [* | 
|     units := construct( Units ); | 
|      | 
|     traverse( this, Child, unit ) | 
|     { | 
|       subSet := optimizerPuzzle.GetSubsetUnit( unit ); | 
|       localIsIncluded := ( not isnull( subSet ) and subSet.IsIncluded() ) // Include, when unit have subset is included | 
|                          or ( isnull( subSet ) and isParentIncluded )  // Include when no subset and parent is included | 
|      | 
|       if( localIsIncluded ) | 
|       { | 
|         units.Add( unit ); | 
|       } | 
|       | 
|       local := unit.GetDecendentsInOptimizerSubset( optimizerPuzzle, | 
|                                                     localIsIncluded );  | 
|        | 
|       units := units.Union( local );                                     | 
|     } | 
|      | 
|     return &units; | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |